Cassandra Db中隔离的理解

Understanding of Isolation in Cassandra Db

根据 Cassandra docs Cassandra 中的隔离提供行级隔离。这意味着对单个节点上单个分区内的行的 write 仅对执行该操作的客户端可见。

现在我假设在 cassandra 文档中写它们意味着插入和更新。

我的问题是:

考虑这样一种情况,我正在更新一行,同时其他用户也在更新同一行。现在由于 Cassandra 提供的隔离保证,我们无法确定更新行的最终状态。

根据上述说法,我对Cassandra db中的Isolation的理解是否正确?

隔离意味着在更新期间阅读时,人们要么看到对该行应用的整个更新,要么 none。即,如果行中有 agefavorite_color 列,并且它们正在更新这两列,则阅读者将看到整个旧版本或整个新版本。他们不会将 age 视为旧值,将 favorite_color 视为新版本。

writes to a row [...] are not visible to any other user until they are complete

为了防止两个更新器同时写入的竞争条件是一个不同的问题,可以通过轻量级事务(使用 paxos 轮写入前读取)来解决,其中只有一个写入 "win" 而另一个查询将报告未应用。