问题
I know that as of 0.8, Cassandra guarantees that row updates are atomic.
However, if I prepare (using MutationBatch) several row modifications or modifications across several column families, is it guaranteed that the rows will be updated in the order that in which I set them up? e.g. If I have
- Update CF 1, Row 1
- Update CF 1, Row 2
- Update CF 2, Row 3
is it possible for CF 2 to be updated while CF 1 remains unchanged due to failure?
What happens if I had set up:
- Update CF 1, Row 1, Column A
- Update CF 1, Row 2
- Update CF 2, Row 3
- Update CF 1, Row 1, Column B
Alternatively, should I be preparing instead three MutationBatches and executing them separately?
回答1:
All updates are done in parallel, so no ordering is ever guaranteed. Partial success will result in the batchlog taking over and finishing the batch starting in 1.2: http://www.datastax.com/dev/blog/atomic-batches-in-cassandra-1-2
回答2:
Playorm provides flush support which pushes all your persists down in one shot so it is sort of sends it as a unit of work(NOT a transaction)
http://buffalosw.com/wiki/flush-support/
来源:https://stackoverflow.com/questions/15662657/astyanax-if-a-mutationbatch-fails-halfway-what-guarantees-do-i-have