leveldb-整体架构
前言项目中使用leveldb做为存储,使用过一段时间后,对leveldb进行一个深入的学习,让录本人学习过程中理解。过程中参照网上文章以经实际应用,进行文章输出,如果错漏,还望指正。
整体架构leveldb是一个写性能十分优秀的存储引擎,是典型的LSM树(Log Structured-Merge Tree)实现。LSM树的核心思想就是放弃部分读的性能,换取最大的写入能力。这个很重要,后续深入会发现的leveldb的原理都是基于最大的写入性能去设计的。
LSM树写性能极高的原理,简单地来说就是尽量减少随机写的次数。对于每次写入操作,并不是直接将最新的数据驻留在磁盘中,而是将其拆分成(1)一次日志文件的顺序写(2)一次内存中的数据插入。leveldb正是实践了这种思想,将数据首先更新在内存中,当内存中的数据达到一定的阈值,将这部分数据真正刷新到磁盘文件中,因而获得了极高的写性能(顺序写60MB/s, 随机写45MB/s)。
从图里能看出 LevelDB 主要结构包括:1.内存结构
MemTable
Immutable MemTable 不可变内存结构
2.磁盘文件
Current ...