Hasty Briefsbeta

双语

Lightning Memory-Mapped Database Manager (LMDB) 1.0

10 days ago
  • #Embedded Systems
  • #Database
  • #High Performance
  • LMDB是一个基于B树的嵌入式数据库管理库,提供类似BerkeleyDB的简化API。
  • 它使用内存映射文件进行直接数据访问,避免了获取数据时进行malloc或memcpy的需要,从而实现了高性能和简洁性。
  • 该数据库完全支持事务处理,具有ACID语义,是线程感知的,并支持跨多个进程和线程的并发读写访问。
  • 数据页采用写时复制机制,防止覆盖,确保在系统崩溃后无需特殊恢复即能抵抗损坏。
  • 写入操作被序列化以避免死锁,而读取操作则通过多版本控制实现无锁运行,允许非阻塞的读写并发。
  • 与预写日志或仅追加数据库不同,LMDB无需像检查点这样的维护工作,因为它重用空闲页以防止文件无限增长。
  • 内存映射可以是只读的(以防止损坏)或读写的(用于更高的写入性能,但存在因应用程序代码错误而带来的风险)。
  • 过期的读取事务或损坏的锁文件可能导致问题;解决方法包括使用mdb_reader_check和在BSD系统上处理信号量所有权。