是否有一些时间戳/计数器可用于验证在读 - 修改 - 写周期中,行中的数据在读取和修改之间没有变化?
换句话说,我可以在读取行时读取某种ID,当我写回来时告诉Cassandra该ID是什么,如果ID从那时起改变了写入失败了吗? (这相当于说我读完数据后发生了一些其他的写作)
答案 0 :(得分:2)
cassandra中的每一列都是一个包含名称,值和时间戳的元组(或三元组)。列的时间戳表示上次修改时间。如果您有100个节点,那么具有最新时间戳的更新的节点将获胜。这就是Eventual Consistency的实现方式。
zznate有一个很好的演示文稿:Introduction to Apache Cassandra for Java Developers引用了这个主题(幻灯片37)
Accessing timestamp of a Cassandra column
总之,当您能够检索表示上次修改时间的给定列的时间戳时,您不需要“某种ID”。但是,在规模上,使用100个节点,您如何确定要连接的节点是否具有最新的列? (请参阅zznate演示文稿)
点是,你不能,没有启用交易: