Niveles débiles de consistencia

Requisito previo: 

Cada transacción en un sistema de gestión de bases de datos debe necesariamente seguir las propiedades ACID, esencialmente requeridas para mantener un mecanismo apropiado para ejecutar una secuencia de operaciones básicas o una función en una base de datos sin violar ninguna restricción para producir una salida correcta y consistente al finalizar. Una propiedad importante que forma parte esencial del conjunto de propiedades para las que ACID se utiliza como acrónimo es la consistencia , representada por ‘C’ en el acrónimo de Non-Distributed Database System. Para una mayor discusión, tenga en cuenta que discutimos el concepto de niveles de consistencia para un sistema de base de datos distribuida y, por lo tanto, seguimos el teorema CAP. 

Aquí, es importante considerar que el contexto en el que se utiliza la consistencia no está relacionado con ‘C’ en el acrónimo ACID , sino que es una propiedad del Sistema de base de datos distribuida y se analiza en el contexto de ‘C’ en el acrónimo de CAP. , como se usa en el Teorema CAP . Aquí, la consistencia, como en ‘C’ de CAP, implica las reglas definidas para ejecutar un sistema concurrente y distribuido promulgado y funcionando como un sistema de base de datos centralizado y de subproceso único para un usuario. Como discutimos los subprocesos concurrentes, cualquier transacción, si existe como parte de un subproceso, debe adherirse a las propiedades ACID dentro de sí mismo.

La consistencia es, por lo tanto, una propiedad que asegura que si existe alguna copia de la base de datos, necesariamente debe realizar una serie de operaciones en un orden específico para mantener un estado final general en una y todas las copias de la base de datos, así como la base de datos original en sí. . 

  1. Aquí, todas las operaciones de LECTURA en cualquier instante particular pueden tener una única salida posible y, por lo tanto, deben devolver el mismo valor. Esto debe seguir para la ejecución concurrente basada en subprocesos en un sistema de base de datos distribuida.
  2. Cada LECTURA debe reflejar la ESCRITURA más reciente de ese elemento de datos.
  3. La condición especificada anteriormente es independiente del hecho de que el servidor haya procesado esa ESCRITURA en particular.
  4. Además, aunque las operaciones de LECTURA y ESCRITURA se ejecutan en distintos Nodes de un sistema distribuido, no restringe la salida y, además, crea la necesidad de una responsabilidad adicional para mantener registros globales para el orden de ejecución de LECTURA y ESCRITURA para cualquier variable.
  5. El procedimiento facilita que los Nodes intercambien información y presenten un orden similar de salida para garantizar la coherencia.

Esta es la definición de consistencia casi perfecta, que también se denomina consistencia atómica. Además, la consistencia perfecta absoluta se denomina consistencia estricta, pero no es práctica de implementar y, por lo tanto, se reduce solo a una base teórica. Ambos niveles se analizan en detalle a continuación.

Comenzamos discutiendo la definición básica de consistencia y un nivel de consistencia. Además, enumeraremos distintos niveles de consistencia, la categorización de cada nivel desde el nivel más fuerte hasta el nivel más débil, y concluiremos con una breve discusión sobre la consistencia de segundo grado y la estabilidad del cursor.

Diferencia entre consistencia fuerte y consistencia débil:

S.No

Consistencia fuerte

Consistencia débil

1.  

El estado actual de una base de datos sigue una secuencia de cambio de estado universal y mutuamente aceptada.

Permite vistas distintas del estado de la base de datos para ver actualizaciones diferentes e inigualables en el estado de la base de datos.

2.

La consistencia estricta, la consistencia atómica y la consistencia secuencial son niveles más fuertes de consistencia.

Consistencia Causal, Consistencia Eventual son niveles más débiles de Consistencia

3.

El usuario final desconoce las replicaciones de la base de datos dada.

El desarrollador de la aplicación debe tener conocimiento explícito de la naturaleza replicada de los elementos de datos en la base de datos.

4.

El usuario tiene una vista de la base de datos ya que solo existe una copia de la base de datos que refleja continuamente cada una de las transiciones de estado en una dirección hacia adelante junto con las operaciones.

