Sto*_*ica 11 transactions cassandra datastax-java-driver
特别是我在看这个页面时说:
如果使用轻量级事务来写入分区中的行,则只应使用读取和写入操作的轻量级事务.
我很困惑使用LWT进行读取操作的样子.具体来说,这与每个查询的一致性(和serialConsistency)级别有何关联.
该说明对SERIAL读一致性提出了进一步的问题:
允许读取当前(可能未提交)的数据状态,而无需提出新的添加或更新.
这表明SERIAL用于读取不是"使用LWT".
但是之后
ONE)小于用于写作的serialConsistency,那该怎么办?SERIAL读取都被迫接受参与仲裁和交易算法的惩罚?如果我忽略这个建议并进行串行和非串行读/写.LWT以什么方式失败?
Ste*_*ski 10
当您阅读时,Cassandra如何知道检查正在进行的交易?
这正是SERIAL一致性级别所指示的内容.它确保查询仅在完全执行所有挂起事务后返回结果.
在您尝试阅读时提出的新更新是什么,这对读取有何影响?
我认为文档试图说的是读取将像LWT一样处理 - 只是没有对它自己进行任何更新.
如果您正在阅读的一致性(比如说一个)小于用于写作的serialConsistency,那该怎么办?
使用读取SERIAL总是意味着QUORUM一致性水平.阅读并ONE不能为您提供任何保证SERIAL,您最终可以阅读停滞不前的数据.
一旦你在一个表(或行?或列?)上使用LWT,是否所有非SERIAL读取都被迫接受参与仲裁和交易算法的惩罚?
不可以.您可以对查询使用非SERIAL一致性级别,并使用与任何其他非串行查询完全相同的性能特征执行它们.
请求是否实际应用于整行,或仅适用于条件语句中涉及的列?
不,我认为只要您使用不同的列进行串行读/写(包括条件)和常规读/写,您就应该没问题.
如果我忽略这个建议并进行串行和非串行读/写.LWT以什么方式失败?
如果执行常规写入,而不是作为LWT的一部分执行,则这些写入将在任何时候应用,而不会干扰LWT的共识过程.因此,理论上,常规写入可以在评估条件和应用更新之间的某个时间更改作为LWT条件一部分的值,这可能是您希望避免使用LWT的不一致的原因.
| 归档时间: |
|
| 查看次数: |
2356 次 |
| 最近记录: |