LMDB 详细介绍

2022-09-19 database

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 行代码。