参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_deletes_c.html
相比于传统的关系型数据库,Cassandra采用了另一种方式去删除数据。关系型数据库会花时间扫描并删除过期数据或者管理员可能需要每月分区过期数据,例如,让数据库更快一些。在Cassandra中,你不需要移除过期的数据。
关于Cassandra删除数据有两个因素需要记住:
•Cassandra并不会立即删除磁盘上的数据。
•已删除的数据可能会再次出现如果不定期运行节点的修复。
当SSTable文件被写入后是不可写的。因此,一个被删除的column不会被立马移除。代替地,一个墓碑会被写入去表明新的column状态。column会被一个墓碑标记存活一段被配置的时间。当这个时间到了,压紧的过程会永久性的删除column。
用墓碑标记一个被删除的column告诉Cassandra发送一个删除请求给副本在删除的时间删除数据。如果副本在宽限期内恢复了,他最终会受到删除请求。然而,如果一个节点宕机的时间超过了宽限期,节点可能也会错过删除请求,副本会在恢复之后删除数据。为了防止被删除的数据重新出现,管理员应该定期(通常是十天)在节点运行常规的节点修复。