fbpx
Wikipedia

RocksDB

RocksDB is a high performance[2][3][4][5][6] embedded database for key-value data. It is a fork of Google's LevelDB optimized to exploit multi-core processors (CPUs), and make efficient use of fast storage, such as solid-state drives (SSD), for input/output (I/O) bound workloads. It is based on a log-structured merge-tree (LSM tree) data structure. It is written in C++ and provides official language bindings for C++, C, and Java. Many third-party language bindings exist. RocksDB is free and open-source software, released originally under a BSD 3-clause license.[7][8][9] However, in July 2017 the project was migrated to a dual license of both Apache 2.0 and GPLv2 license.[10] This change helped its adoption in Apache Software Foundation's projects after blacklist of the previous BSD+Patents license clause.[11][12]

RocksDB
Original author(s)Dhruba Borthakur
Developer(s)Meta Platforms (was Facebook, Inc.)
Initial releaseMay 2012; 12 years ago (2012-05)
Stable release
9.1.1[1]  / 17 April 2024
Repository
  • github.com/facebook/rocksdb
Written inC++
Operating systemWindows, macOS, Linux, FreeBSD, OpenBSD, Solaris, AIX
PlatformCross-platform
TypeEmbedded database
LicenseApache 2.0 or GPL 2
Websiterocksdb.org

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

Features edit

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, plus:

and others: List of RocksDB features that are not in LevelDB.

RocksDB is not an SQL database (although MyRocks combines RocksDB with MySQL). Like other NoSQL and dbm stores, it has no 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 provides no server or command-line interface.

History edit

RocksDB was created at Facebook by Dhruba Borthakur[26][27] in April 2012, as a fork of LevelDB with the initial stated goal of improving performance for server workloads.[28][29]

Integration edit

As an embeddable database, RocksDB can be used as a storage engine within a larger database management system (DBMS). For example, Rockset uses RocksDB[30] mostly for analytical data processing.

Alternative backend edit

The following projects have been started to replace or offer alternative storage engines for already-established database systems with RocksDB:

ArangoDB edit

ArangoDB has added RocksDB to its previous storage engine ("mmfiles").[31] Starting with ArangoDB 3.4, RocksDB will be the default storage engine in ArangoDB.[32]

Cassandra edit

Cassandra on RocksDB can improve the performance of Apache Cassandra significantly (3-4 times faster in general, 100 times faster in some use-cases).[citation needed] The Instagram team at Facebook developed and open-sourced their code, along with benchmarks of their performance results.[33]

MariaDB edit

MariaDB can use the MyRocks storage engine (which is forked from RocksDB) since MariaDB 10.2.5 (Alpha status) [34] and stable since MariaDB 10.2.16 in 2018.[35]

MongoDB edit

The MongoRocks project provides a storage module for MongoDB where the storage engine is RocksDB.[36][37][38]

A related program is Rocks Strata, a tool written in Go, which allows managing incremental backups of MongoDB when RocksDB is used as the storage engine.[39]

MySQL edit

The MyRocks project created a new RocksDB-based storage engine for MySQL.[40][41] In-depth details about MyRocks were presented at Percona Live 2016.[42]

Oxigraph edit

Oxigraph is a graph database implementing the SPARQL standard, based on RocksDB

UKV edit

The UKV[43] project allows users to use RocksDB on par with LevelDB as the underlying key-value store. It represents a shared abstraction for create, read, update and delete (CRUD) operations common to every storage engine. It augments it with structured bindings for several high-level languages, including Python, Java, and Go.

Embedded edit

The following database systems and applications have chosen to use RocksDB as their embedded storage engine:

Ceph's BlueStore edit

The Ceph's BlueStore storage layer uses RocksDB for metadata management in OSD devices.[44]

Apache Flink edit

Apache Flink uses RocksDB to store checkpoints.[45]

FusionDB edit

FusionDB[46] uses RocksDB as its storage engine for XML, Key/Value, and JSON.[47]

LogDevice LogsDB edit

LogDevice's LogsDB is built atop RocksDB.[48]

Kafka Streams edit

Kafka Streams uses RocksDB for its state stores.[49]

Manhattan edit

The Manhattan Distributed Key-Value Store has used RocksDB as its primary engine to store Twitter data since 2018.[50]

Rockset edit

The Rockset service that is used for operational data analytics uses RocksDB as its storage engine.[51]

SSDB edit

The ssdb-rocks[52] project uses RocksDB as the storage engine for the SSDB[53] NoSQL Database.

TiDB edit

The TiDB[54] project uses RocksDB as its storage engine.[55]

YugabyteDB edit

The YugabyteDB[56] database uses a modified version of RocksDB as part of its DocDB storage engine

Third-party language bindings edit

Third-party programming language bindings available for RocksDB include:

References edit

  1. ^ Error: Unable to display the reference properly. See the documentation for details.
  2. ^ "Performance Benchmarks". GitHub. Retrieved November 29, 2015.
  3. ^ "Benchmarking the leveldb family". 7 July 2014. Retrieved March 10, 2016.
  4. ^ "Comparing LevelDB and RocksDB, take 2". 27 April 2015. Retrieved March 10, 2016.
  5. ^ "Benchmarking LevelDB vs. RocksDB vs. HyperLevelDB vs. LMDB Performance for InfluxDB". 20 June 2014. Retrieved March 10, 2016.
  6. ^ Golan-Gueta, Guy; Bortnikov, Edward; Hillel, Eschar; Keidar, Idit (April 21, 2015). "Scaling concurrent log-structured data stores". Proceedings of the Tenth European Conference on Computer Systems. pp. 1–14. doi:10.1145/2741948.2741973. ISBN 9781450332385. S2CID 5849146.
  7. ^ "Facebook's latest open source effort: a flash-powered database called RocksDB". 21 November 2013. Retrieved March 10, 2016.
  8. ^ "Under the Hood: Building and open-sourcing RocksDB". Facebook. Retrieved March 10, 2016.
  9. ^ "RocksDB - Facebook's Database Now Open Source". Retrieved March 10, 2016.
  10. ^ "GitHub pull request". GitHub. Retrieved July 20, 2017.
  11. ^ "Apache says 'no' to Facebook code libraries". The Register. Retrieved July 20, 2017.
  12. ^ "GitHub issue". GitHub. Retrieved July 20, 2017.
  13. ^ "Users.md". GitHub. Retrieved December 1, 2015.
  14. ^ "RocksDB on Steroids". Retrieved March 10, 2016.
  15. ^ "Benchmarking Apache Samza: 1.2 million messages per second on a single node". Retrieved March 10, 2016.
  16. ^ "RocksDB transactions". GitHub. Retrieved 2016-04-04.
  17. ^ "How to backup RocksDB?". GitHub. Retrieved 2017-07-19.
  18. ^ "Checkpoints". GitHub. Retrieved 2017-07-19.
  19. ^ "Column families in RocksDB". GitHub. Retrieved 2016-04-04.
  20. ^ "RocksDB bloom filters". GitHub. Retrieved 2016-04-04.
  21. ^ "RocksDB TTL support". GitHub. Retrieved 2016-04-04.
  22. ^ "Universal compaction". GitHub. Retrieved 2016-04-04.
  23. ^ "RocksDB merge operator". GitHub. Retrieved 2016-04-04.
  24. ^ "RocksDB perf context and IO stats context". GitHub. Retrieved 2016-04-04.
  25. ^ "Spatial indexing in RocksDB". rocksdb.org. Retrieved 2018-07-19.
  26. ^ "First commit where RocksDB diverges from LevelDB". GitHub. May 10, 2012. Retrieved March 15, 2016.
  27. ^ "Rocksdb readme file". GitHub. Nov 30, 2012. Retrieved March 15, 2016.
  28. ^ "The History of RocksDB". November 24, 2013. Retrieved March 10, 2016.
  29. ^ Borthakur, Dhruba (November 22, 2013). "RocksDB: A High Performance Embedded Key-Value Store for Flash Storage - Data@Scale". YouTube. Retrieved March 10, 2016. ... The story of why we decided to do RocksDB ...
  30. ^ Dhoot, Sandeep (2019-06-27). "How We Use RocksDB at Rockset". rockset.com. Retrieved 2023-03-01.
  31. ^ "Comparing new RocksDB and MMFiles storage engines".
  32. ^ "RC1 ArangoDB 3.4 - Whats new?". 6 September 2018.
  33. ^ "Open-sourcing a 10x reduction in Apache Cassandra tail latency". 5 March 2018.
  34. ^ "MyRocks". MariaDB KnowledgeBase. Retrieved 2019-04-28.
  35. ^ "MariaDB 10.2.16 Release Notes".
  36. ^ "mongodb-partners/mongo-rocks". GitHub. 29 October 2021.
  37. ^ "Integrating RocksDB with MongoDB". Retrieved July 19, 2018.
  38. ^ "MongoDB + RocksDB at Parse". Retrieved December 1, 2015.
  39. ^ "facebookgo/rocks-strata". GitHub. 31 October 2021.
  40. ^ "facebook/mysql-5.6". GitHub. 2 November 2021.
  41. ^ "MyRocks: MySQL on RocksDB" (PDF). Retrieved November 29, 2015.
  42. ^ "MyRocks Deep Dive". 19 April 2016. Retrieved May 9, 2016.
  43. ^ a b c d e "unum-cloud/ukv". GitHub. 28 December 2022.
  44. ^ "Storage Devices -- Ceph Documentation".
  45. ^ "Apache Flink 1.8 Documentation: State Backends". ci.apache.org. Retrieved 2019-08-11.
  46. ^ "FusionDB". Evolved Binary.
  47. ^ "The Design and Implementation of FusionDB" (PDF). XML Prague.
  48. ^ "LogDevice: a distributed data store for logs". Mark Marchukov, Facebook. 31 August 2017.
  49. ^ "Configuring a streams application". kafka.apache.org. Retrieved 2024-03-11.
  50. ^ "Adopting RocksDB within Manhattan". Twitter. 28 December 2022.
  51. ^ "How we use RocksDB at Rockset". rockset.com. Retrieved 2019-07-10.
  52. ^ "ideawu/ssdb-rocks". GitHub. 21 August 2021.
  53. ^ https://ssdb.io
  54. ^ "pingcap/tidb". GitHub. 4 November 2021.
  55. ^ "TiDB Internal (I) - Data Storage". Shen Li. 11 July 2017.
  56. ^ "How We Built a High Performance Document Store on RocksDB?". 20 February 2019.
  57. ^ "warrenfalk/rocksdb-sharp". GitHub. 28 September 2021.
  58. ^ "chicken-rocksdb".
  59. ^ "b1naryth1ef/rocksdb". GitHub. 22 October 2019.
  60. ^ "urbint/rox". GitHub. September 2021.
  61. ^ "leo-project/erocksdb". GitHub. September 2021.
  62. ^ "barrel-db/erlang-rocksdb".
  63. ^ "tecbot/gorocksdb". GitHub. 29 October 2021.
  64. ^ "rocksdb-haskell: Haskell bindings to RocksDB".
  65. ^ "RocksJava". GitHub.
  66. ^ "rocksdb". 25 March 2022.
  67. ^ "rocksdb". GitHub.
  68. ^ "iabudiab/ObjectiveRocks". GitHub. 2 August 2021.
  69. ^ "OCaml bindings for RocksDB". GitHub. 8 October 2021.
  70. ^ "An OCaml RocksDb binding using ocaml-ctypes". GitHub. 28 September 2020.
  71. ^ "RocksDB - Perl extension for RocksDB - metacpan.org".
  72. ^ "Photonios/rocksdb-php". GitHub. 11 August 2021.
  73. ^ "SWI-Prolog interface for RocksDB".
  74. ^ "stephan-hof/pyrocksdb". GitHub. 27 October 2021.
  75. ^ "rocksdb-ruby - RubyGems.org - your community gem host".
  76. ^ "spacejam/rust-rocksdb". GitHub. 2 November 2021.

