一、LevelDB简介

LevelDB不同于关系型数据库,他内部的数据全部以KV形式存储,不支持SQL,只支持API调用。

LevelDB是个noSQL的数据库引擎,由google开发并开源,由C++编写。Facebook在此基础上推出了RocksDB,后来包括TiDB等多种分布式noSQL数据库底层都是基于LevelDB。

二、LevelDB架构

LevelDB 底层原理学习笔记
首先上层是MemTable, Immutable MemTable。MemTable本质上就是个存放在内存中的SkipList数据结构。

Immutable MemTable本质上也是MemTable,ImmuTable是不可修改的意思:当MemTable中的内容超过阈值时,需要将其中的内容写到一个SSTable文件,ImmuTable MemTable就是这时候用的。

当一个MemTable在开始执行持久化之前,会先转化成ImmTable MemTable,可以认为是加上了不可修改的限制。另外,会再新建一个新的MemTable,用于维持服务。之后再将ImmuTable MemTable写入SSTable文件。

相关文章: