2011-09-04 13 views
5

De acuerdo con la teoría CAP, Cassandra solo puede tener consistencia eventualmente. Para empeorar las cosas, si tenemos múltiples lecturas y escrituras durante una solicitud sin un manejo adecuado, incluso podemos perder la consistencia lógica. En otras palabras, si hacemos las cosas rápido, podemos hacerlo mal.Transacción con el modelo de datos de Cassandra

Mientras tanto, la mejor práctica para diseñar el modelo de datos para Cassandra es pensar en las consultas que vamos a tener, y luego agregarle un CF. De esta forma, agregar/actualizar una entidad significa actualizar muchas vistas/CF en muchos casos. Sin la característica de transacción atómica, es difícil hacerlo bien. Pero con eso, perdemos las partes A y P nuevamente.

No veo que esto preocupe a muchas personas, por lo tanto, me pregunto por qué.

  • ¿Esto se debe a que siempre podemos encontrar una manera de diseñar nuestro modelo de datos para evitar hacer múltiples lecturas y escrituras en una sola sesión?
  • ¿Esto se debe a que podemos ignorar la parte 'correcta'?
  • En la práctica real, ¿siempre tenemos la función ACID en algún lugar en el medio? Me refiero a implementar tal vez en la capa de aplicación o agregar un middleware para manejarlo?

Respuesta

2

Se refiere a personas, pero presumiblemente usted está usando cassandra porque un solo servidor de base de datos no puede satisfacer sus necesidades debido a problemas de escala o confiabilidad. Debido a esto, se ve obligado a trabajar en torno a las limitaciones de un sistema distribuido.

En la práctica real, ¿siempre tenemos la función ACID en algún lugar en el medio ? Me refiero a implementar tal vez en la capa de aplicación o agregar un middleware para manejarlo?

No, generalmente no tiene ácido en otro lugar, ya que es de suponer que en otro lugar también se debe distribuir en varias máquinas. En cambio, diseñas tu aplicación alrededor de las limitaciones de un sistema distribuido.

Si está actualizando varias columnas para satisfacer consultas, puede consultar la sección eventually atomic en esta presentación para obtener ideas sobre cómo hacerlo. Básicamente, usted escribe suficiente información sobre su actualización de cassandra antes de escribir. De esta forma, si la escritura falla, puede volver a intentarlo más tarde.

Si puede estructurar su aplicación de esa manera, puede ser útil utilizar un servicio de coordinación como Zookeeper o cages.

+0

Gracias y lo siento por la respuesta tardía. – aXqd

Cuestiones relacionadas