External links edit

  • Official website

rocksdb, this, article, uses, bare, urls, which, uninformative, vulnerable, link, please, consider, converting, them, full, citations, ensure, article, remains, verifiable, maintains, consistent, citation, style, several, templates, tools, available, assist, f. This article uses bare URLs which are uninformative and vulnerable to link rot Please consider converting them to full citations to ensure the article remains verifiable and maintains a consistent citation style Several templates and tools are available to assist in formatting such as reFill documentation and Citation bot documentation September 2022 Learn how and when to remove this message RocksDB is a high performance 2 3 4 5 6 embedded database for key value data It is a fork of Google s LevelDB optimized to exploit multi core processors CPUs and make efficient use of fast storage such as solid state drives SSD for input output I O bound workloads It is based on a log structured merge tree LSM tree data structure It is written in C and provides official language bindings for C C and Java Many third party language bindings exist RocksDB is free and open source software released originally under a BSD 3 clause license 7 8 9 However in July 2017 the project was migrated to a dual license of both Apache 2 0 and GPLv2 license 10 This change helped its adoption in Apache Software Foundation s projects after blacklist of the previous BSD Patents license clause 11 12 RocksDBOriginal author s Dhruba BorthakurDeveloper s Meta Platforms was Facebook Inc Initial releaseMay 2012 12 years ago 2012 05 Stable release9 1 1 1 17 April 2024Repositorygithub wbr com wbr facebook wbr rocksdbWritten inC Operating systemWindows macOS Linux FreeBSD OpenBSD Solaris AIXPlatformCross platformTypeEmbedded databaseLicenseApache 2 0 or GPL 2Websiterocksdb wbr org RocksDB is used in production systems at various web scale enterprises 13 including Facebook Yahoo 14 and LinkedIn 15 Contents 1 Features 2 History 3 Integration 3 1 Alternative backend 3 1 1 ArangoDB 3 1 2 Cassandra 3 1 3 MariaDB 3 1 4 MongoDB 3 1 5 MySQL 3 1 6 Oxigraph 3 1 7 UKV 3 2 Embedded 3 2 1 Ceph s BlueStore 3 2 2 Apache Flink 3 2 3 FusionDB 3 2 4 LogDevice LogsDB 3 2 5 Kafka Streams 3 2 6 Manhattan 3 2 7 Rockset 3 2 8 SSDB 3 2 9 TiDB 3 2 10 YugabyteDB 4 Third party language bindings 5 References 6 External linksFeatures editRocksDB 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 plus Transactions 16 Backups 17 and snapshots 18 Column families 19 Bloom filters 20 Time to live TTL support 21 Universal compaction 22 Merge operators 23 Statistics collection 24 Geospatial indexing 25 and others List of RocksDB features that are not in LevelDB RocksDB is not an SQL database although MyRocks combines RocksDB with MySQL Like other NoSQL and dbm stores it has no 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 provides no server or command line interface History editRocksDB was created at Facebook by Dhruba Borthakur 26 27 in April 2012 as a fork of LevelDB with the initial stated goal of improving performance for server workloads 28 29 Integration editAs an embeddable database RocksDB can be used as a storage engine within a larger database management system DBMS For example Rockset uses RocksDB 30 mostly for analytical data processing Alternative backend edit The following projects have been started to replace or offer alternative storage engines for already established database systems with RocksDB ArangoDB edit ArangoDB has added RocksDB to its previous storage engine mmfiles 31 Starting with ArangoDB 3 4 RocksDB will be the default storage engine in ArangoDB 32 Cassandra edit Cassandra on RocksDB can improve the performance of Apache Cassandra significantly 3 4 times faster in general 100 times faster in some use cases citation needed The Instagram team at Facebook developed and open sourced their code along with benchmarks of their performance results 33 MariaDB edit MariaDB can use the MyRocks storage engine which is forked from RocksDB since MariaDB 10 2 5 Alpha status 34 and stable since MariaDB 10 2 16 in 2018 35 MongoDB edit The MongoRocks project provides a storage module for MongoDB where the storage engine is RocksDB 36 37 38 A related program is Rocks Strata a tool written in Go which allows managing incremental backups of MongoDB when RocksDB is used as the storage engine 39 MySQL edit The MyRocks project created a new RocksDB based storage engine for MySQL 40 41 In depth details about MyRocks were presented at Percona Live 2016 42 Oxigraph edit Oxigraph is a graph database implementing the SPARQL standard based on RocksDB UKV edit The UKV 43 project allows users to use RocksDB on par with LevelDB as the underlying key value store It represents a shared abstraction for create read update and delete CRUD operations common to every storage engine It augments it with structured bindings for several high level languages including Python Java and Go Embedded edit The following database systems and applications have chosen to use RocksDB as their embedded storage engine Ceph s BlueStore edit The Ceph s BlueStore storage layer uses RocksDB for metadata management in OSD devices 44 Apache Flink edit Apache Flink uses RocksDB to store checkpoints 45 FusionDB edit FusionDB 46 uses RocksDB as its storage engine for XML Key Value and JSON 47 LogDevice LogsDB edit LogDevice s LogsDB is built atop RocksDB 48 Kafka Streams edit Kafka Streams uses RocksDB for its state stores 49 Manhattan edit The Manhattan Distributed Key Value Store has used RocksDB as its primary engine to store Twitter data since 2018 50 Rockset edit The Rockset service that is used for operational data analytics uses RocksDB as its storage engine 51 SSDB edit The ssdb rocks 52 project uses RocksDB as the storage engine for the SSDB 53 NoSQL Database TiDB edit The TiDB 54 project uses RocksDB as its storage engine 55 YugabyteDB edit The YugabyteDB 56 database uses a modified version of RocksDB as part of its DocDB storage engineThird party language bindings editThird party programming language bindings available for RocksDB include C 43 C 57 Chicken Scheme 58 D 59 Elixir 60 Erlang 61 62 Go 43 63 Haskell 64 Java 43 65 Node js 66 Nim 67 Objective C and Swift 68 OCaml 69 70 Perl 71 PHP 72 Prolog 73 Python 43 74 Ruby 75 Rust 76 References edit Error Unable to display the reference properly See the documentation for details Performance Benchmarks GitHub Retrieved November 29 2015 Benchmarking the leveldb family 7 July 2014 Retrieved March 10 2016 Comparing LevelDB and RocksDB take 2 27 April 2015 Retrieved March 10 2016 Benchmarking LevelDB vs RocksDB vs HyperLevelDB vs LMDB Performance for InfluxDB 20 June 2014 Retrieved March 10 2016 Golan Gueta Guy Bortnikov Edward Hillel Eschar Keidar Idit April 21 2015 Scaling concurrent log structured data stores Proceedings of the Tenth European Conference on Computer Systems pp 1 14 doi 10 1145 2741948 2741973 ISBN 9781450332385 S2CID 5849146 Facebook s latest open source effort a flash powered database called RocksDB 21 November 2013 Retrieved March 10 2016 Under the Hood Building and open sourcing RocksDB Facebook Retrieved March 10 2016 RocksDB Facebook s Database Now Open Source Retrieved March 10 2016 GitHub pull request GitHub Retrieved July 20 2017 Apache says no to Facebook code libraries The Register Retrieved July 20 2017 GitHub issue GitHub Retrieved July 20 2017 Users md GitHub Retrieved December 1 2015 RocksDB on Steroids Retrieved March 10 2016 Benchmarking Apache Samza 1 2 million messages per second on a single node Retrieved March 10 2016 RocksDB transactions GitHub Retrieved 2016 04 04 How to backup RocksDB GitHub Retrieved 2017 07 19 Checkpoints GitHub Retrieved 2017 07 19 Column families in RocksDB GitHub Retrieved 2016 04 04 RocksDB bloom filters GitHub Retrieved 2016 04 04 RocksDB TTL support GitHub Retrieved 2016 04 04 Universal compaction GitHub Retrieved 2016 04 04 RocksDB merge operator GitHub Retrieved 2016 04 04 RocksDB perf context and IO stats context GitHub Retrieved 2016 04 04 Spatial indexing in RocksDB rocksdb org Retrieved 2018 07 19 First commit where RocksDB diverges from LevelDB GitHub May 10 2012 Retrieved March 15 2016 Rocksdb readme file GitHub Nov 30 2012 Retrieved March 15 2016 The History of RocksDB November 24 2013 Retrieved March 10 2016 Borthakur Dhruba November 22 2013 RocksDB A High Performance Embedded Key Value Store for Flash Storage Data Scale YouTube Retrieved March 10 2016 The story of why we decided to do RocksDB Dhoot Sandeep 2019 06 27 How We Use RocksDB at Rockset rockset com Retrieved 2023 03 01 Comparing new RocksDB and MMFiles storage engines RC1 ArangoDB 3 4 Whats new 6 September 2018 Open sourcing a 10x reduction in Apache Cassandra tail latency 5 March 2018 MyRocks MariaDB KnowledgeBase Retrieved 2019 04 28 MariaDB 10 2 16 Release Notes mongodb partners mongo rocks GitHub 29 October 2021 Integrating RocksDB with MongoDB Retrieved July 19 2018 MongoDB RocksDB at Parse Retrieved December 1 2015 facebookgo rocks strata GitHub 31 October 2021 facebook mysql 5 6 GitHub 2 November 2021 MyRocks MySQL on RocksDB PDF Retrieved November 29 2015 MyRocks Deep Dive 19 April 2016 Retrieved May 9 2016 a b c d e unum cloud ukv GitHub 28 December 2022 Storage Devices Ceph Documentation Apache Flink 1 8 Documentation State Backends ci apache org Retrieved 2019 08 11 FusionDB Evolved Binary The Design and Implementation of FusionDB PDF XML Prague LogDevice a distributed data store for logs Mark Marchukov Facebook 31 August 2017 Configuring a streams application kafka apache org Retrieved 2024 03 11 Adopting RocksDB within Manhattan Twitter 28 December 2022 How we use RocksDB at Rockset rockset com Retrieved 2019 07 10 ideawu ssdb rocks GitHub 21 August 2021 https ssdb io pingcap tidb GitHub 4 November 2021 TiDB Internal I Data Storage Shen Li 11 July 2017 How We Built a High Performance Document Store on RocksDB 20 February 2019 warrenfalk rocksdb sharp GitHub 28 September 2021 chicken rocksdb b1naryth1ef rocksdb GitHub 22 October 2019 urbint rox GitHub September 2021 leo project erocksdb GitHub September 2021 barrel db erlang rocksdb tecbot gorocksdb GitHub 29 October 2021 rocksdb haskell Haskell bindings to RocksDB RocksJava GitHub rocksdb 25 March 2022 rocksdb GitHub iabudiab ObjectiveRocks GitHub 2 August 2021 OCaml bindings for RocksDB GitHub 8 October 2021 An OCaml RocksDb binding using ocaml ctypes GitHub 28 September 2020 RocksDB Perl extension for RocksDB metacpan org Photonios rocksdb php GitHub 11 August 2021 SWI Prolog interface for RocksDB stephan hof pyrocksdb GitHub 27 October 2021 rocksdb ruby RubyGems org your community gem host spacejam rust rocksdb GitHub 2 November 2021 External links editOfficial website Retrieved from https en wikipedia org w index php title RocksDB amp oldid 1213146005, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.