根据cassandra文档,cassandra中的隔离提供了行级隔离。这意味着对单个节点上单个分区内的行的写操作仅对执行该操作的客户端可见。现在我假设在cassandra docs by write中,它们意味着插入和更新。我的问题是:考虑这样一个场景:我正在更新一行,同时其他用户也在更新同一行。现在由于cassandra提供的隔离保证,我们无法确定更新行的最终状态。我对cassandra db中隔离的理解是否正确?
gjmwrych1#
隔离意味着在更新过程中读取时,人们会看到对该行应用的整个更新,或者看不到任何更新。如果有 age 以及 favorite_color 列,并且他们正在更新这两列,有人在阅读时会看到整个旧版本,或者整个新版本。他们看不见 age 作为旧价值和 favorite_color 作为新版本。对行[…]的写入在完成之前对任何其他用户都不可见为了防止两个更新程序同时写入的竞争情况是一个不同的问题,可以通过轻量级事务(使用paxos round先读后写)来解决,其中只有一个写入将“获胜”,而另一个查询将报告它未被应用。
age
favorite_color
1条答案
按热度按时间gjmwrych1#
隔离意味着在更新过程中读取时,人们会看到对该行应用的整个更新,或者看不到任何更新。如果有
age
以及favorite_color
列,并且他们正在更新这两列,有人在阅读时会看到整个旧版本,或者整个新版本。他们看不见age
作为旧价值和favorite_color
作为新版本。对行[…]的写入在完成之前对任何其他用户都不可见
为了防止两个更新程序同时写入的竞争情况是一个不同的问题,可以通过轻量级事务(使用paxos round先读后写)来解决,其中只有一个写入将“获胜”,而另一个查询将报告它未被应用。