Counter Vs Int column in Cassandra?
我是Cassandra的新朋友。我无法理解在表中使用计数器的优势(如果非计数器列不是复合PRIMARY KEY的一部分,甚至在其他表中使用计数器)也有什么好处?为什么当我将要使用x = x之类的语句时,为什么不使用Int类型的列?使用int或counter有什么区别?
是否可以在Cassandra中对Int Type使用增量或减量?
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?
因为使用普通的Int列将需要先写后读和锁定,以进行x=x++
之类的操作
实际上,对于分布式数据库,当您可以对同一值进行并发更新时,保证x=x++行为一致的唯一方法是:
锁定当前记录
读取x的当前值,将其递增1
写回x的新值
释放锁
计数器类型允许同时递增/递减值,而无需先写后读或锁定
- 感谢您的好答案。但是,我需要更多信息。我们可以在CQL中管理一致性级别;当我们有柜台时,这可能吗?如果我们选择高CL,那么计数器会要求锁定吗?如果一致性对于我们的方案很重要,哪种方法更好?使用INT吗?或使用具有较高CL的Counter?
-
您可以将"一致性级别"与"计数器"一起使用。它与锁定无关。请查看以下幻灯片以了解一致性级别:slideshare.net/doanduyhai/cassandra-introduction-nantesjug/2??4
-
我不明白使用Counter类型本身是否可以保证其一致性。当我们只使用x = x时;如何了解它是否以前增加过。 LTW在这种情况下可以帮助我们吗?如果是,怎么办?谢谢。
-
您可以使用QUORUM一致性级别来写入和读取计数器值。它保证在写入时增量/减量已应用于大多数副本,并保证您读取最新的写入值。计数器不支持LWT。
-
想知道计数器列在内部如何工作,以避免读取-更新(增量)-写入操作和锁定