Cassandra如何处理并发更新?
Cassandra如何处理多个用户对同一密钥的并发更新?Cassandra是否遵循ACID的“隔离”属性?Cassandra为行级更新提供原子性和隔离保证。你可以在数据报上读到更多关于它的信息 虽然不是真正的ACID兼容,但Cassandra强制执行行级别: 例如,如果一个用户正在编写一个包含两千列的行, 另一个用户可能会读取同一行,并看到一些 列,但如果写入仍在进行中,则不是所有列 全行级隔离已经到位,这意味着写入一行 对执行写操作的客户端是隔离的,对客户端不可见 任何其他用户,直到他们完成Cassandra如何处理并发更新?,cassandra,acid,Cassandra,Acid,Cassandra如何处理多个用户对同一密钥的并发更新?Cassandra是否遵循ACID的“隔离”属性?Cassandra为行级更新提供原子性和隔离保证。你可以在数据报上读到更多关于它的信息 虽然不是真正的ACID兼容,但Cassandra强制执行行级别: 例如,如果一个用户正在编写一个包含两千列的行, 另一个用户可能会读取同一行,并看到一些 列,但如果写入仍在进行中,则不是所有列 全行级隔离已经到位,这意味着写入一行 对执行写操作的客户端是隔离的,对客户端不可见 任何其他用户,直到他们完成
对于由不同协调器节点处理的竞争写入,每个列值都包含一个写入时间值,该值指示写入的时间。这可确保最近对列的写入占用单元格。换言之,“最后一次写入成功。”如果分区内同一行上同时发生两次更新,并且在写入更新之前读取更新,会发生什么情况?Cassandra的行级隔离是否确保这两个请求的更新是正确的?如果是的话,你能提到卡桑德拉是如何做到这一点的吗?@YugSingh首先,读写操作是已知的卡桑德拉反模式。原因是您读取的值可能会在写入执行之前更改。由于行仅与客户端隔离,因此不会锁定或验证更新的“正确性”。在所有更新完成之前,更新行上多个列的客户端应用程序的写入操作对其他任何人都不可见。如果两个客户端在同一行上执行多个列写入,则最新的写入时间戳(每列)将确定主要值。