Symas LMDB has been written about, talked about, and utilized in a variety of impressive products and publications over the years. We invite you to learn more below.
2012-09 Some microbenchmarks comparing it to other embedded databases are here. The tests compare OpenLDAP LMDB against Google LevelDB, SQLite 3, Kyoto Cabinet, and BerkeleyDB. The tests were conducted against multiple filesystems, including btrfs, ext2, ext3, ext4, jfs, ntfs, xfs, and zfs. LMDB is several orders of magnitude faster than everything else for reads, while also being several times smaller. Surprisingly, while LMDB’s focus is read speed, it is also decently fast for writes, and unmatched for bulk load speed.
2013-05 Further testing using Memcached can be seen here. The tests compare LMDB against BerkeleyDB, MySQL 5.6 InnoDB, and pure-memory Memcached. Again, LMDB is multiple orders of magnitude faster than other disk-based storage engines, and is even faster than the pure-memory Memcached in multi-threaded workloads.
2013-05 Tests comparing the read performance of LMDB to BerkeleyDB in OpenLDAP here.
2013-08 A benchmark with HyperDex, using both its original LevelDB-based backend, and with LMDB, is now available here.
2013-09 Additional tests with HyperDex are available here. These tests are longer duration and with smaller records, showing some areas where LMDB is weaker.
2013-11 LDAP server benchmarks showing OpenLDAP using LMDB and BDB, as well as most of the major open source and proprietary directory servers were presented at LDAPCon 2013. Products tested included OpenDJ, 389DS, ApacheDS, and servers from Microsoft, CA, Oracle, and Novell. None of the others are anywhere near as efficient as OpenLDAP on LMDB. The slides are available on here.
2014-06 A benchmark with RocksDB and other LevelDB-based engines on In-Memory workloads is available here.
2014-09 Scalability testing for In-Memory workloads, building on the previous tests here.
2014-11 Scalability testing for On-Disk workloads, across a varying range of data sizes here.
2015-02 In-memory testing using different malloc libraries here.
2015-02 In-memory testing using different compression libraries here.
2018-08 Testing on Intel Optane NVMe SSDs here.
2018-09 More testing on Intel Optane NVMe SSDs, using Intel Memory Drive Technology here.
Symas LMDB Tech Info
Project presentations on LMDB have been generating excitement across the US and Europe since 2011.
This library was first presented at the LDAPCon in October 2011: Paper, Slides.
It was also presented to the BayLISA User Group in February 2012.
An updated presentation was given at the UKUUG Spring 2012 Conference in March 2012. The paper and presentation are also available here: Paper, Slides.
It was presented again at the Ubuntu Developer Summit in May 2012 with more adoption.
The talk at LinuxCon North America in August 2012 is now online here: Paper, Slides.
The talk at LinuxCon Europe on November 7 2012 is now online here: Slides. This talk goes into greater detail about how LMDB works and gives examples so developers can quickly get going with LMDB.
The LinuxCon talk was presented again at the Dublin University Internet Society on March 20, 2013.
The talk at Devoxx France in Paris March 29, 2013 is online here: Slides, Video.
The talk at LOADAYS in Antwerp April 6-7 2013 is online here: Slides.
Meetings were held at the Linux Foundation Collaboration Summit in San Francisco April 15-17 2013 to work with other projects on adopting LMDB.
Researchers from the University of Wisconsin studied application crash-consistency of a number of systems including LMDB. Their preliminary report from Spring 2014 is here and the final report was presented at the Usenix OSDI conference October 2014. They report finding a single reliability flaw in LMDB but further discussion shows the flaw is not real.
Researchers from HP Labs and Ohio State University also conducted reliability tests of LMDB and presented their results at Usenix OSDI. Again, they report a single flaw in LMDB, but it’s confirmed to be a filesystem bug.
The talk at BuildStuffLT in Vilnius November 20 2014 is online here: Slides.
LMDB was presented at QCon London on March 5 2015, that talk is online here: InfoQ.com.
A technical introduction to LMDB was presented at the SNIA Storage Developer Conference in Santa Clara, September 21, 2015: SNIA SDC
LMDB was presented as part of the Databaseology lecture series at Carnegie-Mellon University, October 8, 2015: CMU.
Beyond the LMDB backend for OpenLDAP slapd (back-mdb), LMDB has also been leveraged in the following open source projects. We’re proud that LMDB plays a role in helping these projects realize their potential.
Note, because it’s so easy to modify BerkeleyDB-based projects to use LMDB instead, the list of BerkeleyDB-based adaptations is growing quickly. Aside from just improving existing projects though, many new projects have been
launched specifically around LMDB.
Cyrus SASL (Available on github)
Heimdal Kerberos (Full support in 7.x and higher)
SQLite3 (available on Github)
OpenDKIM Domain Keys Identified Mail, integrated since version 2.6.0
MemcacheDB Tests with memcachetest shows that LMDB is several times faster than BerkeleyDB
Thrift-based storage server; test results are available using the Yahoo! Cloud Serving Benchmark (YCSB)
Replicant (A replicated state machine manager for HyperDex. Source code available on Github)
HyperDex (A reliable and fast NoSQL server (distributed key/value store). Source code available on Github)
SQLite4 (Coming eventually)
Postfix (Fast and secure email server; support integrated since 2.11)
IT infrastructure automation framework; default backend as of 3.6.0
Near-realtime disk persistence Second strike with Lightning, code on Github
A redis-protocol compatible persistent storage server; available on Github
High performance analysis of behavioral data; formerly used LevelDB but switched to LMDB due to concurrency and performance issues in LevelDB
A new high-performance noSQL database built on LMDB
An Authoritative DNS server written in C++; delivering Very High Performance using LMDB
A column oriented, embarrassingly distributed relational NoSQL database
A client/server file backup system
Distributed service discovery and configuration
Backup Archiving REcovery Open Sourced. Integrated in 14.2
Deep learning / computer vision / neural network
Cache driver for perl
Another redis clone, written in go
Distributed, versioned, image-oriented datastore
Building block for distributed storage systems
A distributed time series database
Another graph DB on LMDB
A Bitcoin client on LMDB
Another Bitcoin blockchain implementation built on LMDB
An Apache authentication module
Another time series database built on LMDB
Fast persistent queues for .Net
Another graph database on LMDB
Full text indexer in python, using LMDB
A fast and lightweight graph database in python
Persistence for the ngraph graphing library
Key value store for JSON / REST
A key value store abstraction layer for node.js
Scala library implementing an item-based recommandation engine
A tutorial/demo NoSQL database on LMDB
A redis clone written in perl
An LMDB backend for the Raft consensus protocol
The core of the Paxos consensus protocol
Privacy-aware cloud-mobile database
A fast and flexible system for deep learning
High-performance authoritative-only DNS server
Large, persistent, memcached values and structure sharing for Haskell
Raft-based consensus, embedded and programmable database for building distributed databases
A Durable HTTP Key-Value Pair Database
Distributed SQL database with linear scalability
A GUI manager for various NoSQL databases
Powerful, fast, and an easy to use search engine
The compact LMDB code can easily be called from other languages using their respective wrappers. All of these wrappers were developed by third parties. If you need assistance with them, we can work with you and the wrapper authors as needed.
Erlang Source code available on Github, developed for use with Riak but suitable for other Erlang apps as well
C++ Source code available here
C++11 (newer than the above) Source code available on Github
Python Source code available on Github
Python (alternative option) Source code available on Github
Lua Source code available on Github
Ruby Source code available on Github
Go Source code available on Github
Go (another impl) Source code available on Github
Objective C Source code available on Github
Node.js Source code available on Github
Java (using HawtJNI) Source code available on Github
Java (using JNR) Source code available on Github
.NET Source code and binaries available on Github
.NET A newer, zero-copy wrapper on Github
.NET Another, faster wrapper (zero-copy, zero-alloc) on Github
Perl Source code available on CPAN
Crack Bindings and simplified wrappers in the main Crack source tree
Rust Source code available on Github
Rust A slightly higher-level wrapper from Mozilla on Github
Rust A more actively maintained wrapper on Github
OCaml Source code available on Github
PHP Source code available on Github
PHP (newer more extensive version) Source code available on Github
Haskell Project page here
Haskell (simpler) Project page here
Julia driver Source code available on Github
Matlab Source code available on Github
mruby Source code available on Github
Nim Source code available on Github
Common Lisp Guide available here
TCL Project page here
Clojure Blog post here
R R client on Github
Swift SwiftLMDB on Github
Swift QuickLMDB on Github