在尝试使用Casandra时,我们最近遇到了一个奇怪的问题。 我们目前的实现是Cassandra + Spring MVC + Kundera。
问题::我们试图通过EntityManager的persist方法保存对象。但是行为非常不一致,有时它没有保存DB的细节。在检查应用程序日志时,没有错误或异常,而是成功保存。
我们面临的另一个问题是,在尝试调试某些测试集时,我们从Casandra中删除了一行。并使应用程序重新插入它。但是多次删除并保存行后,现在它无法显示新记录..
我拥有的Casandra服务器是在我的机器上运行的单节点服务器。
请建议。
答案 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, 卡罗