请输入您要查询的百科知识:

 

词条 RocksDB
释义

  1. Features

  2. History

  3. Integration

      Alternative backend    ArangoDB    MongoDB    MySQL    Cassandra    Embedded    Ceph's BlueStore    LogDevice LogsDB    Faktory    SSDB    TiDB  

  4. Third-party language bindings

  5. References

  6. External links

{{Infobox software
| name = RocksDB
| logo = Rocksdb-icon.svg
| screenshot =
| caption = Embedded persistent key/value store.
| collapsible =
| developer = Facebook
| released = {{Start date and age|2012|05}}
| latest release version = 5.17.2
| latest release date = {{Start date and age|2018|11|12}}
| status = production
| programming language = C++
| operating system = Windows, macOS, Linux, FreeBSD
| genre = Embedded database
| license = Apache 2.0 or GPL 2
| website = {{URL|rocksdb.org}}
}}RocksDB is a high performance[1][2][3][4][5] embedded database for key-value data. It is a fork of LevelDB by Facebook optimized to exploit many central processing unit (CPU) cores, 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 application programming interface (API) language bindings for C++, C, and Java; alongside many third-party language bindings. RocksDB is open-source software, and was originally released under a BSD 3-clause license[6][7][8]. However, in July 2017 the project was migrated to a dual license of both Apache 2.0 and GPLv2 license[9], possibly in response to the Apache Software Foundation's blacklist of the previous BSD+Patents license clause.[10][11]

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

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

  • Transactions[15]
  • Backups[16] and snapshots[17]
  • Column families[18]
  • Bloom filters[19]
  • Time to live (TTL) support[20]
  • Universal compaction[21]
  • Merge operators[22]
  • Statistics collection[23]
  • Geospatial indexing[24]

