在某些情况下,cassandra中的增量整数是可能的吗?

7tofc5zh  于 2021-06-14  发布在  Cassandra
关注(0)|答案(2)|浏览(659)

假设我有下表:

id text PRIMARY_KEY,
question_asked (int?),
question_answered (int?)

此表将由同一用户每次更新。他不能同时更新此表。
我要使用以下查询:

UPDATE %s.%s SET question_asked = question_asked + 1 WHERE %s = :execution_id;

如果我在更新此特定案例时使用本地\u仲裁。我对一致性有什么问题吗?如果是这样,我会很高兴理解为什么
我对计数器很熟悉,直到现在我都是这样使用的。使用counter的问题是我不能定义ttl。

s8vozzvw

s8vozzvw1#

不,这在Cassandra是不可能的,除非你用一种叫做 counter . 但它也有自己的问题——因为它不是幂等的,所以在服务器端出错时不会重试,这可能会导致不正确的结果。
作为解决方法,您可以尝试使用轻量级事务,但它们非常重,因此在使用它们时不要期望高吞吐量。

yftpprvb

yftpprvb2#

对于此类操作,请查看计数器列:
https://cassandra.apache.org/doc/latest/cql/types.html#counters
https://docs.datastax.com/en/cql/3.3/cql/cql_using/usecountersconcept.html
请记住,不同于正常数据的cassandra威胁计数器和计数器列需要位于单独的列族中。-

相关问题