Articulo de referencia

Calendario de transacciones de la base de datos

En el ámbito de las bases de datos y el procesamiento de transacciones (gestión de transacciones), un cronograma (o historial ) de un sistema es un modelo abstracto que describe...

En el ámbito de las bases de datos y el procesamiento de transacciones (gestión de transacciones), un cronograma (o historial ) de un sistema es un modelo abstracto que describe el orden de ejecución de un conjunto de transacciones que se ejecutan en el sistema. Generalmente, se trata de una lista de operaciones (acciones) ordenadas cronológicamente, realizadas por un conjunto de transacciones que se ejecutan simultáneamente en el sistema. Si el orden cronológico entre ciertas operaciones no está determinado por el sistema, se utiliza un orden parcial . Ejemplos de dichas operaciones son solicitar una operación de lectura, leer, escribir, abortar, confirmar , solicitar un bloqueo , bloquear, etc. A menudo, solo se incluye un subconjunto de los tipos de operaciones de transacción en un cronograma.

Las planificaciones son conceptos fundamentales en la teoría del control de concurrencia de bases de datos . En la práctica, la mayoría de los sistemas de bases de datos de propósito general emplean planificaciones serializables por conflictos y estrictamente recuperables.

Notación

Notación de cuadrícula:

Operaciones (también conocidas como acciones):

  • R(X): La transacción correspondiente "lee" el objeto X (es decir, recupera los datos almacenados en X). Esto se hace para que pueda modificar los datos (por ejemplo, X=X+4) durante una operación de "escritura" en lugar de simplemente sobrescribirlos. Cuando la planificación se representa como una lista en lugar de una cuadrícula, la acción se representa comoRi(incógnita){\displaystyle Ri(X)}dóndei{\displaystyle i}es un número que corresponde a una transacción específica.
  • W(X): La transacción correspondiente "escribe" en el objeto X (es decir, modifica los datos almacenados en X). Cuando la planificación se representa como una lista en lugar de una cuadrícula, la acción se representa comoWi(incógnita){\displaystyle Wi(X)}dóndei{\displaystyle i}es un número que corresponde a una transacción específica.
  • Com.: Esto representa una operación de "confirmación" en la que la transacción correspondiente ha completado con éxito sus acciones precedentes y ha hecho que todos sus cambios sean permanentes en la base de datos.

Alternativamente, un cronograma puede representarse con un grafo acíclico dirigido (o DAG) en el que existe un arco (es decir, una arista dirigida ) entre cada par ordenado de operaciones.

Ejemplo

El siguiente es un ejemplo de horario:

En este ejemplo, las columnas representan las diferentes transacciones en la planificación D. La planificación D consta de tres transacciones: T1, T2 y T3. Primero, T1 lee y escribe en el objeto X y luego realiza la confirmación. Luego, T2 lee y escribe en el objeto Y y realiza la confirmación; y finalmente, T3 lee y escribe en el objeto Z y realiza la confirmación.

El cronograma D anterior se puede representar como una lista de la siguiente manera:

D = R1(X) W1(X) Com1 R2(Y) W2(Y) Com2 R3(Z) W3(Z) Com3

Duración y orden de las acciones

Generalmente, para analizar el control de concurrencia en bases de datos, una operación se modela como atómica , es decir, que ocurre en un instante determinado, sin duración. Sin embargo, las operaciones reales ejecutadas siempre tienen una duración determinada.

Las operaciones de las transacciones en una planificación pueden intercalarse (es decir, las transacciones pueden ejecutarse simultáneamente ), pero el orden temporal entre las operaciones de cada transacción debe permanecer inalterado. La planificación está en orden parcial cuando las operaciones de las transacciones se intercalan (es decir, cuando la planificación es serializable por conflictos pero no serial). La planificación está en orden total cuando las operaciones de las transacciones no se intercalan (es decir, cuando la planificación es serial).

Tipos de horarios

Un cronograma completo es aquel que contiene una acción de cancelación (también conocida como reversión ) o confirmación para cada una de sus transacciones. La última acción de una transacción es confirmarla o cancelarla. Para mantener la atomicidad , una transacción debe deshacer todas sus acciones si se cancela.

De serie

Una planificación es serial si las transacciones ejecutadas no están intercaladas (es decir, una planificación serial es aquella en la que ninguna transacción comienza hasta que una transacción en ejecución haya finalizado).

El Anexo D es un ejemplo de un anexo serial:

Serializable

Una planificación es serializable si su resultado es equivalente al de una planificación serial.

En el esquema E, el orden en que se ejecutan las acciones de las transacciones no es el mismo que en D, pero al final, E da el mismo resultado que D.

