Cassandra删除行后无法与Kundera一起保存

时间:2014-07-28 12:02:24

标签: cassandra kundera

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

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

我们面临的另一个问题是,在尝试调试某些测试集时,我们从Casandra中删除了一行。并使应用程序重新插入它。但是多次删除并保存行后,现在它无法显示新记录..

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

请建议。

1 个答案:

答案 0 :(得分:0)

在重写同一专栏时,我遇到了类似的事情,这让我抓狂! Cassandra中的一个列有一个隐含的时间戳...只是为了做一个例子

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, 卡罗