10

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

4

4 回答 4

6

为什么在范围扫描期间会显示已删除的键?

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

于 2010-06-05T20:57:23.760 回答
4

Cassandra 按预期使用分布式删除。

因此,删除操作不能立即清除所有被删除数据的痕迹:如果我们这样做了,并且副本没有收到删除操作,当它再次可用时,它会将收到删除的副本视为错过了写入更新,并修复它们!因此,Cassandra 并没有在删除时清除数据,而是将其替换为一个称为墓碑的特殊值。然后可以将 tombstone 传播到错过初始删除请求的副本。

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

于 2012-04-20T07:58:44.730 回答
1

我用 cassandra 0.63 测试过,问题还是一样。我不认为错误修复是为了摆脱已删除的行 ID。看

http://wiki.apache.org/cassandra/FAQ#range_ghosts

了解更多信息。

于 2010-07-24T13:49:56.020 回答
-3

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

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

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

于 2010-07-16T17:07:29.867 回答