学习 Cassandra(七):数据结构

SLM-Tree(Log Structured Merge Tree 日志结构合并树),是 Apache HBase 和 Apache Cassandra 使用的数据结构。

步骤

SLM-Tree 核心思想是:增量数据保存在内存中(优化写性能),在达到阈值时写入到硬盘,硬盘中的历史数据定期执行合并操作(优化读性能)

对于 Cassandra 来说,数据写入步骤如下:

  1. 记录数据到 commit log
  2. 写入数据到 memtable
  3. 将 memtable 中的数据刷到 SSTable
  4. SSTable 合并

如下图所示:

SLM Tree

Commit log 故障恢复

当向 Cassandra 写入数据时,Cassandra 会先将数据追加到硬盘的 commit log 中。这样,当 Cassandra 从故障中恢复,通过重播 commit log,即可恢复之前 memtable 的数据。

内存缓存 memtable

硬盘存储 SSTable

SSTable 合并策略

参考