【发布时间】:2021-06-15 22:57:57
【问题描述】:
我正在创建一个同步程序来定期将我们的 Cassandra 数据复制到另一个数据库中。我从中复制的数据库只获取 INSERT - 数据永远不会更新或删除。我想通过两种方式解决 Cassandra 的最终一致性模型:
1 - 每个同步扫描与最后一个重叠一定的时间跨度。例如,如果扫描每小时发生一次,那么每次扫描向后看一个半小时。数据包含唯一键,因此在多次扫描中读取同一记录不是问题。
2 - 我使用 ALL 的一致性级别来确保我正在扫描集群上的所有节点以获取数据。
对于这种情况,所有的一致性都是最好的吗?我只需要在任何节点上查看记录,我不在乎它是否出现在任何其他节点上。但我也不想错过任何 INSERTed 记录。但我也不想遇到超时或性能问题,因为 Cassandra 正在等待多个节点查看该记录。
更复杂的是,这个 Cassandra 网络由位于不同地理位置的 6 个集群组成。我只查询一个。我的假设是 #1 中提到的重叠最终会赶上其他集群上存在的记录。
我正在做的查询是这样的:
SELECT ... FROM transactions WHERE userid=:userid AND transactiondate>:(lastscan-overlap)
其中 userid 是分区键,transactiondate 是集群列。 userId 的列表来自其他地方。
【问题讨论】:
标签: cassandra