Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 卡桑德拉轻量级交易和阅读_Cassandra - Fatal编程技术网

Cassandra 卡桑德拉轻量级交易和阅读

Cassandra 卡桑德拉轻量级交易和阅读,cassandra,Cassandra,我正在读《卡桑德拉:权威指南》,第三版。其案文如下: 串行一致性级别也可以应用于读取。如果Cassandra检测到查询正在读取作为未提交事务一部分的数据,它将根据指定的串行一致性级别将该事务作为读取的一部分提交 为什么读操作正在提交一个未提交的事务,并且它不会干扰写入程序回滚的能力?这里未提交的数据并不意味着它是一个失败的写操作。未提交的数据是成功写入集群中某个节点的数据,该数据在当前节点中未更新 这里, 它将事务提交为读取的一部分 意味着Cassandra将在将数据发送回客户端之前启动读取修复

我正在读《卡桑德拉:权威指南》,第三版。其案文如下:

串行一致性级别也可以应用于读取。如果Cassandra检测到查询正在读取作为未提交事务一部分的数据,它将根据指定的串行一致性级别将该事务作为读取的一部分提交


为什么读操作正在提交一个未提交的事务,并且它不会干扰写入程序回滚的能力?

这里未提交的数据并不意味着它是一个失败的写操作。未提交的数据是成功写入集群中某个节点的数据,该数据在当前节点中未更新

这里,

它将事务提交为读取的一部分

意味着Cassandra将在将数据发送回客户端之前启动读取修复并更新节点中的数据

此处没有回滚,因为写入成功,这只涉及跨节点的数据复制

  • Committed
    表示突变(
    INSERT
    UPDATE
    DELETE
    )未添加到
    committelog
  • Uncommitted
    是指突变仍在保存到
    commitlog
    的过程中
  • 为了使LWT提供保证,如
    如果存在
    如果不存在
    ,则必须将未被另一个
    飞行中
    操作写入
    提交日志
    的任何数据添加到
    提交日志

我们怎么能说非限制写入是成功的?2.成败在此一举。由于Cassandra使用了4阶段paxos,这意味着第4阶段(commit/ack)没有被编写者调用。如果读者可以提交,为什么我们甚至需要4个阶段,而它可能是3个阶段?(准备/承诺、阅读/结果、提议/接受)