RocksDB

From Infogalactic: the planetary knowledge core
Jump to: navigation, search
RocksDB
200px
Developer(s) Facebook
Initial release May 2012; 11 years ago (2012-05)
Stable release 4.5.1 / April 26, 2016; 7 years ago (2016-04-26)
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:

  • Column Families[14]
  • Bloom Filters[15]
  • Transactions[16]
  • TTL (Time to Live) Support[17]
  • Universal Compaction[18]
  • Merge Operators[19]
  • Statistics Collection[20]
  • Geo-spatial[21]

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] In depth details about MyRocks were presented at Percona Live 2016.[30]

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. Lua error in package.lua at line 80: module 'strict' not found.
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. Lua error in package.lua at line 80: module 'strict' not found.
  18. Lua error in package.lua at line 80: module 'strict' not found.
  19. Lua error in package.lua at line 80: module 'strict' not found.
  20. Lua error in package.lua at line 80: module 'strict' not found.
  21. Lua error in package.lua at line 80: module 'strict' not found.
  22. Lua error in package.lua at line 80: module 'strict' not found.
  23. Lua error in package.lua at line 80: module 'strict' not found.
  24. Lua error in package.lua at line 80: module 'strict' not found.
  25. Lua error in package.lua at line 80: module 'strict' not found.
  26. Lua error in package.lua at line 80: module 'strict' not found.
  27. Lua error in package.lua at line 80: module 'strict' not found.
  28. Lua error in package.lua at line 80: module 'strict' not found.
  29. Lua error in package.lua at line 80: module 'strict' not found.
  30. Lua error in package.lua at line 80: module 'strict' not found.

External links