El desarrollador debe adaptarse a la naturaleza replicada de los datos en la base de datos, lo que da como resultado un aumento en la complejidad del desarrollo en comparación con una fuerte consistencia.

Niveles de consistencia:

Varios niveles de aislamiento ofrecen cierta capacidad para proporcionar un grado específico de aislamiento a una transacción, y un nivel elegido también afecta significativamente el rendimiento de la base de datos. De manera similar, en el contexto de un sistema de base de datos basado en ACID, la gran mayoría de los sistemas de administración de bases de datos consideran ofrecer al usuario una gama completa de niveles para elegir un nivel específico de consistencia, de acuerdo con la necesidad de una aplicación. La consistencia se suma a la corrección a cambio de una reducción en el mejor rendimiento o la utilización de la CPU, lo que da como resultado un alto rendimiento del sistema.

El propósito del desarrollo de distintos niveles de consistencia es especificar un procedimiento para evitar cualquier conflicto debido a una serie de subprocesos individuales pero simultáneos que podrían estar accediendo a un espacio de memoria compartido y, por lo tanto, a los datos. Aquí nos enfocamos en comprender los conceptos básicos a través de operaciones de LECTURA y ESCRITURA únicamente sobre elementos de datos individuales.

Tenga en cuenta que, al igual que en el caso de los niveles de aislamiento más débiles, el hecho de que los niveles de consistencia relativamente más débiles , si se implementan, garantizan un rendimiento mejorado, en el contexto de la utilización total de la CPU, es cierto.

Los diferentes niveles en los que se ofrece consistencia son los siguientes:

  1. Consistencia Secuencial
  2. Consistencia estricta
  3. Consistencia atómica o consistencia lineal
  4. Consistencia Causal
  5. Consistencia eventual

Para todos los ejemplos a continuación, asumimos que el valor inicial de X e Y es 0 inicialmente. Además, tenga en cuenta las siguientes representaciones para un subproceso ‘T’ y un elemento de datos ‘V’ dados, utilizados más adelante:

R:V = x ⇒ Read the value of 'V'. The value of 'V' is 'x' at the instant.
W:V = y ⇒ Write the value of 'V'. The value of 'V' is updated to 'y' at the instant.

Cada nivel se analiza en detalle a continuación:

1. Consistencia secuencial:

Las características clave de la consistencia secuencial son las siguientes:

  • La condición más importante que forma la base para la definición de coherencia secuencial es que cada operación de ESCRITURA se ordene en todo el sistema de base de datos.
  • Cada subproceso, que se ejecuta, debe visualizar y utilizar el orden especificado de las operaciones de ESCRITURA, establecer y acceder globalmente, independientemente del hecho de qué subproceso ejecutó la operación y qué elementos de datos fueron modificados por un subproceso.
  • Sin embargo, tenga en cuenta que no siempre es necesariamente cierto que el ordenamiento global especificado sea el mismo que la secuencia de ejecución en tiempo real de cada operación.
  • Puede existir cualquier ordenación de las operaciones de ESCRITURA, siempre que la ordenación especificada sea acordada por todos los subprocesos y la sigan.
  • La única restricción se especifica en que las escrituras y lecturas que se originan en el mismo subproceso particular de ejecución no deben reordenarse.
T 1 Ancho: X = 100        
T 2   W: Y = 200      
T 3     R: Y = 200 R: X = 0 R: X = 100
T 4     R: Y = 200 R: X = 100  

Anexo S-1

S-1 sigue la coherencia secuencial y la coherencia causal, pero no cumple las condiciones especificadas para la coherencia lineal y la coherencia estricta.

Observe que los subprocesos T 3 y T 4 siguen el hecho de que B se ha actualizado antes que A. Aunque por el subproceso T 1 y T 2 , podemos observar que B se actualizó después de A, como se especificó anteriormente, no es necesario seguir real -Tiempo de pedidos para la creación de un pedido global. Por lo tanto, el programa aún se considera secuencialmente consistente porque todos los subprocesos están de acuerdo para un cierto orden de operaciones de ESCRITURA para S-1.

