lmdb是openLDAP项目开发的嵌入式(作为一个库嵌入到宿主程序)存储引擎。其主要特性有:

基于文件映射IO(mmap)

基于B+树的key-value接口

基于MVCC(Multi Version Concurrent Control)的事务处理

类bdb(berkeley db)的api实现底层读写的实现

lmdb的基本思路是使用mmap访问存储,不管这个存储实在内存上还是在持久存储上。

lmdb的所有读取操作都是通过mmap将要访问的文件只读地装载到宿主进程的地址空间,直接访问相应的地址,这减少了硬盘、内核地址控件和用户地址空间之间的拷贝,也简化了平坦的“索引空间”上的实现,因为使用了read-only的mmap,规避了因为宿主程序错误将存储结构写坏的风险。IO的调度由操作系统的页调度机制完成。