Cassandra并发行更新

时间:2017-01-17 20:17:50

标签: cassandra fwrite

Cassandra如何保证列被排序以便将多个并发列插入到一个宽行?据我所知,Cassandra没有排锁。

1 个答案:

答案 0 :(得分:1)

在Cassandra中,写入在行级别是原子的,这意味着插入或更新行中的列将被视为一次写入操作。

Cassandra不支持将多行更新捆绑到一个全有或全无操作中的事务。在Cassandra中,写操作报告可能会导致客户端失败,但实际上会将写入持久保存到副本中。

考虑到插入实际上大部分时间是在内存操作中,因此保持单个分区(行)排序并插入它是相对简单的并且以“redis like”速度完成。

如果同时存在多个列,Cassandra会使用时间戳来确定列的最新更新。

对于在内存中发生的操作,旧条目将被忽略。

时间戳由客户端应用程序提供或在协调器节点处设置。最新的时间戳总是在请求数据时获胜,因此如果多个客户端会话同时更新一行中的相同列,则最新的更新将最终持续存在。

如果您有兴趣,可以浏览一下:

https://github.com/apache/cassandra/blob/b02dec3da539d181544cfb0288102d6073f36264/src/java/org/apache/cassandra/db/Memtable.java#L262