and others: [https://github.com/facebook/rocksdb/wiki/Features-Not-in-LevelDB 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 does not provide a server or command-line interface.

History

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

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.[29]

Alternative backend

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

ArangoDB

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

MongoDB

The MongoRocks project provides a storage module for MongoDB where the storage engine is RocksDB.[32][33][34]

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.[35]

MySQL

The MyRocks project creates a new RocksDB based storage engine for MySQL.[36][37] In-depth details about MyRocks were presented at Percona Live 2016.[38]

Cassandra

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

Embedded

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

Ceph's BlueStore

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

LogDevice LogsDB

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

Faktory

Facktory[43] the background job system uses RocksDB for storage[44].

SSDB

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

TiDB

The TiDB[47] project uses RocksDB as its storage engine[48].

Third-party language bindings

Third-party programming language bindings available for RocksDB include:

  • C#[49]
  • D[50]
  • Elixir[51]
  • Erlang[52][53]
  • Go[54]
  • Haskell[55]
  • Java[56]
  • Node.js[57]
  • Objective-C, and Swift[58]
  • OCaml[59][60]
  • Perl[61]
  • PHP[62]
  • Prolog[63]
  • Python[64]
  • Ruby[65]
  • Rust[66]

References

1. ^{{cite web |url=https://github.com/facebook/rocksdb/wiki/Performance-Benchmarks |title=Performance Benchmarks |accessdate=November 29, 2015}}
2. ^{{cite web |url=http://smalldatum.blogspot.com/2014/07/benchmarking-leveldb-family.html |title=Benchmarking the leveldb family |accessdate=March 10, 2016}}
3. ^{{cite web |url=http://smalldatum.blogspot.com/2015/04/comparing-leveldb-and-rocksdb-take-2.html |title=Comparing LevelDB and RocksDB, take 2 |accessdate=March 10, 2016}}
4. ^{{cite web |url=https://influxdata.com/blog/benchmarking-leveldb-vs-rocksdb-vs-hyperleveldb-vs-lmdb-performance-for-influxdb/ |title=Benchmarking LevelDB vs. RocksDB vs. HyperLevelDB vs. LMDB Performance for InfluxDB |accessdate=March 10, 2016}}
5. ^{{cite journal |journal=EuroSys '15 Proceedings of the Tenth European Conference on Computer Systems |title=Scaling Concurrent Log-Structured Data Stores |doi=10.1145/2741948.2741973 |first1=Guy |last1=Golan-Gueta |first2=Edward |last2=Bortnikov |first3=Eschar |last3=Hillel |first4=Idit |last4=Keidar |date=April 21, 2015}}
6. ^{{cite web |url=https://gigaom.com/2013/11/21/facebooks-latest-open-source-effort-a-flash-powered-database-called-rocksdb/ |title=Facebook’s latest open source effort: a flash-powered database called RocksDB |accessdate=March 10, 2016}}
7. ^{{cite web |url=https://www.facebook.com/notes/facebook-engineering/under-the-hood-building-and-open-sourcing-rocksdb/10151822347683920/ |title=Under the Hood: Building and open-sourcing RocksDB |accessdate=March 10, 2016}}
8. ^{{cite web |url=http://www.i-programmer.info/news/84-database/6624-rocksdb-facebooks-database-now-open-source.html |title=RocksDB - Facebook's Database Now Open Source |accessdate=March 10, 2016}}
9. ^{{cite web |url=https://github.com/facebook/rocksdb/tree/3c327ac2d0fd50bbd82fe1f1af5de909dad769e6/env |title=GitHub pull request |accessdate=July 20, 2017}}
10. ^{{cite web |url=https://www.theregister.co.uk/2017/07/17/apache_says_no_to_facebook_code_libraries/ |title=Apache says 'no' to Facebook code libraries |accessdate=July 20, 2017}}
11. ^{{cite web |url=https://github.com/facebook/rocksdb/issues/2605 |title=GitHub issue |accessdate=July 20, 2017}}
12. ^{{cite web |url=https://github.com/facebook/rocksdb/blob/master/USERS.md |title=Users.md |accessdate=December 1, 2015}}
13. ^{{cite web |url=http://www.i-programmer.info/news/84-database/8542-rocksdb-on-steroids.html |title=RocksDB on Steroids |accessdate=March 10, 2016}}
14. ^{{cite web |url=https://engineering.linkedin.com/performance/benchmarking-apache-samza-12-million-messages-second-single-node |title=Benchmarking Apache Samza: 1.2 million messages per second on a single node |accessdate=March 10, 2016}}
15. ^{{Cite web|url=https://github.com/facebook/rocksdb/wiki/Transactions|title=RocksDB transactions|website=GitHub|access-date=2016-04-04}}
16. ^{{Cite web|url=https://github.com/facebook/rocksdb/wiki/How-to-backup-RocksDB%3F|title=How to backup RocksDB?|access-date=2017-07-19}}
17. ^{{Cite web|url=https://github.com/facebook/rocksdb/wiki/Checkpoints|title=Checkpoints|access-date=2017-07-19}}
18. ^{{Cite web|url=https://github.com/facebook/rocksdb/wiki/Column-Families|title=Column families in RocksDB|website=GitHub|access-date=2016-04-04}}
19. ^{{Cite web|url=https://github.com/facebook/rocksdb/wiki/RocksDB-Bloom-Filter|title=RocksDB bloom filters|website=GitHub|access-date=2016-04-04}}
20. ^{{Cite web|url=https://github.com/facebook/rocksdb/wiki/Time-to-Live|title=RocksDB TTL support|website=GitHub|access-date=2016-04-04}}
21. ^{{Cite web|url=https://github.com/facebook/rocksdb/wiki/Universal-Compaction|title=Universal compaction|website=GitHub|access-date=2016-04-04}}
22. ^{{Cite web|url=https://github.com/facebook/rocksdb/wiki/Merge-Operator-Implementation|title=RocksDB merge operator|website=GitHub|access-date=2016-04-04}}
23. ^{{Cite web|url=https://github.com/facebook/rocksdb/wiki/Perf-Context-and-IO-Stats-Context|title=RocksDB perf context and IO stats context|website=GitHub|access-date=2016-04-04}}
24. ^{{Cite web|url=https://rocksdb.org/blog/2015/07/17/spatial-indexing-in-rocksdb.html|title=Spatial indexing in RocksDB|website=rocksdb.org|access-date=2018-07-19}}
25. ^{{cite web |url= https://github.com/facebook/rocksdb/commit/cc6c32535aec596036c56fe742a39182539f76fa |title=First commit where RocksDB diverges from LevelDB |date=May 10, 2012 |accessdate=March 15, 2016}}
26. ^{{cite web |url=https://github.com/facebook/rocksdb/commit/6eb5ed9a4922ec2d121768adfa3ab3b6ead5d627 |title=rocksdb README file |date=Nov 30, 2012 |accessdate=March 15, 2016}}
27. ^{{cite web |url=http://rocksdb.blogspot.com/2013/11/the-history-of-rocksdb.html |title=The History of RocksDB |date= November 24, 2013 |accessdate=March 10, 2016}}
28. ^{{cite web |url=https://www.youtube.com/watch?v=V_C-T5S-w8g |title=RocksDB: A High Performance Embedded Key-Value Store for Flash Storage - Data@Scale |date= November 22, 2013 |accessdate=March 10, 2016 |quote=... The story of why we decided to do RocksDB ... |first1=Dhruba |last1=Borthakur}}
29. ^{{cite news |last=Edwards |first=Jessica |url=http://thenewstack.io/cockroachdb-unkillable-distributed-sql-database/ |title=Hello World: Meet CockroachDB, the Resilient SQL Database |work=The New Stack |date=2015-10-29 |accessdate=2016-07-08}}
30. ^{{cite web|url=https://www.arangodb.com/why-arangodb/comparing-rocksdb-mmfiles-storage-engines/|title=Comparing new RocksDB and MMFiles storage engines|publisher=}}
31. ^{{cite web|url=https://www.arangodb.com/2018/09/rc1-arangodb-3-4-whats-new/|title=RC1 ArangoDB 3.4 - Whats new?|publisher=}}
32. ^{{cite web|url=https://github.com/mongodb-partners/mongo-rocks|title=mongodb-partners/mongo-rocks|publisher=}}
33. ^{{cite web |url=https://rocksdb.org/blog/2015/04/22/integrating-rocksdb-with-mongodb-2.html |title=Integrating RocksDB with MongoDB |accessdate=July 19, 2018}}
34. ^{{cite web |url=http://blog.parse.com/announcements/mongodb-rocksdb-parse/ |title=MongoDB + RocksDB at Parse |accessdate=December 1, 2015}}
35. ^{{cite web|url=https://github.com/facebookgo/rocks-strata|title=facebookgo/rocks-strata|publisher=}}
36. ^{{cite web|url=https://github.com/facebook/mysql-5.6|title=facebook/mysql-5.6|publisher=}}
37. ^{{cite web |url=https://www.percona.com/live/europe-amsterdam-2015/sites/default/files/slides/MyRocksAtFacebook_201509.pdf |title=MyRocks: MySQL on RocksDB |accessdate=November 29, 2015}}
38. ^{{cite web |url=http://www.slideshare.net/matsunobu/myrocks-deep-dive/ |title=MyRocks Deep Dive |accessdate=May 9, 2016}}
39. ^{{cite web|url=https://www.percona.com/live/18/sessions/cassandra-on-rocksdb|title=Cassandra on RocksDB at Percona Live 2018|publisher=}}
40. ^{{cite web|url=https://instagram-engineering.com/open-sourcing-a-10x-reduction-in-apache-cassandra-tail-latency-d64f86b43589|title=Open-sourcing a 10x reduction in Apache Cassandra tail latency|publisher=}}
41. ^{{cite web|url=http://docs.ceph.com/docs/luminous/rados/configuration/storage-devices/|title=Storage Devices -- Ceph Documentation|publisher=}}
42. ^{{cite web|url=https://code.facebook.com/posts/357056558062811/logdevice-a-distributed-data-store-for-logs/|title=LogDevice: a distributed data store for logs|publisher=Mark Marchukov, Facebook}}
43. ^{{cite web|url=https://github.com/contribsys/faktory|title=contribsys/faktory|publisher=}}
44. ^{{cite web|url=http://www.mikeperham.com/2017/10/24/introducing-faktory/|title=Introducing Faktory|publisher=Mike Perham}}
45. ^{{cite web|url=https://github.com/ideawu/ssdb-rocks|title=ideawu/ssdb-rocks|publisher=}}
46. ^https://ssdb.io
47. ^{{cite web|url=https://github.com/pingcap/tidb|title=ideawu/ssdb-rocks|publisher=}}
48. ^https://pingcap.github.io/blog/2017/07/11/tidbinternal1/#rocksdb
49. ^{{cite web|url=https://github.com/warrenfalk/rocksdb-sharp|title=warrenfalk/rocksdb-sharp|publisher=}}
50. ^{{cite web|url=https://github.com/b1naryth1ef/rocksdb|title=b1naryth1ef/rocksdb|publisher=}}
51. ^{{cite web|url=https://github.com/urbint/rox|title=urbint/rox|publisher=}}
52. ^{{cite web|url=https://github.com/leo-project/erocksdb|title=leo-project/erocksdb|publisher=}}
53. ^{{cite web|url=https://gitlab.com/barrel-db/erlang-rocksdb|title=barrel-db/erlang-rocksdb|publisher=}}
54. ^{{cite web|url=https://github.com/tecbot/gorocksdb|title=tecbot/gorocksdb|publisher=}}
55. ^{{cite web|url=https://hackage.haskell.org/package/rocksdb-haskell|title=rocksdb-haskell: Haskell bindings to RocksDB|publisher=}}
56. ^{{cite web|url=https://github.com/facebook/rocksdb/wiki/RocksJava-Basics|title=RocksJava}}
57. ^{{cite web|url=https://npmjs.org/package/rocksdb|title=rocksdb|publisher=}}
58. ^{{cite web|url=https://github.com/iabudiab/ObjectiveRocks|title=iabudiab/ObjectiveRocks|publisher=}}
59. ^{{cite web|url=https://github.com/ahrefs/ocaml-ahrocksdb|title=OCaml bindings for RocksDB|publisher=}}
60. ^{{cite web|url=https://github.com/domsj/orocksdb|title=An OCaml RocksDb binding using ocaml-ctypes|publisher=}}
61. ^{{cite web|url=https://metacpan.org/pod/RocksDB|title=RocksDB - Perl extension for RocksDB - metacpan.org|publisher=}}
62. ^{{cite web|url=https://github.com/Photonios/rocksdb-php|title=Photonios/rocksdb-php|publisher=}}
63. ^{{cite web|url=http://www.swi-prolog.org/pack/list?p=rocksdb|title=SWI-Prolog interface for RocksDB}}
64. ^{{cite web|url=https://github.com/stephan-hof/pyrocksdb|title=stephan-hof/pyrocksdb|publisher=}}
65. ^{{cite web|url=http://rubygems.org/gems/rocksdb-ruby|title=rocksdb-ruby - RubyGems.org - your community gem host|publisher=}}
66. ^{{cite web|url=https://github.com/spacejam/rust-rocksdb|title=spacejam/rust-rocksdb|publisher=}}

External links

  • {{Official website|rocksdb.org}}
{{Facebook navbox}}

5 : NoSQL|Database engines|Embedded databases|C++ libraries|Facebook software

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/12 7:39:10