LMDB vs RocksDB
LMDB
symas.comRocksDB
rocksdb.orgSide by side
| Figure | LMDB | RocksDB |
|---|---|---|
| Price from | — | Free |
| Free plan | — | Yes |
| Free trial | — | — |
| Open source | — | — |
| Web | Yes | — |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| iOS | — | Yes |
| API | — | Yes |
| Self-hosted | Yes | Yes |
| Plans published | 2 | 1 |
| Spec score · Embedded Databases | 7.5 (#22) | 8.0 (#11) |
| Data model | Keys are always sorted, making range lookups straightforward and efficient. | Keys and values can be arbitrarily sized byte streams. |
| Integrations | Symas reports integrations with OpenDKIM, Heimdal Kerberos, Postfix, Cyrus SASL, MemcacheDB, SQLite3, and Riak. | The project documents a MyRocks database storage engine as one example of using RocksDB. |
| Support | Symas offers fixed-price Gold or Enterprise source-level support and porting or professional services for LMDB users. | The project directs users to its Google Group or Facebook Group for general questions and reserves GitHub issues for bug reports. |
Plans
In their own words
RocksDB
RocksDB is an embeddable, persistent key-value store for applications that need fast storage. It stores keys and values as arbitrary byte arrays, with ordering determined by a comparator chosen by the user. Its log-structured merge design allows configuration of tradeoffs among write, read, and space amplification, and the project describes it as optimized for low-latency storage on flash drives and high-speed disks. The C++ library supports opening and closing databases, reads and writes, merging, and compaction filters. Described uses include database storage engines, application data caches, and embedded workloads. Multi-threaded compactions support databases holding multiple terabytes; the project describes an audience of application servers storing up to a few terabytes on local or remote systems. RocksDB also has a Java wrapper, RocksJava, with artifacts published through Maven. It is free and open source under either GPLv2 or Apache 2.0, at the user's choice. Building requires GCC 11 or later or Clang 10 or later for C++20 support; values must be smaller than 4 GB.