Consistencia Causal

La consistencia causal es un  modelo de consistencia que no requiere que todos los procesos vean la misma secuencia de registros en la memoria, distinguiendo entre operaciones de escritura potencialmente dependientes (un registro de uno puede depender del resultado de leer otra celda) y operaciones de escritura potencialmente independientes (paralelas) . 1] .

Un sistema logra la consistencia causal si todos los nodos del sistema consideran en el mismo orden las operaciones de memoria que están potencialmente relacionadas causalmente. Las operaciones de escritura simultáneas (es decir, aquellas que no están causalmente relacionadas) pueden ser consideradas en un orden diferente por diferentes nodos. Este tipo de consistencia es más débil que la consistencia secuencial , que requiere que todos los nodos vean todos los registros en el mismo orden [2] , pero más fuerte que la consistencia PRAM , en la que solo los registros realizados por un nodo serían visibles en el mismo orden por cualquier otro nodo [3] .

Las relaciones de causalidad entre operaciones (eventos) para sistemas de memoria compartida distribuida se pueden definir de la siguiente manera [4] :

  1. La secuencia de lecturas y escrituras en un nodo determina el orden causal local.
  2. Una operación de escritura precede causalmente a una operación de lectura en otro nodo si la lectura devuelve el valor escrito por esa operación de escritura. Esta es una relación de orden entre procesos.
  3. Y finalmente, el orden causal se considera transitivo : es decir, si la operación A (causalmente) sigue a B, y B - antes de C, entonces A está en el orden de causalidad antes que C. Es decir, el cierre transitivo de las relaciones de orden local . y los órdenes entre procesos determinan el orden causal global.

Ventajas y desventajas

Al mantener la propiedad de operaciones de baja latencia garantizada, la consistencia causal es mejor que la consistencia final tanto para los usuarios como para los programadores. Tiene en cuenta las relaciones de causa y efecto entre las operaciones y garantiza que cada nodo vea las operaciones en el orden especificado. La consistencia causal también facilita la programación al eliminar la necesidad de considerar operaciones irrelevantes [5] .

Sin embargo, la consistencia causal también tiene algunas desventajas [5] :

En particular, se requiere establecer si una simple sobrescritura de datos antiguos es suficiente o si se requieren mecanismos separados para resolver registros conflictivos.

Notas

  1. Odintsov I. O. Programación profesional. Enfoque de sistemas. - 2do. - San Petersburgo. : BHV-Petersburg, 2004. - S. 520-521.
  2. Vijay K. Garg Informática concurrente y distribuida en Java. John Wiley & Sons, 28 de enero de 2005 - Computadoras - 336 páginas. p60
  3. Kshemkalyani, Singhal, 2011 , págs. 420-423.
  4. Kshemkalyani, Singhal, 2011 , 12.2.3 Coherencia causal.
  5. 1 2 Wyatt Lloyd, Michael J. Freedman, Michael Kaminsky, David G. Andersen. Breve introducción a la consistencia causal ;inicio de sesión: The USENIX Magazine, Vol 38, Número 4, agosto de 2013.

Literatura