有没有办法在不对主键实现分布式锁定的情况下以原子方式递增double数据类型? 也许以类似的方式计数器工作:
UPDATE user SET usage = usage + 3.45 WHERE user_id = 3400435592
答案 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计数器。如果您正在为货币交易建模,那么我能想到的唯一可靠的增量是队列消息处理事务,在应用程序级别完成,并且不会使用双倍!