在某些情况下,cassandra中的增量整数是否可能?
假设我有下表:在某些情况下,cassandra中的增量整数是否可能?,cassandra,counter,consistency,Cassandra,Counter,Consistency,假设我有下表: id text PRIMARY_KEY, question_asked (int?), question_answered (int?) 此表将由同一用户每次更新。他无法同时更新此表 我想使用以下查询: UPDATE %s.%s SET question_asked = question_asked + 1 WHERE %s = :execution_id; 如果我在更新此特定案例时使用本地仲裁。关于一致性,我有什么问题吗?如果是这样的话,我很乐意理解原因 我对计数器很熟悉,
id text PRIMARY_KEY,
question_asked (int?),
question_answered (int?)
此表将由同一用户每次更新。他无法同时更新此表
我想使用以下查询:
UPDATE %s.%s SET question_asked = question_asked + 1 WHERE %s = :execution_id;
如果我在更新此特定案例时使用本地仲裁。关于一致性,我有什么问题吗?如果是这样的话,我很乐意理解原因
我对计数器很熟悉,直到现在我都是这样使用它的。使用计数器的问题是我无法定义TTL。不,在Cassandra中,这是不可能的,除非您使用特殊的。但它也有自己的问题——因为它不是幂等的,所以在服务器端出现错误时不会重试,这可能会导致错误的结果
作为解决方法,您可能会尝试使用,但它们非常重,因此使用它们时不要期望高吞吐量。对于此类操作,请查看计数器列:
请记住,Cassandra威胁计数器不同于正常数据,计数器列需要位于单独的列中。谢谢。正如我提到的-我熟悉计数器,但想知道如果我不怕一致性问题,我是否可以做一个变通方法。我寻找了计数器以外的其他方法。我写道,我不能将TTL用于持有计数器的表,在这种情况下,这对我来说是个问题。然后,您可以选择使用LWT,或者在应用程序级别进行优化-例如,从同一应用程序更新特定ID,某种管道…谢谢。我将尝试一下轻量级事务。