1.文件结构(主要的几个目录)
db | 数据库一些接口实现,版本管理,比较器,日志等实现 |
port | 存放一些移植相关的文件 |
include | 函数库的头文件 |
util | 一些功能函数 |
table | sstable实现 |
helpers | 底层全内存环境的实现 |
issues | 一些测试 |
2. 整体层次
内存中为memtable,到一定数量会变成immutable memtable(不可写)往磁盘存,磁盘上的level会按一定规则进行归并。
介绍:
memtable:内存中的map,可以使用get和put来操作
wal:write ahead log,日志,做异常恢复
sstable:sort string table ,按照key的顺序存储在磁盘上,key有序,且多了后会合并成一个大的sstable保证查找效率,写效率通过非原地更新(即写入新的,不查找然后更新老的)来实现顺序写,提高效率。
manifset:元数据,记录当前数据有哪些sstable,这些sstable属于那一层,每个sstable的基本信息(key的范围,文件大小等)
current:记录了当前使用的manifset是哪一个
3. 接口文件基本介绍(include中)
c.h | 实现c语言相关接口,extern "C" |
cache.h | 缓存相关,实现LRU |
comparator.h | 比较器接口 |
db.h | 数据库操作接口 |
dumpfile.h | 读取文件导出 |
env.h | 操作文件接口,如读写等 |
export.h | 导出相关,不同操作系统不同导出定义 |
filter_policy.h | 布隆过滤器接口 |
iterator.h | 迭代器接口 |
options.h | 配置定义 |
slice.h | 字符串接口 |
status.h | 操作状态定义 |
table_builder.h | SSTable构造 |
table.h | SSTable接口 |
write_batch.h | 批量写入接口 |