我对cassandra最终的持久性与查询排序感到困惑,我有以下问题
我的java代码看起来像这样
public void foo(){
delete(entity);//First delete a record
create(entity); //Second create a record
}
另一件事我没有在查询中指定任何时间戳。
2)我的第二个问题是,卡桑德拉最终是一贯的。如果我按顺序发送上述查询并且它没有被复制到所有节点,那么这些查询是否会在实际将其复制到所有节点时保持顺序?
我试图查看cassandra文档,虽然它讨论了批处理操作中的查询排序,但它没有讨论非批处理操作中的查询排序。
我正在使用cassandra 2.1
答案 0 :(得分:0)
默认情况下,在现代版本中,我们使用客户端时间戳。请在此处查看驱动程序文档:
https://datastax.github.io/java-driver/manual/query_timestamps/
基于时间戳,如果创建具有比删除更早的时间戳,则C *使用LWW启发式(最后写入获胜)进行操作,查询将不返回数据。如果创建具有更新的时间戳,它将会。
如果您需要线性化,即保证某些操作将按顺序执行,您可以使用基于paxos的轻量级事务:
http://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0