卡桑德拉在删除行后不能用昆德拉保存



当我们尝试在Casandra上工作时,我们最近遇到了一个奇怪的问题。我们目前的实现是Cassandra + Spring MVC + Kundera。

问题:我们试图通过EntityManager的persist方法保存对象。但行为是非常不一致的,有时它不保存DB的细节。在检查应用程序日志时,没有错误或异常,而是成功保存。

我们面临的另一个问题是,当试图调试一些测试集时,我们从Casandra删除了一行。然后申请重新插入。但是在多次删除和保存行之后,现在无法显示新的记录。

我的Casandra服务器是在我的机器上运行的单节点服务器。

请建议。

我在重写同一专栏时遇到了类似的事情,简直要把我逼疯了!
一个列在卡桑德拉有一个隐式的时间戳…举个例子

public class Column {  
   private final String key;
   private final String value;
   private final Long timeStamp;
    public Column(String key, String value) {
        this(key, value, System.currentTimeMillis());
    }   
    private Column(String key, String value, Long timeStamp) {
        this.key = key;
        this.value = value;
        this.timeStamp = timeStamp;
    }
    //other methods etc.
}

表示,如果执行以下操作:

Column col = new Column("akey", "avalue");
write(cf, col); 
delete(cf, col);
write(cf, col);

当您完成以下操作时,您希望在cf中找到列,但它不会在那里,因为有一个删除操作,其时间戳高于您试图写入的列时间戳。为了使它工作,你应该再次创建列…

Column col = new Column("akey", "avalue");
write(cf, col); 
delete(cf, col);
Column col_new_timestamp = new Column("akey", "avalue");
write(cf, col_new_timestamp);

HTH,卡洛

最新更新