BIVT2 - Administración y seguridad en la BD Flashcards
¿Qué es una transacción?
- Unidad lógica de trabajo.
- Secuencia de operaciones en una BD mediante la cual un estado consistente de la BD se transforma en otro estado consistente, sin conservar por fuerza la consistencia en todos los estados intermedios.
Operaciones en SQL de una transacción
- COMMIT
- ROLLBACK
¿Qué es el COMMIT?
Indica que una transacción ha finalizado con éxito al SGBD
¿Qué es el ROLLBACK?
Indica al SGBD que debe recuperar su estado justo en el momento anterior a comenzar la transacción que no ha podido finalizar
¿Para qué sirven las propiedades ACID?
Para asegurar la integridad de los datos tras hacer el COMMIT
¿Cuáles son las propiedades ACID?
- Atomicity (Atomicidad).
- Consistency (Consistencia).
- Isolation (Aislamiento).
- Durability (Durabilidad).
¿Qué es la Atomicity (Atomicidad)?
Las acciones de una transacción se ejecutan todas o ninguna.
¿Qué es la Consistency (Consistencia)?
- La BD se encuentra en un estado consistente antes de la ejecución de la transacción y debe estar en un estado consistente cuando la transacción termine.
- Garantiza las reglas de integridad
¿Qué es la Isolation (Aislamiento)?
- La ejecución de una transacción no debe interferir en la ejecución de otras transacciones, la transacción debe ejecutarse como si estuviera aislada.
- El aislamiento se pone en acción mediante técnicas de bloqueo.
¿Qué es la Durability (Durabilidad)?
- Tras la finalización con éxito de una transacción, los cambios realizados en la BD permanecen, incluso si hay fallos en el sistema.
- Es persistente una transacción cuándo se consigue que se almacene en disco.
Estados de una transacción
- Activa.
- Parcialmente comprometida.
- Fallida.
- Abortada.
- Comprometida.
¿Cuándo una transacción está parcialmente comprometida?
Después de ejecutarse la última instrucción.
Problemas de concurrencia
- El problema de la modificación perdida.
- El problema de la dependencia no comprometida o lectura sucia.
- El problema del análisis inconsistente o lectura fantasma.
- Lectura no repetible
Problemas de concurrencia: El problema de la modificación perdida
La modificación realizada por la transacción X se pierde porque la transacción Y sobreescribe el resultado sobre el resultado anterior.
Problemas de concurrencia: El problema de la dependencia no comprometida o lectura sucia
Se producen cuando una transacción puede leer datos que están siendo escritos por otra transacción antes de que ésta realice el commit.
Problemas de concurrencia: El problema del análisis inconsistente o lectura fantasma.
Se producen cuando una transacción lanza una misma consulta 2 veces y obtiene distinto conjunto de resultados
Problemas de concurrencia: Lectura no repetible
Se produce cuando una transacción modifica datos que han sido leídos por otra.
¿Qué es el bloqueo?
Técnica que se utiliza para resolver problemas de concurrencia.
Tipos de bloqueo
- Bloqueos exclusivos
- Bloqueos compartidos
¿Qué es el bloqueo exclusivo?
- Previene que sea compartido el recurso asociado.
- Una transacción obtiene un bloqueo exclusivo cuando modifica los datos.
- La primera transacción que bloquea un recurso exclusivamente, es la única transacción que puede modificar el recurso hasta que el bloqueo exclusivo es liberado
¿Qué es el bloqueo compartido?
- Permite que sea compartido el recurso asociado, dependiendo de la operación en la que se encuentra involucrado.
- Varios usuarios que estén leyendo datos pueden compartir los datos, realizando bloqueos compartidos para prevenir el acceso concurrente de un escritor que necesita un bloqueo exclusivo.
- Varias transacciones pueden obtener bloqueos compartidos del mismo recurso.
¿Qué es el bloqueo mutuo?
Cuando 2 transacciones necesitan el objeto que el otro tiene bloqueado
¿Qué otros nombres recibe el bloqueo mutuo?
Deadlock, interbloqueo, traba mortal, abrazo mortal
¿Con qué algoritmo se puede evitar el bloqueo mutuo?
Con el algoritmo del banquero (Dijkstra).
¿Qué es el bloqueo livelock?
Similar a deadlock excepto que el estado de los 2 procesos involucrados constantemente cambia con respecto al otro
¿Qué son los niveles de aislamiento?
Mecanismos para tratar de minimizar el impacto de la concurrencia en las transacciones
Niveles de aislamiento de mayor a menor
- Serializable
- Lecturas repetibles (repeatable reads)
- Lecturas comprometidas (read committed)
- Lecturas no comprometidas (read uncommitted)
¿Qué aislamiento permiten las lecturas no comprometidas (read uncommitted)?
- Nivel menor de aislamiento (no hay ninguna garantía).
- Las transacciones no están aisladas unas de otras, por lo que se pueden producir
- Lectura sucia.
- Lectura no repetible
- Lectura fantasma
¿Qué aislamiento permiten las lecturas comprometidas (read committed)?
- Se garantiza que solo se lean datos escritos por transacciones que hayan hecho su commit.
- Se pueden producir
- Lectura no repetible
- Lectura fantasma
¿Qué aislamiento permiten las lecturas repetibles (repeatable reads)?
- Además de las garantías de Read Commited asegura que cada vez que leamos un registro nos devolverá siempre la misma información
- Se pueden producir
- Lectura fantasma
¿Qué aislamiento permite serializable?
- Máximo nivel de aislamiento
- Especifica que todas las transacciones ocurran de modo aislado, es decir, en serie (algoritmo FIFO).
- No existe interbloqueo.
- No hay concurrencia.
- Baja transaccionalidad.