【发布时间】:2012-03-28 18:43:56
【问题描述】:
是否有一些时间戳/计数器可用于验证在读取-修改-写入周期中,行中的数据在读取和修改之间没有变化?
换句话说,我可以在读取行的同时读取某种 ID,当我写回它时告诉 Cassandra 那个 ID 是什么,如果从那时起 ID 改变了,那么写入会失败吗? (这相当于说在我读取数据后发生了其他一些写入)
【问题讨论】:
标签: cassandra
是否有一些时间戳/计数器可用于验证在读取-修改-写入周期中,行中的数据在读取和修改之间没有变化?
换句话说,我可以在读取行的同时读取某种 ID,当我写回它时告诉 Cassandra 那个 ID 是什么,如果从那时起 ID 改变了,那么写入会失败吗? (这相当于说在我读取数据后发生了其他一些写入)
【问题讨论】:
标签: cassandra
cassandra 中的每一列都是一个包含名称、值和时间戳的元组(或三元组)。列的时间戳表示上次修改的时间。如果您有 100 个节点,则具有最新时间戳的更新的节点将获胜。这就是Eventual Consistency 的实现方式。
zznate 有一个很好的介绍:Introduction to Apache Cassandra for Java Developers 引用了这个主题(幻灯片 37)
Accessing timestamp of a Cassandra column
总之,当您能够检索表示上次修改时间的给定列的时间戳时,您不需要“某种 ID”。但是,在规模上有 100 个节点的情况下,您如何确定要连接的节点具有最新的列? (参考 zznate 演示文稿)
重点是,如果不启用交易,您就不能:
【讨论】: