RocksDB は、キー値データ用の高性能[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]組み込みデータベースです。これは、マルチコアプロセッサ(CPU) を活用し、入出力(I/O ) バウンドなワークロードに対してソリッドステートドライブ(SSD)などの高速ストレージを効率的に使用するように最適化されたGoogleの LevelDB のフォークです。ログ構造マージツリー(LSM ツリー) データ構造に基づいています。C ++で記述されており、 C++、C、Javaの公式言語バインディングを提供しています。多くのサードパーティ言語バインディングが存在します。RocksDB は、 BSD 3 条項ライセンスの下で最初にリリースされた、無料のオープンソースソフトウェアです。[ 7 ] [ 8 ] [ 9 ]しかし、2017 年 7 月に、プロジェクトはApache 2.0とGPLv2ライセンスの両方のデュアルライセンスに移行されました。[ 10 ]この変更により、以前の BSD+特許ライセンス条項がブラックリストに載せられた後、Apache Software Foundation のプロジェクトで採用されるようになりました。[ 11 ] [ 12 ]
RocksDBは、 Facebook、Yahoo! [ 14 ]、LinkedIn [ 15 ]など、さまざまなウェブスケール企業の本番システムで使用されています[ 13 ]。
RocksDBはLevelDBと同様に、キーと値を任意のバイト配列に格納し、データはキーに基づいてバイト単位でソートされるか、カスタムコンパレータを提供することによってソートされます。
RocksDBはLevelDBのすべての機能に加え、以下の機能を提供します。
その他。[ 26 ]
RocksDBはSQLデータベースではありません(ただし、MyRocksはRocksDBとMySQLを組み合わせたものです)。他のNoSQLおよびdbmストアと同様に、リレーショナルデータモデルを持たず、SQLクエリをサポートしていません。また、セカンダリインデックスを直接サポートしていませんが、ユーザーはカラムファミリーを使用して内部的に、または外部的に独自のインデックスを作成できます。RocksDBはサーバーやコマンドラインインターフェースを提供していないため、アプリケーションはライブラリとして使用します。
RocksDBは、2012年4月にFacebookのDhruba Borthakur氏[ 27 ] [ 28 ]によってLevelDBのフォークとして作成され、当初の目標はサーバーワークロードのパフォーマンスを向上させることでした。[ 29 ] [ 30 ]
組み込み可能なデータベースとして、RocksDBはより大規模なデータベース管理システム(DBMS)内のストレージエンジンとして使用できます。たとえば、Rocksetは主に分析データ処理にRocksDB [ 31 ]を使用しています。
以下のプロジェクトは、既存のデータベースシステムをRocksDBに置き換える、または代替ストレージエンジンを提供するために開始されました。
ArangoDB は、以前のストレージ エンジン ("mmfiles") に RocksDB を追加しました。[ 32 ] RocksDB は、ArangoDB 3.4 以降、デフォルトのストレージ エンジンとなっています。[ 33 ]
FacebookのInstagramチームは、コードを開発し、パフォーマンス結果のベンチマークとともにオープンソース化した。[ 34 ]
MariaDB は、MariaDB 10.2.5 (アルファ版) [ 35 ]以降、MyRocks ストレージ エンジン (RocksDB からフォークされたもの) を使用できるようになり、2018 年の MariaDB 10.2.16 以降は安定しています。[ 36 ]
MongoRocksプロジェクトは、ストレージエンジンがRocksDBであるMongoDB用のストレージモジュールを提供します。 [ 37 ] [ 38 ] [ 39 ]
関連プログラムとして、 Go言語で書かれたツールであるRocks Strataがあり、これはストレージエンジンとしてRocksDBを使用している場合にMongoDBの増分バックアップを管理できます。[ 40 ]
MyRocksプロジェクトは、 MySQL用の新しいRocksDBベースのストレージエンジンを作成しました。[ 41 ] [ 42 ] MyRocksの詳細については、Percona Live 2016で発表されました。[ 43 ]
UKV [ 45 ]プロジェクトでは、ユーザーは RocksDB をLevelDBと同等のキーバリュー ストアとして使用できます。これは、すべてのストレージ エンジンに共通する作成、読み取り、更新、削除(CRUD) 操作のための共有抽象化を表しています。また、 Python、Java、Goなどのいくつかの高レベル言語用の構造化バインディングで拡張されています。
以下のデータベースシステムおよびアプリケーションは、組み込みストレージエンジンとしてRocksDBを採用しています。
CephのBlueStoreストレージ層は、OSDデバイスにおけるメタデータ管理にRocksDBを使用しています。[ 46 ]
Apache Flinkはチェックポイントを保存するためにRocksDBを使用します。[ 47 ]
FusionDB [ 48 ]は、XML、キー/バリュー、および JSON のストレージ エンジンとして RocksDB を使用しています。[ 49 ]
LogDeviceのLogsDBはRocksDBの上に構築されています。[ 50 ]
Kafka Streams は状態ストアに RocksDB を使用します。[ 51 ]
Manhattan Distributed Key-Value Storeは、2018年からTwitterデータを保存するための主要エンジンとしてRocksDBを使用しています。[ 52 ]
運用データ分析に使用されるRockset [ 53 ]サービスは、ストレージ エンジンとして RocksDB を使用しています。[ 54 ]
ssdb-rocks [ 55 ]プロジェクトは、SSDB [ 56 ] NoSQL データベースのストレージ エンジンとして RocksDB を使用しています。
YugabyteDBデータベースは、 DocDBストレージエンジンの一部としてRocksDBの改良版を使用しています。[ 59 ]
RocksDBで利用可能なサードパーティ製プログラミング言語バインディングには、以下のものがあります。
{{cite web}}:欠落または空欄|title=(ヘルプ)...
RocksDBの開発に着手した理由
...