LMDB stores arbitrary key/data pairs as byte arrays, has a range-based search capability, supports multiple data items for a single key and has a special mode for appending records (MDB_APPEND) without checking for consistency.
LMDB's design was first discussed in a 2009 post to the OpenLDAP developer mailing list,[2] in the context of exploring solutions to the cache management difficulty caused by the project's dependence on Berkeley DB.
Most former modern computing architectures had a 32-bit memory address space, imposing a hard limit of 4 GB on the size of any database that directly mapped into a single-level store.
Writers scan the array to determine the oldest database version the transaction must preserve without requiring direct synchronization with active readers.
In 2011, Google published software that allowed users to generate micro-benchmarks comparing LevelDB's performance to SQLite and Kyoto Cabinet in different scenarios.
Avoiding overwrites means the structure on disk/storage is always valid, so application or system crashes can never leave the database in a corrupted state.
Even with all asynchronous modes enabled, it is only an OS catastrophic failure or hardware power-loss[21] event rather than merely an application crash that could potentially result in any data corruption.
Two academic papers from the USENIX OSDI Symposium[22] covered failure modes of DB engines (including LMDB) under a sudden power loss or system crash.
[25] The Mai Zheng et al. paper claims to point out failures in LMDB, but the conclusion depends on whether fsync or fdatasync is utilised.
Author Howard Chu clarified that LMDB is part of the OpenLDAP project, which had its BSD-style license before he joined, and it will stay like it.
[38] There are wrappers for several programming languages, such as C++,[39][40] Java,[41] Python,[42][43] Lua,[44] Rust,[45][46] Go,[47] Ruby,[48] Objective C,[49] Javascript,[50] C#,[51] Perl,[52] PHP,[53] Tcl[54] and Common Lisp.
[58] LMDB is available as a backing store for other open source projects including Cyrus SASL,[59] Heimdal Kerberos,[60] and OpenDKIM.
[68] Many popular free software projects distribute or include support for LMDB, often as the primary or sole storage mechanism.
LMDB makes novel use of well-known computer science techniques such as copy-on-write semantics and B+ trees to provide atomicity and reliability guarantees as well as performance that can be hard to accept, given the library's relative simplicity and that no other similar key-value store database offers the same guarantees or overall performance, even though the authors explicitly state in presentations that LMDB is read-optimised not write-optimised.
The developers limited time spent presenting the first benchmark results was therefore criticized as not stating limitations and for giving a "silver bullet impression" not adequate to address an engineers attitude[79] (it has to be pointed out that the concerns raised however were later adequately addressed to the reviewer's satisfaction by the key developer behind LMDB.
The conclusion was in the lines of "impressive codebase ... dearly needs some love", mainly because of too long methods and code duplication.