I'm looking at a design where multiple clients will connect to Cassandra and
get/mutate resources, possibly concurrently.  After planning a bit, I ran
into the following scenero for which I have not been able to research to
find an answer sufficient for my needs.  I have found where others have
recommended Zookeeper for such tasks, but I want to determine if there is a
simple solution before including another product in my design.

Make the following assumption for all following situations:
Assuming multiple clients where a client is someone accessing Cassandra
using thrift.  All reads and writes are performed using the QUORUM
consistency level.

Situation 1:
Client A ("A") connects to Cassandra and requests a QUORUM consistency level
get of an entire row.  At or very shortly thereafter (before A's request
completes), Client B ("B") connects to Cassandra and inserts (or mutates) a
column (or multiple columns) within the row.

Does A receive the new data saved by B or does A receive the data prior to
B's save?

Situaton 2:
B connects and mutates multiple columns within a row.  A requests some data
therein while B is processing.

Result?

Situation 3:
B mutates multiple columns within multiple rows.  A requests some data
therein while B is processing.

Result?

Justification: At certain points I want to essentially lock a resource (row)
in cassandra for exclusive write access (think checkout a resource) by
setting a flag value of a column within that row.  I'm just considering race
conditions.


Thanks,

Lucas Nodine

Reply via email to