在Cassandra的Counter Vs Int专栏?

Eln*_*naz 6 counter cassandra nosql cql3

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

doa*_*hai 11

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

因为使用普通的Int列需要read-before-writelock来进行操作x=x++

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

  1. 锁定当前记录
  2. 读取x的当前值,将其递增1
  3. 写回x的新值
  4. 释放锁

计数器类型允许对值进行并发递增/递减,而不需要先写入先读锁定