我正在将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报告数据是无序的,因此检索将意味着无序数据。
如有任何见解,评论,请帮助我。我将非常感谢;