确保在 Cassandra 中同步读写

Ensuring synchronous read-write in Cassandra

我有一个将由多个客户端使用的 Cassandra 集群。我的键空间中有一个 table(我们称之为 'Counter'),我用它来存储其他 table 中的条目数。

每当必须在某些 table 中插入新条目时,首先会查询 'Counter' table 以找出 [=22= 中已有的条目数],然后在将新行添加到 table.

后它会递增

因为有多个客户端,我如何确保 2 个客户端不会同时尝试在 'Counter' table.

上 read/write

我的集群在 3.11.2 上。

您可以在新条目上使用计数器和增量:https://docs.datastax.com/en/cql/3.3/cql/cql_using/useCounters.html

或者轻量级交易。如果应用了该值,那段时间你不知道其他人 read/written - 如果他们让你重试。 https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlLtwtTransactions.html

编写某种可以 运行 扫描和计算条目并与当前值进行比较的作业可能会很好。如果节点崩溃 in-between 增量和插入的新条目,则 2 个表之间可能存在不一致。