Transactions 在Cassandra中混合轻量级事务和正常写入
轻量级事务状态的 轻量级事务使用不同于正常操作的时间戳机制,混合LWT和正常操作可能会导致错误。如果轻量级事务用于写入分区内的行,则只能使用读写操作的轻量级事务 这是非常模糊的(顺便说一句,对于读取操作来说,LWT是什么意思?) 如果有人对卡桑德拉的内部结构有更深入的了解,他能否详细说明混合LWT和普通写入时可能出现的问题Transactions 在Cassandra中混合轻量级事务和正常写入,transactions,cassandra,compare-and-swap,Transactions,Cassandra,Compare And Swap,轻量级事务状态的 轻量级事务使用不同于正常操作的时间戳机制,混合LWT和正常操作可能会导致错误。如果轻量级事务用于写入分区内的行,则只能使用读写操作的轻量级事务 这是非常模糊的(顺便说一句,对于读取操作来说,LWT是什么意思?) 如果有人对卡桑德拉的内部结构有更深入的了解,他能否详细说明混合LWT和普通写入时可能出现的问题 我最好的猜测是并发性可能有问题(显然)。但是我认为如果我(例如)使用if NOT EXISTS插入一行,如果成功的话,我稍后会更新同一分区的UPDATE,我就可以了。我错了吗
我最好的猜测是并发性可能有问题(显然)。但是我认为如果我(例如)使用
if NOT EXISTS
插入一行,如果成功的话,我稍后会更新同一分区的UPDATE
,我就可以了。我错了吗?我同意文件中关于LWT约束的内容不太准确,所以让我澄清一下:
- 如果使用
,所有删除也应使用插入。。。如果不存在
删除。。。如果存在
- 如果使用
则column1和column2上的所有更新/插入也应使用LWT。常见用法是列1和列2是同一列更新表集column1=val1,其中column2=val2
如果不存在
,如果存在
或如果col=val
)。如果不满足条件,请在此处失败插入
,更新
或删除
)INSERT。。。如果不存在
,然后在没有LWT的情况下简单地删除,则会破坏LWT的目的,LWT担保不再适用
由于比较阶段(步骤2)和提交阶段(步骤4)处于不同的步骤中,因此提供原子性的唯一方法是强制其他突变通过LWT,否则逻辑会被破坏
对于LWT的条件更新也有相同的注释。关于分区中这组列的LWT读取的注释如何?其思想是,如果使用LWT,在读取成功之前,写入不会将结果返回给执行写入的客户端。因此,这意味着使用非LWT的读取不会对比较和设置阶段发生的操作产生影响,对吗?