当我删除Cassandra中的行时,我只删除列而不是行键
如果我使用remove(key)
删除Cassandra db中ColumnFamily中的每个键,那么如果我使用get_range_slices
,那么行仍然存在,但没有列。我怎样才能删除整行?当我删除Cassandra中的行时,我只删除列而不是行键
Why do deleted keys show up during range scans?
因为get_range_slice说,“应用此谓词来定行的范围,”这意味着,如果预测结果是空的,我们必须包括该行键空的结果。即使没有执行删除操作,执行这样的查询返回某些或所有键的空列列表也是完全有效的。
感谢,并没有解决,以避免? – Matroska 2010-06-05 21:06:30
根据http://wiki.apache.org/cassandra/DistributedDeletes,每个GCGraceSeconds都会清理墓碑,默认为10天。 GCGraceSeconds应该是您获得故障节点备份并运行所需的最长时间。对于单个实例,可以将GCGraceSeconds设置为0,然后将自动删除墓碑。 – 2013-04-04 05:05:46
我与卡桑德拉0.63测试,问题还是一样。我不认为这个错误修复是为了摆脱删除的行ID。见
http://wiki.apache.org/cassandra/FAQ#range_ghosts
以获取更多信息。
Cassandra按预期使用分布式删除。
因此,删除操作不能随便擦出来的数据 的所有痕迹被立即删除:如果我们这样做,和副本没有收到 删除操作,当它再次可用它将把 确实收到删除的副本,因为错过了更新并写入 ,并对其进行修复!因此,而不是删除删除数据, 卡桑德拉用一个特殊的值,即墓碑替代它。然后,可以将该墓碑传播到错过了初始的删除请求的副本。
-1这不是“固定”的,票据刚被“解决”,解决方法是“稍后可能”。根据@ Schildmeijer的回答,这是预期的行为,而不是bug。 – user359996 2012-03-19 00:19:20
同意!请参阅下面的回复。 – 2013-04-04 05:06:54