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.

Explore Capabilities

  • 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
  • Maintenance-free 
    • no external process or background cleanup or compaction required
  • Crash-proof
    • 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.

Comparison Grid

LMDB BDB LevelDB Kyoto TreeDB
ACID compliant
Nested transactions
Multiple namespaces
Sorted keys
Sorted duplicate keys
Multi-thread concurrency
Multi-process concurrency
No cache tuning: zero-config
Instantaneous crash recovery
Zero-copy reads
Zero-copy writes
Atomic hot backup

Support and Documentation

Commercial support, porting and professional services and documentation.

Learn More

Commercial Support

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.

Documentation

Find our documentation on LMDBhere.

Reports, Benchmarks

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.