LMDB简介

【LMDB】Lightning Memory-Mapped Database,快如闪电的内存映射数据库。它的文件结构简单,包含一个数据文件和一个锁文件。

【优势】

  1. LMDB文件可以同时由多个进程打开,具有极高的数据存取速度,访问简单,不需要运行单独的数据库,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可
  2. 让系统访问大量小文件的开销很大,而LMDB使用内存映射的方式访问文件,使文件内寻址的开销非常小,使用指针运算就能实现
  3. 数据库单文件还能减少数据集复制/传输过程的开销
  4. LMDB是一款开源高速快速的内存映射数据库,由C语言编写,基于B+树索引,支持MVCC事物处理
  5. 它不是一个需要独立运行的数据库管理进程,只要在需要访问lmdb数据库的代码里引用lmdb库,给出数据库所在目录,就能方便地实现读写lmdb数据库

相关资料

  1. LMDB源码地址

函数说明

  1. int mdb_env_create(MDB_env **env); //为env分配内存,成功返回0
  1. int mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode);
  1. path为数据文件所在目录
  2. flags
    1. MDB_FIXEDMAP:map区域使用固定地址
    2. MDB_NOSUBDIR
  1. // 笔记:创建新数据库
  2. E(mdb_env_set_maxdbs(env, 4));
  3. E(mdb_env_open(env, "D:/Cpp3D/[3]LMDB/db", MDB_FIXEDMAP /*|MDB_NOSYNC*/, 0664));
  4. E(mdb_dbi_open(txn, "newDb", MDB_CREATE, &dbi));