Cassandra:如果在将commitlog刷新到Memtable之前发生更新,将如何处理更新

时间:2018-02-20 02:37:12

标签: java cassandra cassandra-3.0 spark-cassandra-connector

写cassandra的路径:

步骤1 - 立即在commitlog中写入数据。  步骤2 - 满足阈值后,将CommitLog刷新为Memtable  步骤3 - 在Memtable中满足大小阈值后,数据将作为SSTable刷新到磁盘中。

在上述过程中,如果数据在步骤1本身更新,那么它是否需要任何特殊处理。

例如,我们有员工专栏系列。插入10行后,数据开始由程序写入列族,第3行发出更新,静态数据不刷新到Memtable中。

Cassandra会将此方案作为崩溃恢复处理吗?

请分享对此的看法。

1 个答案:

答案 0 :(得分:1)

这是Cassandra的写路径

  1. 如果在创建密钥空间时将durable_writes设置为true,则会将数据附加到Commitlog。
  2. 数据也会立即写入Memtable。
  3. 一旦满足Memtable的阈值,数据就会以SSTable的形式刷新到磁盘中。
  4. 在刷新到磁盘之前发生更新的任何时间内,memtable会捕获更新的记录以及commitlog附加的更新。现在如果发生了崩溃;在重新启动Cassandra期间,所有这些记录都从commitlog重放,因此保证了写入/更新的持久性。

    其他reference