RocksDB

RocksDB
Developer(s) Facebook
Initial release May 2012 (2012-05)
Stable release 4.4 / February 18, 2016 (2016-02-18)
Development status production
Written in C++
Operating system Linux, OS X, FreeBSD, Windows
Type Embedded database
License BSD 3-clause
Website www.rocksdb.org

RocksDB is an open source[1][2][3] high performance[4][5][6][7][8] embedded database for key-value data. RocksDB is a fork of LevelDB which has been optimized to take advantage of many CPU cores and make efficient use of fast storage, such as solid-state drives (SSD), for IO bound workloads. It is based on a Log-structured merge-tree (LSM) data structure. RocksDB is written in C++ and provides official application programming interface (API) language bindings for C++, C and Java, 3rd-party bindings also exist for Go[9] and Python.[10]

RocksDB is used in production systems at various web-scale enterprises [11] including Facebook, Yahoo![12] and LinkedIn.[13]

Features

RocksDB, like LevelDB, stores keys and values in arbitrary byte arrays, and data is sorted byte-wise by key or by providing a custom comparator.

RocksDB provides all of the features of LevelDB and in addition provides:

RocksDB is not a SQL database (although #MyRocks combines RocksDB with MySQL). Like other NoSQL and Dbm stores, it does not have a relational data model and it does not support SQL queries. Also, it has no direct support for secondary indexes, however a user may build their own internally using Column Families or externally. Applications use RocksDB as a library, as it does not provide a server or command-line interface.

History

RocksDB was started at Facebook by Dhruba Borthakur [22][23] in April 2012 as a fork of LevelDB with the initial stated goal of improving performance for server workloads.[24][25]

Integration

As an embeddable database, RocksDB can be used as a storage engine within a larger database management system (DBMS). For example, CockroachDB uses RocksDB as its storage engine.[26]

The following projects have been started to replace the storage engines of already-established database systems with RocksDB:

MongoDB

The MongoRocks project provides a storage module for MongoDB where the storage engine is RocksDB.[27][28]

Of related interest is Rocks Strata which is a tool written in Go which allows managing incremental backups of MongoDB when RocksDB is used as the storage engine.

MySQL

The MyRocks project creates a new RocksDB based storage engine for MySQL.[29]

References

  1. "Facebook’s latest open source effort: a flash-powered database called RocksDB". Retrieved March 10, 2016.
  2. "Under the Hood: Building and open-sourcing RocksDB". Retrieved March 10, 2016.
  3. "RocksDB - Facebook's Database Now Open Source". Retrieved March 10, 2016.
  4. "Performance Benchmarks". Retrieved November 29, 2015.
  5. "Benchmarking the leveldb family". Retrieved March 10, 2016.
  6. "Comparing LevelDB and RocksDB, take 2". Retrieved March 10, 2016.
  7. "Benchmarking LevelDB vs. RocksDB vs. HyperLevelDB vs. LMDB Performance for InfluxDB". Retrieved March 10, 2016.
  8. Golan-Gueta, Guy; Bortnikov, Edward; Hillel, Eschar; Keidar, Idit (April 21, 2015). "Scaling Concurrent Log-Structured Data Stores". EuroSys '15 Proceedings of the Tenth European Conference on Computer Systems. doi:10.1145/2741948.2741973.
  9. "gorocksdb, a Go wrapper for RocksDB". Retrieved November 29, 2015.
  10. "pyrocksdb". Retrieved November 29, 2015.
  11. "Users.md". Retrieved December 1, 2015.
  12. "RocksDB on Steroids". Retrieved March 10, 2016.
  13. "Benchmarking Apache Samza: 1.2 million messages per second on a single node". Retrieved March 10, 2016.
  14. "Column families in RocksDB". GitHub. Retrieved 2016-04-04.
  15. "RocksDB bloom filters". GitHub. Retrieved 2016-04-04.
  16. "RocksDB transactions". GitHub. Retrieved 2016-04-04.
  17. "RocksDB TTL support". GitHub. Retrieved 2016-04-04.
  18. "Universal compaction". GitHub. Retrieved 2016-04-04.
  19. "RocksDB merge operator". GitHub. Retrieved 2016-04-04.
  20. "RocksDB perf context and IO stats context". GitHub. Retrieved 2016-04-04.
  21. "Spatial indexing in RocksDB « RocksDB". rocksdb.org. Retrieved 2016-04-04.
  22. "First commit where RocksDB diverges from LevelDB". May 10, 2012. Retrieved March 15, 2016.
  23. "rocksdb README file". Nov 30, 2012. Retrieved March 15, 2016.
  24. "The History of RocksDB". November 24, 2013. Retrieved March 10, 2016.
  25. Borthakur, Dhruba (November 22, 2013). "RocksDB: A High Performance Embedded Key-Value Store for Flash Storage - Data@Scale". Retrieved March 10, 2016. ... The story of why we decided to do RocksDB ...
  26. Edwards, Jessica (2015-10). "Hello World: Meet CockroachDB, the Resilient SQL Database". The New Stack. Retrieved 2016-03-26. Check date values in: |date= (help)
  27. "Integrating RocksDB with MongoDB". Retrieved December 1, 2015.
  28. "MongoDB + RocksDB at Parse". Retrieved December 1, 2015.
  29. "MyRocks: MySQL on RocksDB" (PDF). Retrieved November 29, 2015.

External links

This article is issued from Wikipedia - version of the Monday, April 04, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.