RocksDBとは
RocksDBは、高性能なキーバリュー型データを格納するための組み込み
データベースです。LevelDBをフォークして開発され、多数の
CPUコアを活用し、I/Oバウンドなワークロードにおいて、SSDのような高速ストレージを効率的に使用できるよう最適化されています。データ構造には、log-structured merge-tree(LSMツリー)が採用されています。
特徴
- - 高速なデータ処理: SSDのような高速ストレージに最適化されており、大量のデータでも高速な読み書きが可能です。
- - 組み込み型データベース: アプリケーションに組み込んで利用できるため、柔軟な設計が可能です。
- - LSMツリー構造: 書き込み性能を向上させるLSMツリー構造を採用しています。
- - 豊富な機能: トランザクション、バックアップ、スナップショット、Column Families、ブルームフィルタ、TTLサポート、Merge Operatorsなど、多様な機能を提供します。
- - 幅広い言語サポート: C++, C, Javaの公式APIに加え、多数のサードパーティ言語バインディングが利用可能です。
- - オープンソース: Apache 2.0とGPLv2のデュアルライセンスで提供されており、自由に利用できます。
機能詳細
RocksDBは、LevelDBと同様に、任意のデータ型のキーとバリューを格納できます。格納されたデータは、キーまたはカスタムのコンパレータ関数によって、バイト単位でソートされます。
LevelDBの機能に加え、以下の機能が提供されています。
- - トランザクション: 複数の操作をまとめて処理し、データの整合性を保つことができます。
- - バックアップとスナップショット: データのバックアップや特定時点の状態を保存することができます。
- - Column Families: データを複数のグループに分けて管理することができます。
- - ブルームフィルタ: データが存在するかどうかを高速に判定できます。
- - TTLサポート: データに有効期限を設定できます。
- - Universal compaction: データ圧縮を最適化できます。
- - Merge operators: データのマージ処理を柔軟に行えます。
- - Statistics collection: データベースの統計情報を収集できます。
- - Geospatial indexing: 地理空間データのインデックスを作成できます。
RocksDBは
SQLデータベースではありませんが、MyRocksという
My[[SQL]]のストレージエンジンとして利用可能な実装も存在します。関係データモデルや
SQLクエリはサポートしていません。セカンダリインデックスは直接サポートしていませんが、
Column Familiesを利用して内部的に構築したり、外部的に構築することは可能です。
歴史
RocksDBは、2012年4月に
FacebookでDhruba BorthakurによってLevelDBのフォークとして開発されました。当初の目標は、サーバーのワークロードにおけるパフォーマンス向上でした。
利用事例
RocksDBは、その高性能と柔軟性から、多くの企業やプロジェクトで採用されています。
- - エンタープライズシステム: Facebook、Yahoo!、LinkedInなどの大規模なウェブサービスで利用されています。
- - データベースのストレージエンジン: CockroachDBなどのDBMSでストレージエンジンとして利用されています。
- - MongoDB: MongoRocksプロジェクトでストレージエンジンとしてRocksDBを利用するモジュールが開発されています。
- - My[[SQL]]: MyRocksプロジェクトでRocksDBベースの新しいストレージエンジンが開発されています。
- - Cassandra: ストレージエンジンとしてRocksDBを利用できます。
- - ArangoDB: 以前のストレージエンジンをRocksDBに置き換えました。
- - Ceph: BlueStoreストレージレイヤーでメタデータ管理にRocksDBを使用しています。
- - LogDevice LogsDB: RocksDB上に構築されています。
- - Faktory: バックグラウンドジョブシステムでストレージとして利用されています。
- - SSDB: SSDB NoSQLデータベースのストレージエンジンとして利用されています。
- - TiDB: ストレージエンジンとしてRocksDBを利用しています。
言語バインディング
以下の言語でRocksDBを利用できます(サードパーティ製バインディング含む)。
まとめ
RocksDBは、高性能で柔軟なキーバリュー型組み込み
データベースであり、多様な環境で利用されています。高速なデータ処理が必要なアプリケーションや、大規模なシステムでの利用に適しています。