数据库数据模型、存储架构及语言接口解析
1. 数据库存储架构:LSM树
1.1 LSM树概述
在处理写密集型工作负载时,B树模式有一些显著的变体,如Couchbase的HB + -Trie和Tokutek的分形树索引,它们声称能提供更好的写优化。不过,越来越多的数据库采用了一种从底层就针对写密集型工作负载进行优化的存储架构——日志结构合并(LSM)树。
LSM树旨在优化存储并支持极高的插入速率,同时还能支持高效的随机读取访问。最简单的LSM树由两个索引“树”组成:
- 内存树 :所有新记录插入的接收者。在Cassandra中,这个内存树被称为MemTable;在HBase中,被称为MemStore。
- 磁盘树 :是内存树刷新到磁盘后的副本。在Cassandra中,这种磁盘结构被称为SSTable;在HBase中,被称为StoreTable。
磁盘树文件最初是内存树的时间点副本,会定期合并以创建更大的合并存储,这个合并过程称为压缩。
1.2 LSM树的读写操作
- 写入操作 :LSM架构确保写入操作始终很快,因为它们以内存速度运行。数据传输到磁盘也很快,因为是以追加的批量方式进行,允许快速顺序写入。以Cassandra为例,数据库客户端的写入操作首先应用到CommitLog,然后到MemTable。当MemTable达到一定大小后,会刷新到磁盘创建新的SSTable,刷新完成后,CommitLog记录可以被清除。
- 读取操作
超级会员免费看
订阅专栏 解锁全文
169万+

被折叠的 条评论
为什么被折叠?



