【发布时间】:2017-01-17 20:17:49
【问题描述】:
Cassandra 如何保证对多个并发列插入到宽行中的列进行排序?据我所知,Cassandra 没有行锁。
【问题讨论】:
Cassandra 如何保证对多个并发列插入到宽行中的列进行排序?据我所知,Cassandra 没有行锁。
【问题讨论】:
在 Cassandra 中,写入在行级别是原子的,这意味着在一行中插入或更新列被视为一次写入操作。
Cassandra 不支持将多行更新绑定到一个全有或全无操作的事务。在 Cassandra 中,可能会有写入操作向客户端报告失败,但实际上会将写入持久化到副本。
考虑到插入实际上大部分时间是内存中的操作,因此保持单个分区(行)排序并插入到它相对简单,并且以“类似 redis”的速度完成。
Cassandra 使用时间戳来确定列的最新更新(如果同时有多个更新)。
对于发生在内存中的操作,旧条目将被简单地忽略。
时间戳由客户端应用程序提供或在协调节点处设置。请求数据时总是以最新的时间戳为准,因此如果多个客户端会话同时更新同一行中的相同列,则最新的更新将最终持续存在。
如果您有兴趣,可以深入了解一下:
【讨论】: