RocksDB
![]() | |
Originalautor (en) | Dhruba Borthakur |
---|---|
Entwickler (en) | Facebook, Inc. |
Erstveröffentlichung | Mai 2012 |
Stabile Version | 7.3.1[1] ![]() |
Repository | |
Geschrieben in | C ++ |
Betriebssystem | Fenster, Mac OS, Linux, Freebsd, OpenBSD, Solaris, AIX |
Plattform | x86, x86_64, PPC64, ppc64le, aarch64, S390X |
Typ | Eingebettete Datenbank |
Lizenz | Apache 2.0 oder GPL 2 |
Webseite | Rocksdb |
Rocksdb ist eine hohe Leistung[2][3][4][5][6] eingebettete Datenbank zum Schlüsselwert Daten. Es ist eine Gabel von Google's Leveldb optimiert, um viele auszunutzen CPU -Kerneund nutzen effiziente Einsatz von schnellem Speicher, wie z. Solid State Drives (SSD), für Eingabe/Ausgabe (E/O) gebunden Workloads. Es basiert auf einem Logstrukturierte Zusammenführungsbaum (LSM -Baum) Datenstruktur. Es ist geschrieben in C ++ und liefert offiziell Sprachbindungen zum C ++, C, und Java; neben vielen Sprachbindungen von Drittanbietern. Rocksdb ist Quelloffene Softwareund wurde ursprünglich unter einem freigelassen BSD 3-Klausel Lizenz.[7][8][9] Im Juli 2017 wurde das Projekt jedoch in eine doppelte Lizenz von Apache 2.0 und GPLV2 -Lizenz migriert.[10] möglicherweise als Antwort auf die Blacklist der Apache Software Foundation der vorherigen BSD+Patent -Lizenzklausel.[11][12]
RocksDB wird in Produktionssystemen bei verschiedenen Webmaßstab Unternehmen[13] einschließlich Facebook, Yahoo!,[14] und LinkedIn.[15]
Merkmale
Rocksdb wie Leveldb, speichert Schlüssel und Werte in willkürlichen Byte-Arrays, und Daten werden nach Schlüssel oder durch Bereitstellung eines benutzerdefinierten Komparators sortiert.
RocksDB bietet alle Funktionen von LevelDB sowie:
- Transaktionen[16]
- Backups[17] und Schnappschüsse[18]
- Säulenfamilien[19]
- Blütefilter[20]
- TTL -Unterstützung (TTL)[21]
- Universelle Verdichtung[22]
- Betreiber zusammenführen[23]
- Statistiksammlung[24]
- Geospatial Indexierung[25]
und andere: Liste der RocksDB -Funktionen, die nicht in LevelDB enthalten sind.
RocksDB ist kein Sql Datenbank (obwohl Myrocks kombiniert RocksDB mit Mysql). Wie andere NoSQL und DBM In Stores gibt es kein relationales Datenmodell und unterstützt keine SQL -Abfragen. Außerdem unterstützt es keine direkte Unterstützung für sekundäre Indizes, ein Benutzer kann jedoch seine eigenen intern mit Spaltenfamilien oder extern erstellen. Anwendungen verwenden RocksDB als Bibliothek, da sie keine Server- oder Befehlszeilenschnittstelle bereitstellt.
Geschichte
Rocksdb wurde in Facebook von Dhruba Borthakur erstellt[26][27] im April 2012 als Gabel von Leveldb Mit dem ersten angegebenen Ziel, die Leistung für Server -Workloads zu verbessern.[28][29]
Integration
Als eingebettbare Datenbank kann RocksDB als Speichermotor innerhalb einer größeren Verwendung verwendet werden Datenbank Management System (DBMS). Zum Beispiel, Kakerlachdb verwendet RocksDB als Speichermotor,[30] Hauptsächlich für Transaktionsarbeitslasten während Rockset Verwendet RocksDB Meistens für die analytische Datenverarbeitung. Dies zeigt, dass RocksDB als Speichermotor für beide verwendet werden kann Online -Transaktionsverarbeitung und Online -Analyseverarbeitung.
Alternatives Backend
Die folgenden Projekte wurden begonnen, um alternative Speichermotoren für bereits etablierte Datenbanksysteme mit ROCSDB zu ersetzen oder anzubieten:
Arangodb
Arangodb hat seiner vorherigen Speichermotor RocksDB hinzugefügt ("MMFiles").[31] Ab Arangodb 3.4 ist RocksDB die Standard -Speicher -Engine in Arangodb.[32]
Kassandra
Kassandra Auf RocksDB kann die Leistung von Apache Cassandra erheblich verbessern (3-4-mal schneller im Allgemeinen, 100-mal schneller in einigen Anwendungsfällen). Das Instagram-Team von Facebook hat seinen Code zusammen mit den Benchmarks ihrer Leistungsergebnisse entwickelt und geöffnet.[33]
Mariadb
Mariadb Kann die MyRocks Storage Engine (die aus RocksDB gegabelt wird) seit Mariadb 10.2.5 (Alpha -Status) verwenden. [34] und stabil seit Mariadb 10.2.16 im Jahr 2018.[35]
MongoDB
Das Mongorocks -Projekt bietet ein Speichermodul für MongoDB wo der Speichermotor RocksDB ist.[36][37][38]
Ein verwandtes Programm ist Rocks Strata, ein Werkzeug in geschrieben gehen, was ermöglicht, inkrementelle Backups von MongoDB zu verwalten, wenn RocksDB als Speichermotor verwendet wird.[39]
Mysql
Das MyRocks -Projekt erstellt eine neue RocksDB -basierte Speicher -Engine für Mysql.[40][41] In Percona Live 2016 wurden ausführliche Details zu Myrocks vorgestellt.[42]
Eingebettet
Die folgenden Datenbanksysteme und Anwendungen haben sich für die Verwendung von RocksDB als eingebetteter Speicher -Engine ausgewählt:
Cephs Bluestore
Das Cephs Bluestore Storage Layer verwendet RocksDB für das Metadatenmanagement in OSD -Geräten.[43]
Apache Flink
Apache Flink verwendet RocksDB, um Kontrollpunkte zu speichern.[44]
Fusiondb
Fusiondb[45] Verwendet RocksDB als Speichermotor für XML, Schlüssel/Wert und JSON.[46]
LogDevice logsdb
LogSdb von LogDevice ist auf RocksDB gebaut.[47]
Rockset
Das Rockset Service, der für Betriebsdatenanalysen verwendet wird, verwendet RocksDB als Speicher -Engine.[48]
SSDB
Die SSDB-Rocks[49] Das Projekt verwendet RocksDB als Speichermotor für die SSDB[50] NoSQL -Datenbank.
Tidb
Der TIDB[51] Project verwendet RocksDB als Speichermotor.[52]
Yugabytedb
Das Yugabytedb[53] Die Datenbank verwendet eine modifizierte Version von RocksDB als Teil ihrer DOCDB -Speicher -Engine
Sprachbindungen von Drittanbietern
Zu den für RocksDB verfügbaren Programmiersprachenbindungen von Drittanbietern gehören:
Verweise
- ^ "Rocksdb 7.3.1". 8. Juni 2022. Abgerufen 8. Juni 2022.
- ^ "Performance -Benchmarks". GitHub. Abgerufen 29. November, 2015.
- ^ "Benchmarking der LevelDB -Familie". 7. Juli 2014. Abgerufen 10. März, 2016.
- ^ "Vergleich von LevelDB und RocksDB, nehmen Sie 2". 27. April 2015. Abgerufen 10. März, 2016.
- ^ "Benchmarking LevelDB vs. Rocksdb gegen HyperlevelDB gegen LMDB -Leistung für InfluxDB". 20. Juni 2014. Abgerufen 10. März, 2016.
- ^ Golan-Gueta, Kerl; Bortnikov, Edward; Hillel, Eschar; Keidar, Idit (21. April 2015). "Skalierung gleichzeitiger logaritischer Datenspeicher". Eurosys '15 Proceedings der zehnten Europäischen Konferenz auf Computersystemen: 1–14. doi:10.1145/2741948.2741973. ISBN 9781450332385. S2CID 5849146.
- ^ "Die neueste Open-Source-Bemühungen von Facebook: Eine Flash-betriebene Datenbank namens RocksDB". 21. November 2013. Abgerufen 10. März, 2016.
- ^ "Unter der Motorhaube: RocksDB aufbauen und Open-Sourcing". Facebook. Abgerufen 10. März, 2016.
- ^ "RocksDB - Die Datenbank von Facebook jetzt Open Source". Abgerufen 10. März, 2016.
- ^ "Github Pull Anfrage". GitHub. Abgerufen 20. Juli, 2017.
- ^ "Apache sagt 'nein' zu Facebook -Code -Bibliotheken". Das Register. Abgerufen 20. Juli, 2017.
- ^ "Github Problem". GitHub. Abgerufen 20. Juli, 2017.
- ^ "User.md". GitHub. Abgerufen 1. Dezember, 2015.
- ^ "Rocksdb auf Steroiden". Abgerufen 10. März, 2016.
- ^ "Benchmarking Apache Samza: 1,2 Millionen Nachrichten pro Sekunde auf einem einzelnen Knoten". Abgerufen 10. März, 2016.
- ^ "RocksDB -Transaktionen". GitHub. Abgerufen 2016-04-04.
- ^ "Wie kann man RocksDB unterstützen?". GitHub. Abgerufen 2017-07-19.
- ^ "Kontrollpunkte". GitHub. Abgerufen 2017-07-19.
- ^ "Säulenfamilien in Rocksdb". GitHub. Abgerufen 2016-04-04.
- ^ "Rocksdb Bloom Filter". GitHub. Abgerufen 2016-04-04.
- ^ "Rocksdb TTL Support". GitHub. Abgerufen 2016-04-04.
- ^ "Universelle Verdichtung". GitHub. Abgerufen 2016-04-04.
- ^ "RocksDB Merge -Operator". GitHub. Abgerufen 2016-04-04.
- ^ "RocksDB -Perf -Kontext und IO -Statistiken Kontext". GitHub. Abgerufen 2016-04-04.
- ^ "Raumindexierung in Rocksdb". Rocksdb.org. Abgerufen 2018-07-19.
- ^ "First Commit, wo Rocksdb von LevelDB abweist". GitHub. 10. Mai 2012. Abgerufen 15. März, 2016.
- ^ "RocksDB Readme -Datei". GitHub.30. November 2012. Abgerufen 15. März, 2016.
- ^ "Die Geschichte von Rocksdb". 24. November 2013. Abgerufen 10. März, 2016.
- ^ Borthakur, Dhruba (22. November 2013). "RocksDB: Ein Hochleistungs -eingebetteter Schlüsselwertspeicher für Flash -Speicher - Data@Scale". Youtube. Abgerufen 10. März, 2016.
... die Geschichte, warum wir uns entschlossen haben, Rocksdb zu machen ...
- ^ Edwards, Jessica (2015-10-29). "Hallo Welt: Treffen Sie Cockroachdb, die widerstandsfähige SQL -Datenbank". Der neue Stapel. Abgerufen 2016-07-08.
- ^ "Vergleich neuer RocksDB- und MMFiles -Speichermotoren".
- ^ "RC1 Arangodb 3.4 - Was ist neu?". 6. September 2018.
- ^ "Open-Sourcing Eine 10-fache Verringerung der Apache Cassandra Tail Latenz". 5. März 2018.
- ^ "Myrocks". Mariadb KnowledgeBase. Abgerufen 2019-04-28.
- ^ "Mariadb 10.2.16 Versionshinweise".
- ^ "MongoDB-Partner/Mongo-Rocks". GitHub. 29. Oktober 2021.
- ^ "RocksDB in MongoDB integrieren". Abgerufen 19. Juli, 2018.
- ^ "MongoDB + Rocksdb bei Parse". Abgerufen 1. Dezember, 2015.
- ^ "Facebookgo/Rocks-Strata". GitHub. 31. Oktober 2021.
- ^ "Facebook/MySQL-5.6". GitHub. 2. November 2021.
- ^ "MyRocks: Mysql auf Rocksdb" (PDF). Abgerufen 29. November, 2015.
- ^ "Myrocks tiefen Tauchgang". 19. April 2016. Abgerufen 9. Mai, 2016.
- ^ "Speichergeräte - CEPH -Dokumentation".
- ^ "Apache Flink 1.8 Dokumentation: Status Backends". ci.apache.org. Abgerufen 2019-08-11.
- ^ "Fusiondb". Binär entwickelt.
- ^ "Die Gestaltung und Implementierung von FusionDB" (PDF). XML Prag.
- ^ "LogDevice: Ein verteilter Datenspeicher für Protokolle". Mark Marchukov, Facebook. 31. August 2017.
- ^ "Wie wir Rocksdb bei Rockset verwenden". Rockset.com. Abgerufen 2019-07-10.
- ^ "Ideawu/SSDB-Rocks". GitHub. 21. August 2021.
- ^ https://ssdb.io
- ^ "pingcap/tidb". GitHub. 4. November 2021.
- ^ "TIDB Internal (i) - Datenspeicherung". Shen Li.
- ^ "Wie haben wir einen Hochleistungsdokumentengeschäft auf RocksDB gebaut?". 20. Februar 2019.
- ^ "Warrenfalk/Rocksdb-sharp". GitHub. 28. September 2021.
- ^ "Chicken-Rocksdb".
- ^ "B1NARYTH1EF/ROCKSDB". GitHub. 22. Oktober 2019.
- ^ "Urbint/Rox". GitHub. September 2021.
- ^ "Leo-project/eocksdb". GitHub. September 2021.
- ^ "Barrel-DB/Erlang-Rocksdb".
- ^ "Tecbot/Gorocksdb". GitHub. 29. Oktober 2021.
- ^ "Rocksdb-Haskell: Haskell-Bindungen an Rocksdb".
- ^ "Rocksjava". GitHub.
- ^ "Rocksdb".
- ^ "iabudiab/objectiverocks". GitHub. 2. August 2021.
- ^ "OCAML -Bindungen für RocksDB". GitHub. 8. Oktober 2021.
- ^ "Eine OCAML RocksDB-Bindung unter Verwendung von OCAML-CTYPES". GitHub. 28. September 2020.
- ^ "Rocksdb - Perl -Erweiterung für Rocksdb - metacpan.org".
- ^ "Photonios/Rocksdb-Php". GitHub. 11. August 2021.
- ^ "Swi-Prolog-Schnittstelle für RocksDB".
- ^ "Stephan-hof/pyrocksdb". GitHub. 27. Oktober 2021.
- ^ "Rocksdb -Ruby - Rubygems.org - Ihr Community -Edelstein -Host".
- ^ "Spacejam/Rust-Rocksdb". GitHub. 2. November 2021.