一、LevelDB简介
LevelDB不同于关系型数据库,他内部的数据全部以KV形式存储,不支持SQL,只支持API调用。
LevelDB是个noSQL的数据库引擎,由google开发并开源,由C++编写。Facebook在此基础上推出了RocksDB,后来包括TiDB等多种分布式noSQL数据库底层都是基于LevelDB。
二、LevelDB架构

2.1、内存中的MemTable和ImmuTable MemTable
首先上层是MemTable, Immutable MemTable。MemTable本质上就是个存放在内存中的SkipList数据结构。
Immutable MemTable本质上也是MemTable,ImmuTable是不可修改的意思:当MemTable中的内容超过阈值时,需要将其中的内容写到一个SSTable文件,ImmuTable MemTable就是这时候用的。
当一个MemTable在开始执行持久化之前,会先转化成ImmTable MemTable,可以认为是加上了不可修改的限制。另外,会再新建一个新的MemTable,用于维持服务。之后再将ImmuTable MemTable写入SSTable文件。
理解MemTable和ImmuTable MemTable,打个比方:MemTable就好像是收银台里的收银柜,当收银柜中的钱快满的时候,需要把里面的钱存到银行,但此时顾客还在不断的付钱,不能停掉他。所以那出一个新的收银柜来收钱,把原来的收银柜锁上后,把收银柜一起送到银行。MemTable就好比是MemTable, 加锁后变成了ImmuTable MemTable。

最低0.47元/天 解锁文章
3034

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



