我们有一个cassandra表,在这里我们存储了目录中的商品的销售数量。为此,我们使用计数器数据类型。我们仍然不确定计数器是否能处理比赛条件。多个服务器正在尝试增加同一项目的计数。计数器是否处理竞争条件,或者我们是否需要为更新实现自己的锁定系统?如果没有,那么使用计数器比使用整数有什么好处?
b0zn9rqh1#
您可以使用串行查询,这会使您的查询线性化,但会以性能为代价,这是需要记住的,即使一致性和数据竞争安全是您最关心的问题。您可以在以下链接中阅读有关上述查询类型的更多信息:https://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshserialconsistency.html
rlcwz9us2#
计数器的定义是不精确的,所以你不应该使用他们的库存和类似的事情。它们不是等分的,所以在失败的情况下不会重试,所以在默认重试策略的情况下可以得到欠计数,或者在实现自定义重试策略的情况下得到过计数。。。使用计数器的优点是,它们可以在精度不太重要的特定情况下工作。它们比LWT轻得多。
2条答案
按热度按时间b0zn9rqh1#
您可以使用串行查询,这会使您的查询线性化,但会以性能为代价,这是需要记住的,即使一致性和数据竞争安全是您最关心的问题。您可以在以下链接中阅读有关上述查询类型的更多信息:
https://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0
https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshserialconsistency.html
rlcwz9us2#
计数器的定义是不精确的,所以你不应该使用他们的库存和类似的事情。
它们不是等分的,所以在失败的情况下不会重试,所以在默认重试策略的情况下可以得到欠计数,或者在实现自定义重试策略的情况下得到过计数。。。
使用计数器的优点是,它们可以在精度不太重要的特定情况下工作。它们比LWT轻得多。