Symas LMDB is an extraordinarily fast, memory-efficient database we developed for the Symas OpenLDAP Project. With memory-mapped files, it has the read performance of a pure in-memory database while retaining the persistence of standard disk-based databases.
An ultra-fast, ultra-compact, crash-proof key-value embedded data store.
In other words, it runs like a bat out of hell, performing several times faster than other DB engines — several orders of magnitude faster in many cases. No buffers or caches needed, no memory copies generated. And it’s only limited to the size of the virtual address space, not to the size of physical RAM.
Bottom line, with only 32KB of object code, LMDB may seem tiny. But it’s the right 32KB. Compact and efficient are two sides of a coin; that’s part of what makes LMDB so powerful.
- Ordered-map interface
- keys are always sorted; range lookups are supported
- Fully-transactional, full ACID semantics with MVCC
- Reader/writer transactions
- readers don’t block writers; writers don’t block readers
- Fully serialized writers
- writes are always deadlock-free
- Extremely cheap read transactions
- can be performed using no mallocs or any other blocking calls
- Multi-thread and multi-process concurrency supported
- Environments may be opened by multiple processes on the same host
- Multiple sub-databases may be created with transactions covering all sub-databases
- Memory-mapped, allowing for zero-copy lookup and iteration
- no external process or background cleanup or compaction required
- no logs or crash recovery procedures required
- No application-level caching
- LMDB fully exploits the operating system’s buffer cache
- 32KB of object code and 6KLOC of C
- Licensed under the OpenLDAP Public License
How It Compares
Here’s a quick comparison of other embedded key value stores.
|Sorted duplicate keys||✔||✔|
|No cache tuning: zero-config||✔|
|Instantaneous crash recovery||✔|
|Atomic hot backup||✔|
Support and Documentation
Commercial support, porting and professional services and documentation.
Symas offers fixed-price commercial support to those using LMDB in your applications. Please contact us for additional information.
Porting and Professional Services Support
We will be happy to provide developer support or porting services to help you transition your application to LMDB. Contact us here.
Find our documentation on LMDBhere.
Project presentations on LMDB have been generating excitement across the US and Europe since 2011. Explore the reports to learn more. We also welcome you to explore the project benchmarks.
Role in Outside Projects
LMDB is available for use outside projects. In fact, it’s played a role in helping over 50 other projects realize their potential, including OpenLDAP, Monero, SQLite3, and FineDB.
Wrappers for Other Languages
The compact LMDB code can easily be called from over 20 other languages using their respective wrappers.