当我删除Cassandra中的行时,我只删除列而不是行键

时间:2010-06-05 18:13:30

标签: cassandra nosql delete-row

如果我使用remove(key)删除Cassandra数据库中ColumnFamily中的每个键,那么如果我使用get_range_slices,行仍然存在但没有列。我怎么能删除整行?

4 个答案:

答案 0 :(得分:6)

Why do deleted keys show up during range scans?

  

因为get_range_slice说“将此谓词应用于给定的行范围”,这意味着,如果谓词结果为空,我们必须为该行键包含空结果。执行这样的查询以返回部分或全部键的空列列表是完全有效的,即使没有执行删除也是如此。

答案 1 :(得分:4)

Cassandra按预期使用Distributed Deletes。

  

因此,删除操作不能只消除所有数据痕迹   立即被删除:如果我们这样做,并且副本没有收到   删除操作,当它再次可用时它会处理   确实收到删除的副本错过了写入   更新,并修复它们!所以,而不是删除删除数据,   Cassandra用一个叫做墓碑的特殊值替换它。该   然后墓碑可以传播到错过最初的复制品   删除请求。

http://wiki.apache.org/cassandra/DistributedDeletes

答案 2 :(得分:1)

答案 3 :(得分:-3)

刚刚遇到同样的问题,我发现:

这已在0.7中修正 (https://issues.apache.org/jira/browse/CASSANDRA-1027)。 并向后移植到0.6.3

这也是相关的: https://issues.apache.org/jira/browse/CASSANDRA-494