Tercer Parcial Flashcards
Transacción
conjunto de operaciones que forman una única unidad lógica de trabajo.
La meta de las transacciones es asegurar que todos los objetos gestionados por un servidor permanecen en un estado consistente cuando dichos objetos son accedidos por múltiples transacciones y en presencia de caídas del servidor.
Propiedades ACID
Para asegurar la integridad en las transacciones se deben respetar las propiedades ACID:
Atomicidad (Atomicity): garantiza que todas las transacciones se ejecutan adecuadamente en la BBDD o ninguna de ellas. El sistema puede alcanzar un estado inconsistente, pero hay que asegurar que esto no sea visible, se sustituye esto por un estado consistente.
Consistencia (Consistency)/integridad: La ejecución aislada de la transacción (es decir, sin otra transacción que se ejecute concurrentemente) conserva la consistencia de la base de datos. Cada vez que se consulte la BBDD esta consistente, ya sea antes o despues de la transaccion, no se debe romper integridad llevando de un estado a otro.
Aislamiento (Isolation): en la BBDD se pueden ejecutar varias transacciones en paralelo pero el resultado debe ser el mismo que si se hubiesen ejecutado secuencialmente, una transacción no puede afectar o interferir con otras.
Durabilidad (Durability): se garantiza durabilidad asegurando:
Las modificaciones realizadas por la transacción se guardan en disco antes de que finalice la transacción,y esa información es suficiente para permitir a la BBDD reconstruir estas modificaciones.
BASE
BASICALLY AVAILABLE: implica la disponibilidad de los datos como prioridad.
SOFT STATE: la consistencia de datos se delega a una gestión externa al motor de bbdd.
EVENTUAL CONSISTENCY: eventualmente termina en consistente, asume inconsistencias temporales.
CAP
sistema computacional distribuido no puede ofrecer simultaneamente estas 3 garantias
Consistencia (Consistency): todos los nodos ven los mismos datos al mismo tiempo.
Disponibilidad (Availability): garantiza que cada petición recibe una respuesta acerca de si tuvo éxito o no.
Tolerancia a la partición (Partition): el sistema continúa funcionando a pesar de la pérdida de mensajes.
Dif ACID Y BASE
ACID prioriza consistencia y robustez a costa del rendimiento y operatividad a medida que el volumen de datos aumentan. En contraposición el principio BASE fomenta el rendimiento, la disponibilidad y la escalabilidad.
Estados de las transacciones
Activa: Inicio de la transacción.
Parcialmente Comprometida: Todas las operaciones han sido ejecutadas, pero la transacción aún puede ser revertida. Los datos están en la memoria principal y son vulnerables a fallos.
Comprometida: La información se ha registrado completamente en la base de datos.
Fallida: La transacción se interrumpe y revierte todos los cambios para restablecer la consistencia.
Abortada: La base de datos retorna al estado original. Se reinicia en caso de un error de hardware/software o se cancela si el error es lógico.
Recuperación ante fallos
La idea de la recuperación ante fallos es prepararse para la posibilidad de que una transacción no se complete por un fallo y evitar así que la base de datos quede en un estado inconsistente.
Estructura y tipos de almacenamiento
Volátil
Memoria principal/caché.
Acceso rápido.
No sobrevive a las caídas de sistema.
No volátil
Memoria secundaria (discos)
Acceso más lento
Sobrevive a las caídas de sistema.
Estable
Se implementa a través de soluciones como los sistemas RAID o los Sistemas de Copia de Seguridad Remota.
La información “nunca” se pierde.
Clasificación de los fallos
Fallo en la transacción: puede deberse a un error lógico o a un error del sistema:
A. Error lógico: a causa de alguna condición interna.
B. Error de sistema: el sistema esta fallando por eso la transaccion falla, pero se puede ejecutar mas tarde.
C. El fallo en una transacción no debería afectar al resto de transacciones que se estén ejecutando.
Fallo del sistema: mal funcionamiento del hardware o software de BBDD o el SO causa perdida del contenido de la memoria volatil y aborta procesamiento de transaccion. Estos afectan a todas las transacciones en curso.
Fallo de disco: un bloque del disco pierde contenido por una colision de la cabeza lectora o fallo en una operacion de transferencia de datos, implica perdida de datos almacenados y es la mas grave, para recuperarse se utilizan backups. No ocurre en discos tolerantes a fallos (tipo de almacenamiento estable).
Formas de trabajar con el registro historico:
Actualización diferida
Guarda los cambios en un registro histórico antes de aplicarlos a la base de datos.
Este registro sirve como respaldo en caso de fallos del sistema, permitiendo revertir los cambios.
Sin embargo, puede surgir un problema con la memoria si hay muchas actualizaciones pendientes, ya que los datos no se escriben en la base de datos hasta que se completa la transacción.
Registro histórico
Los registros históricos son una secuencia de entradas que guardan los cambios en una base de datos.
Cada entrada almacena valores de datos y se guarda en un lugar seguro, como un archivo.
Estos registros registran eventos como el inicio y compromiso de transacciones, la cancelación de transacciones y las actualizaciones específicas, creando un historial detallado de las acciones en la base de datos.
Formas de trabajar con el registro historico:
Actualización inmediata
Escritura en Tiempo Real: Posibilidad de realizar cambios en la base de datos mientras la transacción aún está activa.
Procedimiento de Recuperación:
a. Deshacer transacciones no comprometidas utilizando los valores iniciales.
b. Deshacer y luego rehacer transacciones comprometidas.
Escritura Directa en Disco: Los datos se guardan en disco durante la transacción, antes de cada operación. Se almacenan los cambios no confirmados, y los valores iniciales son cruciales para restaurar el estado original.
Desafío: La recuperación puede ser más lenta al tener que deshacer/rehacer cambios confirmados y deshacer cambios no confirmados.
Punto de revisión (checkpoint)
Los puntos de revisión son marcadores en el registro histórico que mejoran la eficiencia de la recuperación. Cuando necesitamos recuperar datos, examinamos el registro histórico desde el último punto de revisión. Este examen se realiza retrocediendo en el tiempo.
Mientras estamos revisando el historial para recuperar datos, evitamos que nuevas transacciones hagan cambios, asegurando la consistencia de la información y facilitando el proceso de recuperación.
Registro histórico, base de datos y almacenamiento: gestión de la memoria intermedia
En el registro histórico, los datos se guardan primero en un área temporal llamada “buffer de registro histórico” en la memoria principal antes de ser escritos en el almacenamiento permanente. Se acumulan y se escriben todos juntos en una sola operación. Esto se hace en el mismo orden en que estaban en el buffer. Además, solo se almacenan los registros que tienen cambios en la información, no todos, lo que hace que el proceso sea más eficiente.
Esquema de recuperación ARIES
ARIES es un método avanzado para recuperar datos rápidamente en bases de datos. Utiliza un esquema eficiente que incluye seguir páginas no guardadas en disco y realiza tres pasos: análisis para identificar cambios y transacciones en curso durante un fallo, redo para reconstruir transacciones confirmadas, y undo para revertir cambios desde el fallo hasta el inicio de la recuperación.
Si se pierde la informacion de la memoria no volatil la tecnica de recuperacion es backup de BBDD. Existen 3 tipos de back up:
-
Completo (Full Backup):
- Incluye toda la base de datos y estructuras.
- Sirve como base para otros backups.
- Almacena información redundante.
-
Diferencial:
- Respalda datos modificados desde el último backup completo.
- Requiere un backup completo previo.
- Guarda las diferencias desde el último backup completo.
-
Incremental:
- Respalda datos modificados desde el último respaldo.
- Requiere todos los backups desde el último completo para recuperar.
- Menos tiempo de ejecución, pero más tiempo y complejidad para recuperar en caso de pérdida de un respaldo intermedio.
Concurrencia. Def, ventajas y desventajas
dos o más transacciones ejecutándose en paralelo, sin importar si están tocando los mismos datos.
Ventajas: Mayor productividad.
Mejor utilización de los recursos.
Tiempo de espera reducido.
Desventajas: Mayor probabilidad de inconsistencias.
Esquemas de control de concurrencia
solucionan conflicto cuando las transacciones acceden a los mismos datos generando inconsistencia.
Planificaciones
secuencias de ejecución de las transacciones. Representan el orden cronológico, pueden ser:
a. Secuenciales: las transacciones se ejecutan una después de otra. Al finalizar BBDD se encuentra consistente.
b. No secuenciales: ejecucion de una mientras otra esta en curso, BBDD queda consistente solo si el resultado de ejecucion concurrente es el mismo que si hubiese sido secuencial. ( se dice que son planificaciones equivalentes).
Conflictos de la concurrencia
-
Actualización Pérdida:
- Dos transacciones modifican el mismo dato.
- Una actualiza sin leer el valor antiguo, perdiendo la modificación de la otra.
-
Dependencia No Confirmada (Lectura Sucia):
- Una transacción lee o actualiza un dato que otra transacción aún no ha confirmado.
- Puede resultar en operaciones basadas en información incorrecta.
-
Análisis Inconsistente:
- Una transacción basa sus acciones en datos actualizados por otra transacción ya confirmada.
- Puede llevar a resultados incorrectos.
-
Lectura No Repetible o Difusa:
- Una transacción lee un dato, luego lo vuelve a leer y descubre que ha sido modificado por otra transacción.
- Se obtienen dos valores distintos para el mismo dato.
-
Lectura Fantasma:
- Una transacción consulta datos y recibe una tupla adicional que fue insertada después de la primera consulta.
Gestor de control de concurrencia
tarea del SGDB asegurar que toda planificacion termine con estado consistente
Secuencialidad
Secuencialidad en bases de datos significa que, aunque muchas cosas sucedan al mismo tiempo, el resultado final debería ser como si hubieran ocurrido una detrás de la otra.
Hay dos aspectos clave para lograr esto:
Secuencialidad en Cuanto a Conflictos:
Asegura que, aunque varias acciones suceden al mismo tiempo, no causen problemas entre sí. Es como si cada acción esperara su turno para evitar interferencias.
Secuencialidad en Cuanto a Vistas:
Asegura que, aunque varias acciones están ocurriendo simultáneamente, la forma en que cada acción ve y cambia la información es como si hubieran sucedido en un orden específico.
Recuperabilidad
Planificacion recuperable
Planificación Recuperable:
- Permite deshacer cualquier transacción en la planificación.
Formas de Planificación Recuperable:
a. Con Retroceso en Cascada:
- Una transacción puede hacer retroceder a otras, especialmente cuando leen datos que causaron fallos antes.
b. Sin Retroceso en Cascada:
- Asegura que, si una transacción lee datos escritos por otra, la transacción original debe haber confirmado antes de que la segunda pueda leer. Evita problemas de retroceso en cascada.
Consejo:
Es mejor evitar el retroceso en cascada, ya que puede ser costoso deshacer transacciones.
Esquema de control de concurrencia
sistema que controla la interaccion entre transacciones concurrentes para garantizar aislamiento
Protocolos basados en el bloqueo
Protocolos Basados en el Bloqueo:
- Objetivo: Asegurar que una transacción acceda a un elemento a la vez para mantener la secuencialidad.
- Componente Clave: Gestor de control de concurrencia, que autoriza o niega los bloqueos.
-
Tipos de Bloqueos:
a. Compartidos: Permiten solo lectura de datos.
b. Exclusivos: Permiten lectura y escritura de datos. -
Bloqueo Compatible:
- Dos transacciones pueden pedir bloqueos COMPARTIDOS, permitiendo la lectura pero no la escritura al mismo tiempo.
- Si una transacción necesita escribir, espera a que se libere el bloqueo.
-
Solicitud de Bloqueo:
- Si una transacción solicita un bloqueo y está disponible, se le concede sin conflicto.
-
Inanición (Livelock/Starvation):
- Fenómeno donde una transacción es forzada a hacer ROLLBACK debido a conflictos recurrentes de bloqueo.
Protocolo de bloqueo de 2 fases
Protocolo de Bloqueo de 2 Fases:
- Propósito: Evitar problemas de concurrencia.
-
Etapas:
-
Fase de Crecimiento:
- La transacción solicita todos los bloqueos que necesita.
- Cuando obtiene el último bloqueo, alcanza el “Punto de Bloqueo”.
-
Punto de Bloqueo:
- La transacción tiene todos los bloqueos y puede realizar sus operaciones.
-
Fase de Decrecimiento:
- La transacción libera los bloqueos después de completar sus operaciones.
-
Fase de Crecimiento:
-
Secuencialidad en Cuanto a Conflictos:
- Garantiza que las operaciones sigan un orden coherente.
-
Problema No Resuelto:
- No aborda la posibilidad de retroceso en cascada.
-
Tipos:
a. Estricto:- La transacción mantiene bloqueos exclusivos hasta su compromiso. Nadie más puede leer o escribir el dato.
b. Riguroso: - La transacción mantiene TODOS sus bloqueos hasta su compromiso.
- La transacción mantiene bloqueos exclusivos hasta su compromiso. Nadie más puede leer o escribir el dato.
En resumen, el Protocolo de Bloqueo de 2 Fases divide las solicitudes y liberaciones de bloqueos en dos etapas para mantener un orden secuencial, pero no resuelve el problema de retroceso en cascada. Los tipos estricto y riguroso determinan cuánto tiempo una transacción retiene sus bloqueos.
Protocolo de bloqueo de 2 fases con intención de bloqueo
Protocolo de Bloqueo de 2 Fases con Intención de Bloqueo:
este protocolo simplifica la gestión de bloqueos dividiendo la base de datos y permitiendo bloquear partes específicas según lo que necesitas hacer. Ayuda a que las operaciones se realicen de manera ordenada.
Tipo de bloqueo Permite…
Exclusivo (X)
Leer y escribir el nodo o los nodos inferiores.
Compartido (C)
Leer los nodos inferiores.
Intencional compartido (IC)
Permite pedir bloqueo IC o C en un nodo inferior.
Intencional exclusivo (IX)
Permite pedir bloqueo IX o X en un nodo inferior.
Intencional exclusivo y compartido (IXC)
Es una combinación de bloqueo IX con bloqueo C, por lo que permite pedir bloqueos para leer varios nodos, pero escribir solamente en uno o algunos.
Esquemas multiversión (marcas temporales)
En los esquemas multiversión, cada modificación crea una nueva versión del dato en lugar de cambiar el original. Cuando lees, el sistema decide qué versión mostrarte, y los bloqueos evitan problemas al leer datos que están siendo modificados por otras transacciones.
Ordenación por marcas temporales multiversión
Ventajas y desventajas
En la ordenación por marcas temporales multiversión, cada transacción recibe una marca temporal antes de ejecutarse, determinando el orden de las operaciones.
Esto garantiza un orden lógico de las operaciones y permite lecturas sin bloqueos. A pesar de su beneficio en secuencialidad, tiene desventajas como la necesidad de accesos adicionales al disco para actualizar marcas temporales, la resolución de conflictos mediante retrocesos y la posibilidad de planificaciones no recuperables y retrocesos en cascada.