La serializabilidad se utiliza para mantener la coherencia de los datos en un elemento de datos. Es el criterio principal para la corrección de la planificación de transacciones concurrentes y, por lo tanto, es compatible con todos los sistemas de bases de datos de propósito general. Las planificaciones que no son serializables pueden generar resultados erróneos, lo cual puede ser extremadamente perjudicial (por ejemplo, al gestionar dinero en bancos). [ 1 ] [ 2 ] [ 3 ]

Si una aplicación solicita un orden específico entre ciertas transacciones, este se aplica independientemente de los mecanismos de serialización subyacentes. Estos mecanismos suelen ser indiferentes a cualquier orden específico y generan un orden parcial impredecible que generalmente es compatible con múltiples órdenes seriales de dichas transacciones.

Acciones contradictorias

Se dice que dos acciones están en conflicto (par conflictivo) si y solo si se cumplen las tres condiciones siguientes:

  1. Las acciones pertenecen a diferentes transacciones.
  2. Al menos una de las acciones es una operación de escritura.
  3. Las acciones acceden al mismo objeto (leer o escribir). [ 4 ] [ 5 ]

De forma equivalente, dos acciones se consideran conflictivas si y solo si no son conmutativas . De forma equivalente, dos acciones se consideran conflictivas si y solo si se trata de un conflicto de lectura-escritura , escritura-lectura o escritura-escritura .

El siguiente conjunto de acciones es contradictorio:

  • R1(X), W2(X), W3(X) (3 pares conflictivos)

Si bien los siguientes conjuntos de acciones no son contradictorios:

  • R1(X), R2(X), R3(X)
  • R1(X), W2(Y), R3(X)

La reducción de conflictos, por ejemplo mediante la conmutatividad, mejora el rendimiento, ya que los conflictos son la causa fundamental de los retrasos y las interrupciones.

El conflicto se materializa si la operación conflictiva solicitada se ejecuta realmente: en muchos casos, una operación conflictiva solicitada/emitida por una transacción se retrasa e incluso nunca se ejecuta, normalmente debido a un bloqueo en el objeto de la operación, mantenido por otra transacción, o al escribir en el espacio de trabajo privado temporal de una transacción y materializarse, copiando a la propia base de datos, al confirmar la transacción; mientras una operación conflictiva solicitada/emitida no se ejecute en la propia base de datos, el conflicto no se materializa ; los conflictos no materializados no están representados por una arista en el grafo de precedencia.

Equivalencia de conflictos

Se dice que los anexos S1 y S2 son equivalentes en cuanto a conflictos si y solo si se cumplen las dos condiciones siguientes:

  1. Tanto el Anexo S1 como el Anexo S2 implican el mismo conjunto de transacciones, de modo que cada transacción tiene las mismas acciones en el mismo orden.
  2. Ambos cronogramas tienen el mismo conjunto de pares conflictivos (de modo que las acciones en cada par conflictivo están en el mismo orden). [ 6 ] Esto es equivalente a exigir que todas las operaciones conflictivas (es decir, las operaciones en cualquier par conflictivo) estén en el mismo orden en ambos cronogramas.

De forma equivalente, se dice que dos planificaciones son equivalentes en cuanto a conflictos si y solo si una puede transformarse en otra intercambiando pares de operaciones no conflictivas (sean adyacentes o no) manteniendo el orden de las acciones para cada transacción. [ 4 ]

De forma equivalente, se dice que dos planificaciones son equivalentes en cuanto a conflictos si y solo si una puede transformarse en otra intercambiando pares de operaciones adyacentes no conflictivas con transacciones diferentes. [ 7 ]

Serializable en caso de conflicto

Se dice que una planificación es serializable por conflictos cuando dicha planificación es equivalente en términos de conflictos a una o más planificaciones seriales.

De forma equivalente, una planificación es serializable por conflictos si y solo si su grafo de precedencia es acíclico cuando solo se consideran las transacciones confirmadas. Cabe señalar que si el grafo se define para incluir también las transacciones no confirmadas, entonces pueden ocurrir ciclos que involucren transacciones no confirmadas sin que se produzca una violación de la serializabilidad por conflictos.

El plan K es equivalente en términos de conflicto al plan serial <T1,T2>, pero no a <T2,T1>.

La serializabilidad de conflictos se puede garantizar reiniciando cualquier transacción dentro del ciclo en el grafo de precedencia, o implementando bloqueo de dos fases , ordenación por marca de tiempo o aislamiento de instantáneas serializables . [ 8 ]

Ver equivalencia

Se dice que dos tablas S1 y S2 son equivalentes en cuanto a su visualización cuando se cumplen las siguientes condiciones:

  1. Si la transacciónTi{\displaystyle T_{i}}En S1 se lee un valor inicial para el objeto X, por lo que se realiza la misma transacción.Ti{\displaystyle T_{i}}en S2.
  2. Si la transacciónTi{\displaystyle T_{i}}lee un valor (para un objeto X) escrito por la transacciónTj{\displaystyle T_{j}}En S1, debe hacerlo en S2.
  3. Si la transacciónTi{\displaystyle T_{i}}En S1 se realiza la escritura final para el objeto X, por lo que se realiza la misma transacción.Ti{\displaystyle T_{i}}en S2.

Además, dos cronogramas equivalentes en cuanto a la vista deben involucrar el mismo conjunto de transacciones, de manera que cada transacción tenga las mismas acciones en el mismo orden.

En el ejemplo que se muestra a continuación, los planes S1 y S2 son visualmente equivalentes, pero ni S1 ni S2 son visualmente equivalentes al plan S3.

Las condiciones para que S3 sea visualmente equivalente a S1 y S2 no se cumplieron en los superíndices correspondientes por las siguientes razones:

  1. No se cumplió la primera condición de equivalencia de vista porque T1 leyó el valor inicial de B en S1 y S2, pero T2 leyó el valor inicial de B en S3.
  2. No se cumplió la segunda condición de equivalencia de vista porque T2 leyó el valor escrito por T1 para B en S1 y S2, pero T1 leyó el valor escrito por T2 para B en S3.
  3. No se cumplió la tercera condición de equivalencia de vista porque T2 hizo la escritura final para B en S1 y S2, pero T1 hizo la escritura final para B en S3.

Para analizar rápidamente si dos planificaciones son equivalentes en cuanto a la vista, escriba ambas planificaciones como una lista donde el subíndice de cada acción represente la condición de equivalencia de vista que cumplen. Las planificaciones son equivalentes en cuanto a la vista si y solo si todas las acciones tienen el mismo subíndice (o carecen de él) en ambas planificaciones:

  • S1: R1(A) lectura inicial , W1(A), R1(B) lectura inicial , W1(B), Com1, R2(A) escrito por T1 , W2(A) escritura final , R2(B) escrito por T1 , W2(B) escritura final , Com2
  • S2: R1(A) lectura inicial , W1(A), R2(A) escrito por T1 , W2(A) escritura final , R1(B) lectura inicial , W1(B), Com1, R2(B) escrito por T1 , W2(B) escritura final , Com2
  • S3: R1(A) lectura inicial , W1(A), R2(A) escrito por T1 , W2(A) escritura final , R2(B) lectura inicial , W2(B), R1(B) escrito por T2 , W1(B) escritura final , Com1, Com2

Serializable por vista

Una planificación es serializable por vista si es equivalente a alguna planificación serial. Cabe destacar que, por definición, todas las planificaciones serializables por conflicto son serializables por vista.

Nótese que el ejemplo anterior (que es el mismo que el ejemplo en la discusión sobre serialización de conflictos) es serializable por vista y serializable por conflicto al mismo tiempo. Sin embargo, existen planificaciones serializables por vista que no son serializables por conflicto: aquellas planificaciones con una transacción que realiza una escritura ciega :

El ejemplo anterior no es serializable por conflicto, pero sí es serializable por vista, ya que tiene una planificación serial equivalente a la de una vista <T1,|  T2,|  T3>.

Dado que determinar si una planificación es serializable por vista es un problema NP-completo , la serializabilidad por vista tiene poco interés práctico.

Recuperable

En una planificación recuperable , las transacciones solo se confirman después de que todas las transacciones cuyos cambios leen se hayan confirmado. Una planificación se vuelve irrecuperable si una transacciónTi{\displaystyle T_{i}}lee y se basa en los cambios de otra transacción.Tj{\displaystyle T_{j}}, y luegoTi{\displaystyle T_{i}}confirmaciones yTj{\displaystyle T_{j}}abortos.

Estos planes de ejecución son recuperables. El plan F es recuperable porque T1 se confirma antes que T2, lo que hace que el valor leído por T2 sea correcto. Entonces T2 puede confirmarse a sí mismo. En el plan F2, si T1 aborta, T2 también debe abortar porque el valor de A que leyó es incorrecto. En ambos casos, la base de datos queda en un estado consistente.

La planificación J es irrecuperable porque T2 se confirmó antes que T1 a pesar de haber leído previamente el valor escrito por T1. Dado que T1 se canceló después de que T2 se confirmara, el valor leído por T2 es incorrecto. Como una transacción no se puede revertir una vez confirmada, la planificación es irrecuperable.

