我有一个Cassandra集群,将由多个客户端使用。我在我的密钥空间中有一个表(让我们称之为' Counter'),我用它来存储其他表中条目数的计数。
每当必须在某个表格中插入新条目时,首先是“'计数器”。将查询表以查找该表中已有的条目数,然后在将新行添加到表中后它将递增。
由于有多个客户,我如何确保2个客户同时不尝试在'柜台上读/写?表
我的群集在3.11.2上。
答案 0 :(得分:3)
您可以在新条目上使用计数器和增量:https://docs.datastax.com/en/cql/3.3/cql/cql_using/useCounters.html
或轻量级交易。如果该值被应用,您知道在那个时间没有其他人读/写 - 如果他们只是你重试。 https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlLtwtTransactions.html
可能会编写某种可以运行的作业来扫描和计算条目并与当前值进行比较。如果节点在增量和插入的新条目之间崩溃,则可能会出现两个表之间的不一致。