如果我使用remove(key)
删除Cassandra数据库中ColumnFamily中的每个键,那么如果我使用get_range_slices
,行仍然存在但没有列。我怎么能删除整行?
答案 0 :(得分:6)
Why do deleted keys show up during range scans?
因为get_range_slice说“将此谓词应用于给定的行范围”,这意味着,如果谓词结果为空,我们必须为该行键包含空结果。执行这样的查询以返回部分或全部键的空列列表是完全有效的,即使没有执行删除也是如此。
答案 1 :(得分:4)
Cassandra按预期使用Distributed Deletes。
因此,删除操作不能只消除所有数据痕迹 立即被删除:如果我们这样做,并且副本没有收到 删除操作,当它再次可用时它会处理 确实收到删除的副本错过了写入 更新,并修复它们!所以,而不是删除删除数据, Cassandra用一个叫做墓碑的特殊值替换它。该 然后墓碑可以传播到错过最初的复制品 删除请求。
答案 2 :(得分:1)
答案 3 :(得分:-3)
刚刚遇到同样的问题,我发现:
这已在0.7中修正 (https://issues.apache.org/jira/browse/CASSANDRA-1027)。 并向后移植到0.6.3