Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Counter Vs Int column in Cassandra?

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?

like image 293
Elnaz Avatar asked Feb 15 '16 14:02

Elnaz


1 Answers

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:

  1. lock the current record
  2. read the current value of x, increment it by 1
  3. write back the new value of x
  4. release the lock

Counter type allows concurrent increment/decrement on the value without neither requiring read-before-write nor locking

like image 66
doanduyhai Avatar answered Sep 19 '22 23:09

doanduyhai