Search code examples
cassandranosqlcassandra-3.0atomic

How to visualize Atomicity in Cassandra?


As per this datastax doc Atomicity in Cassandra is:

In Cassandra, a write is atomic at the partition-level, meaning inserting or updating columns in a row is treated as one write operation.

Whereas according to this datastax doc Atomicity in Cassandra is:

In Cassandra, a write operation is atomic at the partition level, meaning the insertions or updates of two or more rows in the same partition are treated as one write operation.

My confusion is that whether atomicity is seen at a single row basis or it can have multiple rows included of a table at partition level?

I assume it is a combination of both depending on the type of query we are executing in Cassandra.

For Example :

If I have an insert query, it will always be inserting one row in a partition. So Cassandra ensures that this row is inserted successfully at partition level.

But if I have update query whose where clause has a condition which is qualifying multiple rows then the update operation is atomic at partition level means either all qualified rows as per the condition will be updated or none will be.

Is my understanding correct?


Solution

  • "row" and "partition" get conflated since previously row meant partition and now row means a part of a partition.

    They are atomic to the partition. Keep in mind thats in reference to a single replica, so a or multiple rows in a batch containing 5 columns are all updated in a single operation on the one replica (no cross node isolation). If your setting (key, value) VALUES ('abc', 'def') you will never see just the key and not the value set. However you might make a read and only 1 replica has it set while other does not. Meaning depending on your replication factor and consistency level requested you will either see the whole thing or nothing. This can apply to multiple rows within a partition as well but you cannot update 2 rows with a single update statement without a batch (logged or unlogged).