写信给Cassandra时可以检测到冲突吗?

时间:2012-03-27 11:05:45

标签: cassandra

是否有一些时间戳/计数器可用于验证在读 - 修改 - 写周期中,行中的数据在读取和修改之间没有变化?

换句话说,我可以在读取行时读取某种ID,当我写回来时告诉Cassandra该ID是什么,如果ID从那时起改变了写入失败了吗? (这相当于说我读完数据后发生了一些其他的写作)

1 个答案:

答案 0 :(得分:2)

cassandra中的每一列都是一个包含名称,值和时间戳的元组(或三元组)。列的时间戳表示上次修改时间。如果您有100个节点,那么具有最新时间戳的更新的节点将获胜。这就是Eventual Consistency的实现方式。

zznate有一个很好的演示文稿:Introduction to Apache Cassandra for Java Developers引用了这个主题(幻灯片37)

Accessing timestamp of a Cassandra column

总之,当您能够检索表示上次修改时间的给定列的时间戳时,您不需要“某种ID”。但是,在规模上,使用100个节点,您如何确定要连接的节点是否具有最新的列? (请参阅zznate演示文稿)

点是,你不能,没有启用交易:

  1. Cassandra - transaction support
  2. Cassandra Transaction with ZooKeeper - Does this work?
  3. how to integrate cassandra with zookeeper to support transactions
  4. 还有更多:cassandra & transactions