T 1 Ancho: X = 100        
T 2   W: Y = 200      
T 3     R: Y = 200 R: X = 0 R: X = 100
T 4     R: Y = 0 R: X = 100 R: Y = 200

Anexo S-2

S-2 sigue únicamente la consistencia causal y no se adhiere a las condiciones especificadas para la consistencia secuencial, la consistencia lineal o la consistencia estricta.

S-2 no se adhiere a las reglas especificadas por la definición de Consistencia Secuencial porque T 4 no sigue el ordenamiento global seguido por T 3 como:

  • Por T 3 , WRITE para Y se ha puesto antes de WRITE de X.
  • Al contrario de T 3 , T 4 lee una actualización de X antes que la actualización de Y.
  • El cronograma viola la Coherencia Secuencial ya que todos los subprocesos no están de acuerdo en un orden específico de las Operaciones de ESCRITURA.

Tenga en cuenta que los niveles de coherencia, que se analizan a continuación, existen como extensiones de la coherencia secuencial, donde se especifican restricciones en tiempo real en todas las operaciones de ESCRITURA.

2. Consistencia estricta:

Las características clave de la consistencia estricta son las siguientes:

  • La consistencia estricta es el nivel más alto de consistencia y, por lo tanto, es la consistencia más fuerte.
  • Requiere que las operaciones de ESCRITURA se ordenen sobre la base de la secuencia de ocurrencia en tiempo real para cada operación de ESCRITURA.
  • La regla para un cronograma estrictamente consistente especifica que una operación de ESCRITURA anterior debe verse antes que una operación de ESCRITURA posterior.
  • Además, cada operación de LECTURA debe leer el valor de la ESCRITURA más reciente en tiempo real, independientemente del hilo de ejecución que inició esa ESCRITURA.
  • No es factible implementar Strict Consistency en sistemas distribuidos en tiempo real, ya que es imposible tener un acuerdo global para el tiempo preciso y, por lo tanto, el orden de ejecución para grandes bases de datos distribuidas.
T 1 Ancho: X = 100      
T 2   W: Y = 200    
T 3     R: Y = 200 R: X = 100
T 4     R: X = 100 R: Y = 200

Anexo S-3

S-3 sigue la consistencia secuencial, la consistencia estricta, la consistencia atómica y la consistencia causal. También tenga en cuenta que S-1 y S-2 no son estrictamente consistentes.

S-1 y S-2 no siguen la consistencia estricta porque todos tienen una LECTURA de x=0 (R:X = 0) o una LECTURA de y=0 (R: Y = 0) después del valor de X e Y se ha actualizado a un nuevo valor. S-3 es estrictamente coherente porque todas las operaciones de LECTURA reflejan las operaciones de ESCRITURA más recientes para cada variable.

3. Consistencia Atómica o Consistencia Lineal:

Un horario, si cumple las condiciones de Consistencia Atómica o Consistencia Lineal, se dice que es un Horario Linealizable. El nivel más alto de coherencia que se puede utilizar prácticamente para los sistemas de bases de datos distribuidas es la coherencia lineal. También se conoce como consistencia atómica como se usa en el contexto del teorema CAP.

Aunque la consistencia atómica es muy similar a la consistencia estricta, tenga en cuenta que las diferencias entre la consistencia estricta y la consistencia atómica son las siguientes:

  • El modelo de linealizabilidad reconoce que existe una diferencia de período de tiempo significativa como t 2 -t 1 , donde en t = t 1 , una operación se envía al sistema, y ​​t = t 2 , el sistema responde con un reconocimiento de que la operación ha sido completado
  • En un sistema distribuido, el intercambio y la actualización de una operación de ESCRITURA en todas las ubicaciones apropiadas que también pueden incluir copias replicadas de la base de datos pueden ocurrir durante este período de tiempo.
  • La consistencia atómica no especifica ninguna restricción en las operaciones que ocurren con marcas de tiempo de inicio y finalización superpuestas.
  • Existe una restricción de orden solo para las operaciones para las cuales las marcas de tiempo para las operaciones dadas no se superponen y, por lo tanto, solo en tales casos, se deduce que la ESCRITURA anterior debe verse antes que la ESCRITURA posterior.
T 1 Ancho: X = 100      
T 2   W: Y = 200    
T 3

R: X = 0

R: Y = 200  
T 4     R: X = 100 R: Y = 200

Anexo S-4

S-4 sigue la consistencia atómica y, por lo tanto, S-4 es linealizable. Además, S-4 sigue la coherencia secuencial y la coherencia causal. Tenga en cuenta que S-4 no es estrictamente consistente.

El programa S-4 no sigue la coherencia estricta porque la LECTURA de X por T 3 se inicializa un poco después de la ESCRITURA de X por T 1 , pero la salida para R:X es 0. No obstante, el programa es linealizable porque esta LECTURA de X por T 3 y escritura de X por T 1 se superponen en el tiempo y, por lo tanto, la linearizabilidad no requiere la LECTURA de X por T 3 para representar el resultado de la escritura de X por T 1 .

Si bien la consistencia estricta y atómica es más fuerte que la consistencia secuencial, debe tenerse en cuenta que la consistencia secuencial, en sí misma, es un nivel muy alto de consistencia, y existen niveles más débiles de consistencia debajo de ella.

4. Consistencia causal:

  • La consistencia causal es el nivel de consistencia más popular y muy útil que está por debajo de la consistencia secuencial.
  • En coherencia secuencial, todas las operaciones de ESCRITURA estaban obligadas a estar ordenadas globalmente independientemente de si estaban relacionadas entre sí o no. La consistencia causal no define ni mantiene restricciones en las operaciones de ESCRITURA no relacionadas.
  • Si un subproceso en particular ejecuta una LECTURA de un elemento de datos (como R:X) y luego ESCRIBE el mismo elemento de datos o uno diferente (R:Y), la coherencia causal asume que la escritura posterior puede haber sido causada por la lectura. Por lo tanto, el ordenamiento global especificado para X e Y es como todos los subprocesos, mientras que la ejecución debe observar la ESCRITURA de Y después de la ESCRITURA de X.
T1 Ancho: X = 100          
T2   R: X = 100 W: Y = 200      
T3       R: X = 100 R: Y = 0 R: Y = 200
T4       R: Y = 200 R: X = 100  

Anexo S-5

Aquí, para S-5, se viola la consistencia secuencial. El cronograma, sin embargo, sigue la Consistencia Causal. 

Además, observe que aunque S-2 (Consistencia Secuencial de Referencia) no sigue la Consistencia Secuencial, sí sigue la Consistencia Causal porque el orden de X e Y no está restringido por ninguna transacción.

T1 Ancho: X = 100          
T2   R: X = 100 W: Y = 200      
T3       R: X = 100 R: Y = 0 R: Y = 200
T4       R: Y = 200 R: X = 0  

Anexo S-6

El cronograma S-6 no sigue ninguna de las consistencias que se han discutido hasta ahora. Además, tenga en cuenta que el cronograma es finalmente consistente y la coherencia eventual es la coherencia más débil que se analiza a continuación.

5. Consistencia eventual:

  • La consistencia eventual es el nivel más débil de consistencia.
  • La única garantía que se ofrece aquí es que si no hay operaciones de ESCRITURA durante un período de tiempo específico, los subprocesos tendrán que acordar finalmente el valor actualizado por la última operación de ESCRITURA.
  • Y por lo tanto, eventualmente, todas las copias de la base de datos específica reflejarán el mismo valor para un elemento de datos.

Tenga en cuenta la diferencia entre Serializabilidad y Linealizabilidad:

S. No

Serializabilidad

linealizabilidad

1.   

La serializabilidad es una garantía para las transacciones, o de una o más operaciones sobre objetos.

La linealizabilidad es una garantía para operaciones individuales en objetos individuales.

2.

Por definición, asegura que la ejecución de un conjunto de transacciones que generalmente contienen operaciones de LECTURA y ESCRITURA, sobre un número de elementos, es equivalente a una ejecución en serie de las transacciones.

Especifica una restricción en tiempo real sobre el comportamiento de un conjunto de operaciones individuales como LEER y ESCRIBIR, en un objeto individual como un elemento de datos o un registro distribuido.

3.

Serializabilidad significa «I», o aislamiento, en ACID . Si las transacciones de los usuarios conservan la corrección lógica («C» o consistencia, en ACID) es para verificar lo mismo.

La linealizabilidad para las operaciones de LECTURA y ESCRITURA es como se explica para el término «Coherencia atómica» y es la «C» o «coherencia» en la prueba del teorema CAP de Gilbert y Lynch .

4.

La serialización no implica ningún tipo de orden determinista, sino que simplemente requiere una solución de ejecución en serie equivalente como salida a la existente. Una vez que una LECTURA devuelve un valor específico, todas las lecturas posteriores deben devolver ese valor o el valor de una ESCRITURA posterior como se discutió para la Consistencia Lineal o Atómica.

Consistencia de segundo grado:

El objetivo de la introducción de la coherencia de grado dos es evitar abortos en cascada sin garantizar obligatoriamente la serialización.

Los modos de bloqueo que se utilizan para implementar el protocolo de bloqueo, para garantizar la consistencia, son similares a los dos utilizados para el Protocolo de bloqueo de dos fases : Compartido (S) y Exclusivo (X).

  • Se requiere una transacción para mantener un bloqueo apropiado mientras se accede a un elemento de datos, pero no se requiere una implementación precisa de bloqueo de dos fases, a diferencia de 2-PL, los bloqueos S se pueden liberar en cualquier instante y se puede adquirir un bloqueo. en cualquier instante.
  • Tenga en cuenta que los bloqueos exclusivos o los bloqueos X no se pueden liberar a menos o hasta que la transacción se haya comprometido o se cancele.
  • Es posible que una transacción pueda ejecutar una operación de LECTURA para un elemento de datos dado repetidamente y obtener dos valores de salida distintos para cada LECTURA. (Como se discutió para los niveles de consistencia más débiles discutidos anteriormente)

Un ejemplo de un programa no serializable con consistencia de grado dos es el siguiente:

T 1 T 2
bloqueo-S(Q)  
leer (Q)  
desbloquear (Q)  
  bloquear-X(Q)
  leer (Q)
  escribir (Q)
  desbloquear (Q)
bloqueo-S(Q)  
leer (Q)  
desbloquear (Q)  

Estabilidad del cursor:

Es una forma de consistencia de grado dos. Está específicamente diseñado y utilizado para cumplir el propósito de programas donde hay una iteración sobre tuplas de relación mediante el uso de cursores.

Al contrario del procedimiento de bloqueo de toda la relación, la estabilidad del cursor garantiza que:

  • Solo la tupla que está siendo procesada por la iteración en el instante actual está bloqueada por un S-Lock en un modo compartido.
  • Si se modifica una tupla, se bloquea en modo exclusivo mediante un X-Lock hasta que la transacción se confirma para garantizar la coherencia.

Las dos reglas especificadas anteriormente aseguran la consistencia de grado dos, que es el nivel más débil de consistencia.

ventajas:

  • Elimina la necesidad de un protocolo de bloqueo de dos fases.
  • Se está utilizando para el rendimiento eficiente del sistema en la práctica para relaciones de acceso intensivo como un medio fácil de aumentar la concurrencia.

Inconvenientes:

  • El procedimiento no garantiza la serialización.
  • El desarrollador debe asegurarse de que la aplicación esté codificada de manera que garantice la consistencia de la base de datos, incluso en una situación en la que existe una gran posibilidad de que existan programaciones no serializables.
  • Por lo tanto, el uso de la Estabilidad del Cursor está restringido a una forma limitada de transacciones ejecutables y eso también bajo un diseño de código seguro y especializado como compensación contra el rendimiento del sistema.

Publicación traducida automáticamente

Artículo escrito por medha130101 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *