LMDB 是 OpenLDAP 项目开发的嵌入式存储引擎,通过 mmap 实现,提供了 B+Tree 索引,并提供了 Multi Version Concurrent Control, MVCC 功能。
这里简单介绍其使用方法,以及相关的实现。
简介
LMDB 是一个嵌入式存储引擎,与之类似的数据库还有 TokyoCabinet,其主要特性有:
- 基于文件映射 mmap 实现,所有的操作直接访问通过 mmap 映射的内存;
- 将整个虚拟内存通过 B+Tree 维护,可以通过 Cursor 游标进行访问;
- 支持 MVCC 的事务处理,也就意味着支持事务的 ACID 特性;
- 对外提供类似 BerkeleyDB 的 API 接口。
其测试用例或者使用方法可以直接参考源码中的 mtestN.c
文件,大致的调用流程如下。
API
-----> 初始化 <-----
mdb_env_create() 创建一个环境变量,保存了相关的配置信息,可以通过如下接口设置
mdb_env_set_maxreaders()
mdb_env_set_mapsize()
mdb_env_open() 打开文件
-----> 启动事务 <-----
mdb_txn_begin()
mdb_txn_abort()
mdb_txn_commit()
源码解析
其核心的代码在但个文件中维护,大概有 11K 行代码。