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,如果我们删除了一致性级别为QUORUM的行,并且所有读取都使用相同的一致性级别,那么删除的记录将如何再次出现 例如,在RF=3且一致性级别=QUORUM的3节点群集中 我已删除一致性仲裁的一行,当时有一个节点失败。因此,失败的节点无法赶上此删除 让Cassandra在完全压缩时删除每个节点中的行。在从这两个节点中删除行之后,考虑失败的节点变为活的。 由于我们的一致性级别是QUORUM,因此任何一个副本节点的结果都为零,协调器可以假定该行已被删除,并向客户端返回null 我的疑问是,为什么cass

如果我们删除了一致性级别为QUORUM的行,并且所有读取都使用相同的一致性级别,那么删除的记录将如何再次出现

例如,在RF=3且一致性级别=QUORUM的3节点群集中

我已删除一致性仲裁的一行,当时有一个节点失败。因此,失败的节点无法赶上此删除

让Cassandra在完全压缩时删除每个节点中的行。在从这两个节点中删除行之后,考虑失败的节点变为活的。 由于我们的一致性级别是QUORUM,因此任何一个副本节点的结果都为零,协调器可以假定该行已被删除,并向客户端返回null


我的疑问是,为什么cassandra要等待gc_grace_秒才能从节点执行行的完全删除。

因为如果故障节点在从其他两个节点完全删除数据后恢复,集群将不知道该节点关闭时数据是否已删除,或者数据是否已插入,但由于其他原因未能复制到其他2个节点,例如,因为这2个节点在写入过程中处于运行状态,但随后崩溃并被替换


换言之,宽限期为所有节点提供了足够的时间来同步这些情况下的所有数据。这也是为什么集群上的一轮维修需要在此宽限期内定期完成的原因

如果我错了,请纠正。。我认为所有墓碑中都有一个时间戳,通过计算墓碑中的当前时间,所有超过gc宽限期的墓碑都将在主要压缩时被删除。如果这是正确的,则有一些删除的记录将超过宽限期,我们如何说我们可能必须将失败的节点带回来在宽限期结束之前。节点需要在宽限期之前返回并修复,或退出。已修复,因为必须先在该节点上复制墓碑,然后才能将其从其他节点删除。谢谢您的回复。我还需要澄清一点,这就是为什么不断修复集群中的节点是Cassandra数据库维护的一个非常重要的方面。您希望群集中的数据在节点之间始终保持同步。服务器的小故障可能会也可能不会被暗示的切换完全覆盖(我个人不会完全依赖于此)。但再加上持续的修复工作,您可以确保在前9天内,服务器有足够的时间修复所有数据。但我也会说——如果你的服务器停机几天——重建它会更安全。