我读过关于lightweight-transaction的Cassandra文章,我想我已经理解了Paxos是如何工作的。
我理解,使用Paxos,CAS(比较和设置)得到线性化; Paxos算法用于确定接受哪个CAS。 (CAS操作用作Paxos算法的“值”)
我的问题是,如果对同一个主键执行INSERT轻量级事务和普通INSERT语句会发生什么?
根据我的理解,正常的INSERT操作不会使用Paxos的功能,因此如果与LWT一起使用,会发生不希望的事情。
我说错了吗?如果是这样,会发生什么?如果没有,如何处理正常的INSERT?
答案 0 :(得分:2)
不建议对同一个表使用常规插入和CAS操作。有可能会不按顺序执行常规插入,这是您尝试阻止使用paxos的原因。
读取也是如此。对使用CAS更新的表的任何读取都必须使用SERIAL
一致性级别,以确保始终可以看到最后一次CAS操作的结果。使用SERIAL
将使用paxos和任何更新协调查询执行,从而防止乱序执行。