繁体   English   中英

Cassandra查询执行顺序与最终一致性问题

[英]Cassandra query execution sequencing vs Eventual consistency issue

我对cassandra最终的持久性与查询排序感到困惑,我有以下问题

  1. 如果我按顺序发送2个查询(不打开isIdempotent属性)。 第一个查询是删除记录,第二个查询是创建记录。 查询2是否可能在查询1之前执行。

我的java代码看起来像这样

 public void foo(){
   delete(entity);//First delete a record
   create(entity); //Second create a record
}

另一件事我没有在我的查询中指定任何时间戳。

2)我的第二个问题是,卡桑德拉最终是一致的。 如果我按顺序发送上述查询并且它没有被复制到所有节点,那么这些查询是否会在实际将其复制到所有节点时保持顺序?

我试着查看cassandra文档,虽然它讨论了批处理操作中的查询排序,但它没有讨论非批处理操作中的查询排序。

我正在使用cassandra 2.1

默认情况下,在现代版本中,我们使用客户端时间戳。 在这里查看驱动程序文档:

https://datastax.github.io/java-driver/manual/query_timestamps/

基于时间戳,如果创建具有比删除更早的时间戳,则C *使用LWW启发式(最后写入获胜)进行操作,查询将不返回数据。 如果create有一个更新的时间戳,它会。

如果您需要线性化,即保证某些操作将按顺序执行,您可以使用基于paxos的轻量级事务:

http://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM