2011-01-03 18 views
9

¿Cuál es el significado de consistencia eventual en Cassandra cuando los nodos en un único clúster no contienen las copias de los mismos datos, pero los datos se distribuyen entre los nodos. Ahora, ya que una sola porción de datos se registra en un solo lugar (nodo). ¿Por qué Cassandra no devolvería el valor reciente de ese único lugar registrado? ¿Cómo surgen las copias múltiples en esta situación?Significado de la consistencia eventual en Cassandra?

Respuesta

1

Depende del cliente decidir el nivel de consistencia apropiado (cero, cualquiera, uno, quoram o todo). (El nivel de coherencia controla el comportamiento de lectura y escritura en función de su factor de replicación). En un clúster de nodo único, los niveles de consistencia any, one, quorom y all son equivalentes.

+0

pero la coherencia entre qué datos?, Ya que un solo dato se encuentra en un solo lugar en un clúster ... hay múltiples copias de datos ... entonces, ¿qué consistencia? –

+0

en un clúster de nodo único, no tiene que preocuparse por la coherencia (siempre que no realice escrituras asincrónicas (CL.ZERO, no use esta)). – Schildmeijer

+0

lo siento, creo que me entendiste mal ... me refiero a un clúster con varios nodos, los datos se distribuyen/fragmentan (y ** no se replican **) por lo que no hay copias múltiples de una sola pieza de datos entre diferentes nodos en n-node cassandra cluster, ¿cómo se define la consistencia en este caso donde, de hecho, no hay copias múltiples? ... espero que tenga mi punto ... –

2

Incluso con el factor de replicación = 1, la coherencia no es necesariamente inmediata porque las escrituras están almacenadas en el nodo al que las envía y por lo tanto no necesariamente se envían inmediatamente al nodo responsable de esa clave.

Pero depende del nivel de consistencia que elija.

Principalmente el caso de uso para Cassandra es con factor de replicación> 1, que es donde la consistencia se convierte en un problema mayor. RF = 3 parece ser un ajuste común (ya que permite quórum lee/escribe con un nodo no disponible)

+1

¿Cuánto tiempo puede transcurrir antes de que la escritura se vacíe de memtable (memoria intermedia) al disco (= al nodo responsable)? – Kozuch

0

Cassandra tiende a comprometer la latencia y la consistencia disponibilidad . Es "finalmente consistente", un modelo para la coherencia de la base de datos NoSQL que se usa con las configuraciones distribuidas. En lugar de mantener una coherencia estricta que realmente podría ralentizar las cosas a escala, la coherencia final permite una alta disponibilidad, solo a costa de que cada instancia de sus datos no se sincronice en todos los servidores de inmediato.

2

La consistencia de Cassandra se puede ajustar. ¿Qué se puede ajustar?
* Número de nodos necesarios para aceptar los datos de las lecturas .. llámelo R * Número de nodos necesarios para acordar los datos para las escrituras. Llámelo W
En caso de 3 nodos, si elegimos 2R y 2W .. luego durante una lectura, si 2 nodos están de acuerdo en un valor, ese es el verdadero valor. El tercero puede o no tener el mismo valor.
En caso de escritura, si se elige 2W, si los datos se escriben en 2 nodos, se considera suficiente. Este modelo ES consistente.
Si R + w < = N donde N es el número de nodos, eventualmente será consistente.
Cassandra mantiene una marca de tiempo con cada columna y cada campo de columna para que finalmente sea consistente. Hay un mecanismo en el fondo para alcanzar un estado consistente.
Pero como dije, si R + W> N, entonces es sólido consistente. Es por eso que la consistencia se considera sintonizable en Cassandra.

Cuestiones relacionadas