En Spanner, TrueTime & El teorema de CAP , escribe Eric Brewer:
Una cosa sutil sobre Spanner es que obtiene serializabilidad de bloqueos, pero obtiene consistencia externa (similar a linealización ) de TrueTime [ énfasis agregado ].
¿Cuál es la definición de consistencia externa , y ¿en qué se diferencia de la linealizabilidad ?
Comentarios
- Esta es una gran pregunta y me gustaría que Eric hubiera elaborado un poco aquí. ¿Es linealizable o no? 🙂
Respuesta
La consistencia externa no tiene un significado fijo. En este contexto, tiene la lo que significa que aparece en la siguiente oración del documento:
Para dos transacciones cualesquiera, $ T_1 $ y $ T_2 $ (incluso si están en lados opuestos de la globe): si $ T_2 $ comienza a confirmarse después de que $ T_1 $ termina de confirmarse, entonces la marca de tiempo para $ T_2 $ es mayor que la marca de tiempo para $ T_1 $.
Comentarios
- Cuanto más lo pienso, me suena muchísimo a linealización porque todas las transacciones están ordenadas. Lamentablemente, a veces estos términos son sutiles. ¿Alguien no está de acuerdo? Quiero decir, las transacciones son serializables y están totalmente ordenadas según el tiempo de compromiso. ¿Quizás la sutileza radica en cómo se implementa 2PC en Spanner?
- @Bminer La linealización es un modelo de consistencia que solo se aplica a objetos individuales, donde las transacciones pueden involucrar múltiples o objetos.
- @LorinHochstein – ¡Ja! Eso huele a picadillo. El objetivo de la terminología es ayudar a las personas reales a conceptualizar las garantías que obtienen, especialmente con respecto a las transacciones. La linealización + la serialización es la garantía más sólida, y creo que ' es a lo que se refieren los documentos de Spanner con el término " consistencia externa. " Pero surge la pregunta: ¿alguien sabe realmente qué " consistencia externa " ¿medio? 🙂
Respuesta
Puede pensar en la coherencia externa desde el aislamiento de las transacciones (Tx) y el punto de vista del pedido . En el lenguaje de aislamiento Tx, la consistencia externa es equivalente al aislamiento serializable estricto, donde «estricto» es la parte de restricción en tiempo real (como en la linealización).
Eso nuevamente significa que para un cliente del sistema Tx observable Los efectos secundarios son equivalentes a un sistema, donde todos los Tx tienen lugar de forma aislada sin ninguna concurrencia y donde se conserva su orden en tiempo real, tal como lo ve el cliente. Más importante aún, este mismo orden es visto por cualquier otro cliente no relacionado.
Lea más sobre la distinción en este blog .
Respuesta
Al mencionar " consistencia externa " , Brewer hace referencia a B. Liskov. Usos prácticos de relojes sincronizados en sistemas distribuidos . Principios de computación distribuida de ACM (PODC). Montreal, Canadá, agosto de 1991.
Liskov, en términos, hace referencia a Gifford D.K. Almacenamiento de información en un sistema informático descentralizado . Informe técnico CSL-81-8, Xerox Corporation, marzo de 1983
Así es como Gifford define la consistencia externa:
Externo La coherencia garantiza que una transacción siempre recibirá información actual. Utilizando los conceptos que acabamos de presentar, podemos proporcionar una definición formal de coherencia externa. El orden de tiempo real en el que las transacciones se completan define una programación en serie única. Esta programación en serie se denomina horario externo . Se dice que un sistema proporciona consistencia externa si garantiza que el horario que utilizará para procesar un conjunto de transacciones es equivalente a su horario externo.
Como menciona @Oleg, esto suena como estricta serialización .