具有相同时间戳的混合行更新的冲突解决方案

时间:2012-03-07 13:39:25

标签: cassandra

这在我之前的帖子中没有重复 - 现在我想集中精力进行混合行更新。

两个客户端在由同一个密钥(RowARowB标识的两行上发送更新。行保持在同一列族中。这两个请求都具有相同的时间戳

  • 客户端1发送插入:RowA:{col:"valA1"}, RowB:{col:"valB1"}
  • 客户端2发送插入:RowA:{col:"valA2"}, RowB:{col:"valB2"}

此类更新的结果是什么?

客户端是否可能获胜,因为我们在同一列系列中有更新?

是否可以使用混合结果 - 例如RowA:{col :"valA1"}, RowB:{col:"valB2"}

是否可以预测此类更新的结果?

1 个答案:

答案 0 :(得分:1)

如果同一行/列的两个写入具有相同的时间戳,则通过比较列的字节值来打破平局,有关详细信息,请参阅CASSANDRA-1039

在上面给出的示例中,client2的写入将获胜,因为客户端2正在写入大于客户端1的byte []的值。

正如其他人所指出的,这写,

RowA:{col:"valA1"}, RowB:{col:"valB1"}

与两次写入相同,

 RowA:{col:"valA1"}
 RowB:{col:"valB1"}