Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The Database should be open-sourced and able to support APIs for multiple programming languages as it can be extended in future but should definitely supportĀ  C++ APIs as currently, we are using C++ APIs.

7) Very important comparison:- https://www.influxdata.com/blog/benchmarking-leveldb-vs-rocksdb-vs-hyperleveldb-vs-lmdb-performance-for-influxdb/

8) https://mozilla.github.io/firefox-browser-architecture/text/0017-lmdb-vs-leveldb.html


Popular Key-Value store NoSQL Databases comparison. Also, one of the good comparisons can be found here.

DatabasesOpen SourceC++ APIsLow LatencyKey-Value Storage

Embedded database with on-disk storage mode

In-Memory (Caching) CapabilitiesNote
Aerospike(tick)(tick)(tick)(tick)(error)(tick)
Berkeley DB (one of the best)
(tick)(tick)(tick)(tick)(tick)(tick)Developed by Oracle Inc. Support APIs for multiple programming languages. Support many Operating systems as the server. One of the oldest and developed in the year 1994.
Redis(tick)(tick)(tick)(tick)(error) only In-memory capabilities. Can only use it as cache store so cannot store data larger than RAM size.(tick)One of the best but cannot store big volumes of data larger than RAM hence cannot be used for our purpose.
LevelDB
(tick)(tick)(tick)(tick)(tick)Developed by Google Inc. IoS is not supported as a server operating system. Developed in 2011.
RocksDB (also very much recommended)(tick)(tick)(tick)(tick)(tick)(tick)Developed by Facebook Inc. Developed in 2013. Only supports APIs in language C++ and Java. RocksDB supports Transactions when using a TransactionDB or OptimisticTransactionDB. Transactions have a simple BEGIN/COMMIT/ROLLBACK API and allow applications to modify their data concurrently while letting RocksDB handle the conflict checking. RocksDB supports both pessimistic and optimistic concurrency control.
LMDB (Very high performant)
(tick)(tick)(tick)(tick)(tick)
BadgerDB(tick)(error)(error)(tick)(tick)(error)When Badger is running in in-memory mode, all the data is stored in the memory. Reads and writes are much faster in in-memory mode, but all the data stored in Badger will be lost in case of a crash or close.
Badger doesn't support on-disk and in-memory mode together.
Riak KV(tick)(tick)
(tick)Amazon DynamoDB(tick)(tick)(tick)(tick)(error)(tick)
SQLite (Not very good performance)(tick)(tick)(tick)(error)(tick)(tick)Does not guarantee domain integrity. SQLite works great as the database engine for most low to medium traffic.


Considering multiple parameters mentioned above along with support for Transactions etc. We decided to move ahead with RocksDB.