Cassandra

在delete一条数据后,再insert 相同内容的数据,结果看起来是成功的,但是当你去查找这个数据,却没有任何内容,整个过程并且没有任何异常提示。

这往往发生在单元测试的时候,我们反复清理和写入数据,单元测试有时候成功,有时候失败。
这对单元测试来说,简直就是噩梦。。。

从论坛上收集的一些信息显示,这是由于墓碑引起的,SSTable是不可修改的,数据delete后被标记墓碑,同主键的数据再写入的时候,由于墓碑的存在,还是被认为是删除的,即使写入成功。

如果是测试,truncate tablename可以解决这个问题,但是如果数据不能这样全部清理,就不知道要如何处理了。

我自己在使用过程中这个问题的触发会更诡异一些,使用PHP驱动进行写入,使用CQLSH客户端进行删除,然后再用PHP写入时,数据写不进去。
但是如果使用PHP进行删除和写入操作,则没有这个问题。

原文地址:https://www.cnblogs.com/didda/p/4913284.html