Cassandra中双数据类型的原子增量

时间:2016-12-27 07:26:31

标签: cassandra nosql

有没有办法在不对主键实现分布式锁定的情况下以原子方式递增double数据类型? 也许以类似的方式计数器工作:

UPDATE user SET usage = usage + 3.45 WHERE user_id = 3400435592

1 个答案:

答案 0 :(得分:2)

在Cassandra中没有这样的东西,但如果你有固定的精度,那么你可以通过适当地缩放数据来使用普通计数器,例如:

UPDATE user SET usage = usage + 345 WHERE user_id = 3400435592

你暗中使用"美分"作为你的基础,或

UPDATE user SET usage = usage + 3450 WHERE user_id = 3400435592

你使用" millis"作为你的基地。

但是,请记住,你的增量问题远比一个" double"增量。如果你可以容忍低于/超过增量,那么继续使用Cassandra计数器。如果您正在为货币交易建模,那么我能想到的唯一可靠的增量是队列消息处理事务,在应用程序级别完成,并且不会使用双倍!