Sin cascada

Las planificaciones sin cascada (también conocidas como "planificaciones para evitar abortos en cascada (ACA)") son planificaciones que evitan los abortos en cascada al no permitir lecturas sucias . Los abortos en cascada ocurren cuando el aborto de una transacción provoca el aborto de otra transacción porque esta última leyó y dependió de los cambios realizados por la primera transacción en un objeto. Una lectura sucia ocurre cuando una transacción lee datos de una escritura no confirmada en otra transacción. [ 9 ]

Los siguientes ejemplos son los mismos que los de la discusión sobre recuperabilidad:

En este ejemplo, aunque F2 es recuperable, no evita las interrupciones en cascada. Se observa que si T1 se interrumpe, T2 también deberá interrumpirse para mantener la corrección de la planificación, ya que T2 ya ha leído el valor no confirmado escrito por T1.

A continuación se muestra una planificación recuperable que evita la cancelación en cascada. Sin embargo, tenga en cuenta que la actualización de A por parte de T1 siempre se pierde (ya que T1 se cancela).

Tenga en cuenta que este cronograma no sería serializable si se confirmara la ejecución de T1. Evitar las interrupciones en cascada es suficiente, pero no necesario, para que un cronograma sea recuperable.

Estricto

Una planificación es estricta si, para dos transacciones cualesquiera T1 y T2, si una operación de escritura de T1 precede a una operación conflictiva de T2 (ya sea de lectura o escritura), entonces el evento de confirmación o cancelación de T1 también precede a esa operación conflictiva de T2. Por ejemplo, la planificación F3 anterior es estricta.

Cualquier programación estricta no produce efectos en cascada, pero no al revés. La rigurosidad permite una recuperación eficiente de las bases de datos ante fallos.

Relaciones de clase de serializabilidad

Las siguientes expresiones ilustran las relaciones jerárquicas (de contención) entre las clases de serializabilidad y recuperabilidad :

  • Serial serializable por conflicto serializable por vista todos los horarios
  • Serial estricto sin cascada (ACA) recuperable todos los horarios

El diagrama de Venn (abajo) ilustra gráficamente las cláusulas anteriores.

Diagrama de Venn para clases de serializabilidad y recuperabilidad

Véase también

Referencias

  1. Philip A. Bernstein , Vassos Hadzilacos, Nathan Goodman (1987): Control de concurrencia y recuperación en sistemas de bases de datos (descarga gratuita en PDF), Addison Wesley Publishing Company, ISBN 0-201-10715-5
  2. Gerhard Weikum , Gottfried Vossen (2001): Sistemas de información transaccional , Elsevier, ISBN 1-55860-508-8
  3. Maurice Herlihy y J. Eliot B. Moss. Memoria transaccional: soporte arquitectónico para estructuras de datos sin bloqueo. Actas del 20.º simposio internacional anual sobre arquitectura de computadoras (ISCA '93). Volumen 21, número 2, mayo de 1993.
  4. 1 2 "Serializabilidad de conflictos en DBMS" . GeeksforGeeks . 29-12-2015 . Recuperado el 27-11-2023 .
  5. Silberschatz, Abraham; Korth, Henry F.; Sudarshan, S. (2020). Conceptos de sistemas de bases de datos (Séptima ed.). Nueva York, NY: McGraw-Hill Education. pág. 814. ISBN   978-1-260-08450-4.
  6. ^ Ramakrishnan, Raghu; Gehrke, Johannes (2000). Sistemas de gestión de bases de datos . Serie de informática (2ª ed.). Boston: McGraw-Hill. pag. 540.ISBN   978-0-07-232206-4.
  7. Garcia-Molina, Hector; Ullman, Jeffrey D.; Widom, Jennifer (2009). Sistemas de bases de datos: el libro completo . Edición internacional de Pearson (2.ª ed.). Upper Saddle River, NJ: Pearson/Prentice Hall. pp. 891–892 . ISBN   978-0-13-187325-4.
  8. 1 2 Michael J. Cahill, Uwe Röhm, Alan D. Fekete (2008): "Aislamiento serializable para bases de datos de instantáneas" , Actas de la conferencia internacional ACM SIGMOD de 2008 sobre gestión de datos , págs. 729-738, Vancouver, Canadá, junio de 2008, ISBN 978-1-60558-102-6(Premio al mejor artículo de SIGMOD 2008)
  9. "Sin cascada en DBMS" . GeeksforGeeks . 6 de agosto de 2019. Consultado el 29 de noviembre de 2023 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Database_transaction_schedule&oldid=1333420289#Correctness_-_recoverability "