cassandra cli在批处理模式下删除后立即设置,设置为“丢失”
我们有一个由两个节点组成的cassandra(简单)集群 在从定制转储进行恢复的过程中,我们发现cassandra cli在批处理模式下删除后立即设置,设置为“丢失”,cassandra,Cassandra,我们有一个由两个节点组成的cassandra(简单)集群 在从定制转储进行恢复的过程中,我们发现 del column_family['row_1']; set column_family['row_1']['column1'] = '123'; set column_family['row_1']['column2'] = '456'; set column_family['row_1']['column3'] = '789'; 。。。通常不会设置第一列(列_1) 我们使用: $ cassa
del column_family['row_1'];
set column_family['row_1']['column1'] = '123';
set column_family['row_1']['column2'] = '456';
set column_family['row_1']['column3'] = '789';
。。。通常不会设置第一列(列_1)
我们使用:
$ cassandra-cli -h cassandra.host.name -k keyspace_name -f dump_file
我们在Debian主机上使用cassandra 1.0.10
转储文件总是删除然后重新创建键空间,因此在执行时它实际上是空的。我们知道delete语句实际上是不需要的
我们删除了它,但我们仍然无法理解为什么会发生这种情况。我猜这是由某种设计造成的,我们只是缺少了,但我们无法弄清楚到底是什么出了“错” 我猜这里发生的事情是,行墓碑(来自行删除)和一个或多个列写入的时间戳最终具有相同的值。Cassandra cli遵循使用毫秒作为时间戳值的常见约定,因此当删除和插入像这样紧随其后时,这是非常可能的 当插入的列和墓碑具有相同的时间戳时,墓碑将获胜。所以你的第一个专栏似乎会消失是有道理的 在这里的例子中,问题可以通过使用显式时间戳写入删除,然后使用该时间戳加上一个时间戳写入其他列来解决。这类事情通常是不必要的,但请记住,这些写入意味着它们中的每一个都可以转到不同的Cassandra节点,用户仍然能够在任何时候获得正确的结果。时间戳是冲突解决机制