Cassandra更新$ add订购问题

时间:2019-02-13 10:02:16

标签: node.js asynchronous cassandra datastax express-cassandra

我正在将Express Cassandra与node和kafka一起使用,以使用事件数据。在事件表中第一次插入之后,我使用带有$ add指令的update来更新本质上属于文本列表的选定列。

我面临的问题是,对于表中插入后的后续更新,有时ACROSS列的顺序不匹配。也就是说,假设我的两个更新如下

在t0更新1 {列1:$ add {A},第2列:$ add {B},第3列:$ add {C}} 在t1时更新2 {列1:$ add {D},第2列:$ add {E},第3列:$ add {F}}

实际上预期的行为是这样

第1列

第2 BE BE

第3列CF

如果在t1和t0之间存在一定的时差,则实际上会发生这种情况,但是当该时差非常小时,顺序会不匹配,例如

第1列

第2列EB

第3列CF

我对ABC <->与CDE互换表示满意,但是我希望原子样式一次更新所有列表

不确定为什么有效负载内会发生交换。这意味着如果我要使用索引读取数据,我将有效地将有效负载2中的数据映射到有效负载1中。

当我通过nodetool flush在sstable aftter刷新中进一步诊断出此问题时,我看到SStable中数据的时间戳实际上是正确的,并保持了预期的顺序,只是cqlsh报告数据是无序的,因此检索将意味着无序数据。

如有任何见解,评论,请帮助我。我将非常感谢;

0 个答案:

没有答案