在Cassandra的Counter Vs Int专栏?

时间:2016-02-15 14:50:34

标签: cassandra counter cql3 nosql

我是Cassandra的新人。我无法理解在表中使用计数器的优点是什么(如果非计数器列不是复合PRIMARY KEY的一部分,甚至在不同的表中)?为什么我们不使用具有Int类型的列,当我将有一些语句,如x = x ++;使用int或counter之间有什么不同?
是否可以在Cassandra中使用Int Type的增量或减量?

1 个答案:

答案 0 :(得分:11)

  

为什么我们不使用具有Int类型的列,当我将有一些语句,如x = x ++;使用int或counter之间有什么不同?

因为使用普通的Int列需要 read-before-write lock 来执行getClass().getField(pair.getKey()).setBoolean(this, theEntry); 等操作

实际上,对于分布式数据库,当您可以对同一值进行并发更新时,保证x=x++一致行为的唯一方法是:

  1. 锁定当前记录
  2. 读取x的当前值,将其递增1
  3. 回写x
  4. 的新值
  5. 释放锁
  6. 计数器类型允许对值进行并发递增/递减,而不需要 read-before-write 锁定