Lightning MDB 数据库管理库开源项目

我要开发同款
匿名用户2013年08月18日
51阅读
开发技术C/C++
所属分类数据库相关、NoSQL数据库
授权协议OpenLDAP

作品详情

LMDB是一个超级快、超级小的key-value数据存储服务,是由OpenLDAP项目的Symas开发的。使用内存映射文件,因此读取的性能跟内存数据库一样。其大小受限于虚拟地址空间的大小。

LMDB是基于Btree的数据库管理库,其基于BerkeleyDBAPI进行了松散建模,但已大大简化。整个数据库都显示在内存映射中,并且所有数据提取都直接从映射的内存返回数据,因此在数据提取期间不会发生malloc或memcpy。这样,该库非常简单,因为它不需要自己的页面缓存层,并且具有极高的性能和内存效率。它也具有完全ACID语义的完全事务性,并且当内存映射为只读时,数据库完整性不会被应用程序代码中的杂散指针写入破坏。

该库完全支持线程,并支持来自多个进程和线程的并发读/写访问。数据页使用写时复制策略,因此不会覆盖任何活动数据页,这也可以防止损坏,并且在系统崩溃后无需任何特殊的恢复过程。写入已完全序列化;一次只能有一个写事务处于活动状态,这保证了写程序永远不会死锁。数据库结构是多版本的,因此读取器没有锁运行。作家不能阻止读者,读者也不能阻止作家。

与其他使用预写事务日志或仅追加数据写入的知名数据库机制不同,LMDB在操作期间不需要维护。预写记录器和仅附加数据库都需要定期检查点和/或压缩其日志或数据库文件,否则它们会无限制地增长。LMDB跟踪数据库中的空闲页面,并将它们重新用于新的写操作,因此数据库大小不会随正常使用而增长。

内存映射可以用作只读或读写映射。默认情况下它是只读的,因为它可以完全防止损坏。使用读写模式可提供更高的写入性能,但增加了流浪应用程序通过指针写入以静默破坏数据库的可能性。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论