I'm new in Cassandra. I can't understand what is the advantage of using counter in a table (or even in a different table if the non-counter columns are not part of the composite PRIMARY KEY)? Why we don't use a column with Int type, when I will have some statements like x=x++; what is the different between using int or counter?
Is that possible to use increments or decrements for Int Type in Cassandra at all?
9
votes
1 Answers
16
votes
Why we don't use a column with Int type, when I will have some statements like x=x++; what is the different between using int or counter?
Because using a normal Int column would require read-before-write and lock for operations like x=x++
Indeed, for a distributed database when you can have concurrent updates on the same value, the only way to guarantee consistent behaviour for x=x++
is:
- lock the current record
- read the current value of x, increment it by 1
- write back the new value of x
- release the lock
Counter type allows concurrent increment/decrement on the value without neither requiring read-before-write nor locking