Este post ha sido aprobado por especialistas así aseguramos la exactitud de nuestro tutorial.
Solución:
Breve resumen: el factor de replicación describe cuántas copias de sus datos existen. El nivel de consistencia describe el comportamiento visto por el cliente. Tal vez haya una mejor manera de categorizarlos.
Como ejemplo, puede tener un factor de replicación de 2. Cuando escribe, siempre se almacenarán dos copias, suponiendo que haya suficientes nodos activos. Cuando un nodo está inactivo, las escrituras para ese nodo se guardan y se escriben cuando vuelve a estar activo, a menos que esté inactivo el tiempo suficiente para que Cassandra decida que se ha ido para siempre.
Ahora digamos en ese ejemplo que escribes con un nivel de consistencia de UNO. El cliente recibirá un reconocimiento de éxito después de que se realice una escritura en un nodo, sin esperar la segunda escritura. Si realizó una escritura con un CL de TODOS, el reconocimiento al cliente esperará hasta que se escriban ambas copias. Hay muchas otras opciones de nivel de consistencia, demasiadas para cubrir todas las variantes aquí. Sin embargo, lea el documento de Datastax, hace un buen trabajo al explicarlos.
En el mismo ejemplo, si lee con un nivel de coherencia de UNO, la respuesta se enviará al cliente después de que responda una única réplica. Otra réplica puede tener datos más nuevos, en cuyo caso la respuesta no estará actualizada. En muchos contextos, eso es más que suficiente. En otros, el cliente necesitará la información más actualizada y utilizará un nivel de coherencia diferente en la lectura, quizás un nivel TODO. De esa manera, la consistencia de Cassandra y otras bases de datos post-relacionales se puede ajustar de formas que las bases de datos relacionales normalmente no lo son.
Ahora volviendo a tus ejemplos.
Ejemplo uno: Sí, puede escribir en A y leer en B, incluso si B no tiene su propia réplica. B se lo pedirá a A en nombre de su cliente. Esto es también true para sus otros casos donde los nodos están todos arriba. Cuando están todos arriba, puede escribir en uno y leer en otro.
Para las escrituras, con WC=ONE, si el nodo de la réplica única está activo y es al que está conectado, la escritura se realizará correctamente. Si es para el otro nodo, la escritura fallará. Si usa ANY, la escritura tendrá éxito, suponiendo que esté hablando con el nodo que está activo. Creo que también tienes que haber insinuado el traspaso habilitado para eso. El nodo inactivo obtendrá los datos más tarde, y no podrá leerlos hasta después de que eso ocurra, ni siquiera desde el nodo que está activo.
En los otros dos ejemplos, el factor de replicación afectará la cantidad de copias que finalmente se escriben, pero no afecta el comportamiento del cliente más allá de lo que he descrito anteriormente. El QUORUM afectará el comportamiento del cliente en el sentido de que deberá tener una cantidad suficiente de nodos activos y respondiendo para escrituras y lecturas. Si tiene suerte y al menos (nodos/2) + 1 nodo está fuera de los nodos que necesita, entonces las escrituras y las lecturas tendrán éxito. Si no tiene suficientes nodos con réplicas activas, las operaciones de lectura y escritura fallarán. En general, algunas lecturas y escrituras de QUORUM pueden tener éxito si un nodo está inactivo, suponiendo que ese nodo no sea necesario para almacenar su réplica, o si su interrupción aún deja suficientes nodos de réplica disponibles.
Consulta esta sencilla calculadora que te permite simular diferentes escenarios:
http://www.ecyrd.com/cassandracalculator/
Por ejemplo, con 2 nodos, un factor de replicación de 1, consistencia de lectura = 1 y consistencia de escritura = 1:
Your reads are consistent
You can survive the loss of no nodes.
You are really reading from 1 node every time.
You are really writing to 1 node every time.
Each node holds 50% of your data.
valoraciones y comentarios
Si haces scroll puedes encontrar los comentarios de otros sys admins, tú también tienes la opción de dejar el tuyo si te gusta.