当我们尝试在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,卡洛