Parece que no puedes hacer transacciones en riak. ¿Cómo se puede asegurar que los datos sean correctos?Asegurar la corrección en riak?
Digamos que queremos insertar un comentario. En Redis que haría
commentId=incr commentCount
multi
SET comment_post:commentId postId //for later use when we flag comments. We'll need to know where in the db it is
RPUSH post_comment:postId binaryValue //contains commentId in it + comment body
exec
en SQL que había insertar una nueva fila en una tabla comentario con el texto y post ID. Ambos usan más de una declaración. ¿Cómo inserto el cuerpo del comentario y asocio la publicación al comentario en riak ya que no tiene transacciones?
Otro problema es si modifico una publicación. ¿Cómo actualizo la publicación y actualizo la lista de etiquetas de publicación usando esa etiqueta?
No sé mucho sobre riak ya que lo eché un breve vistazo. Cuando sepa los conceptos básicos o más, los publicaré allí, pero no ahora. Quiero obtener una idea general de lo que es adecuado, ya que descubrí que redis es malo para ser un DB, ya que tiene que ser capaz de encajar todo en la memoria. No sé nada sobre 'relojes vectoriales', pero acabas de decir que puedo tener múltiples valores para una clave que suena raro, pero pretenderé que riak es bastante eficiente. ¿Entonces riak está diseñado para tener toda la lógica de consistencia hecha por la aplicación? Eso es interesante –
. Leí un poco. Estoy un poco confundido porque el ejemplo muestra que se establece allow_mult en verdadero. Entonces, ¿qué pasa si tengo algo que tiene un conflicto de escritura y es falso ... Entonces, parece que todo tiene un vclock en él? Parece que estás escribiendo alto. Puedo ver el uso y la compensación allí. Me puedo imaginar cómo resolver y corregir cosas para mis necesidades, pero no puedo imaginar/pensar en lo que sucede si no configuró multis y es falso? ¿Uno sobrescribirá al otro? ¿Fallará? Puedo ver cómo manejar las cosas si falla (pero tendré que deshacer otras escrituras) –
, pero no puedo ver qué sucede si no falla y un trabajo finalizó mientras el otro trabajo comenzó y terminó un poco después y sobreescribió datos . –