2

我只是在我创建的列族上运行了一些简单的测试(插入和删除)。我观察到,虽然针对行键插入新列,但最近删除的列没有插入。

例如:

rowkey1 :: name1-val1
                 name2-val2

删除name1后,如果我再次尝试插入它,我仍然得到

rowkey1 :: name2-val2 并且不会恢复为 name1-val1、name2-val2。

当我尝试通过我的代码插入它时出现问题(使用 Pelops Java 客户端)以下是我用于插入的代码片段:

            Mutator mutator = Pelops.createMutator("poolname");
            Column column = new Column(bufcolname);
            column.setValue(bufcolval);
            column.setTimestamp(new Date().getTime());
            mutator.writeColumn("MyColumnFamily",userId, column);
            mutator.execute(ConsistencyLevel.ONE);

谢谢

4

1 回答 1

5

这很可能是时间戳问题。

如果写入冲突,cassandra 使用时间戳来决定获胜者。在上面的代码中,您使用毫秒设置时间戳,但按照惯例,cassandra 使用微秒为单位的时间戳

时间戳可以是任何你喜欢的,但自 1970 年以来的微秒是一个惯例。

因此,您的删除可能使用微秒的时间戳,该时间戳大于您添加的 ms 时间戳,因此添加将始终被删除所掩盖。

于 2012-10-08T17:25:56.783 回答