【发布时间】:2012-02-20 18:01:51
【问题描述】:
我们正在执行以下操作来更新计数器的值,现在我们想知道是否有一种直接的方法可以立即取回更新的计数器值。
mutator.incrementCounter(rowid1, "cf1", "counter1", value);
【问题讨论】:
我们正在执行以下操作来更新计数器的值,现在我们想知道是否有一种直接的方法可以立即取回更新的计数器值。
mutator.incrementCounter(rowid1, "cf1", "counter1", value);
【问题讨论】:
Cassandra thrift API 中没有单一的“incrementAndGet”操作。
Cassandra 中的计数器最终是一致的且非原子的。 Fragile ConsistencyLevel.ALL 操作需要获得“保证更新”计数器值,即执行一致读取。 ConsistencyLevel.QUORUM 不够(如计数器设计文档中所述:https://issues.apache.org/jira/secure/attachment/12459754/Partitionedcountersdesigndoc.pdf)。
要实现 看起来 一致的 incrementAndGet 方法,您可能需要首先 读取 计数器值,然后发出 increment 突变,然后返回(读取价值 + 公司)。
例如,如果之前的计数器值是 10 到 20(在不同的副本上),并且一个添加 50,那么 read-before-increment 将返回 60 或 70。而 read-after-increment 可能仍会返回 10 或20.
【讨论】:
唯一的方法是查询它。 Cassandra 中不提供先增量后读取功能。
【讨论】: