RocksDB

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は、その高性能と柔軟性から、多くの企業やプロジェクトで採用されています。

  • - エンタープライズシステム: FacebookYahoo!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は、高性能で柔軟なキーバリュー型組み込みデータベースであり、多様な環境で利用されています。高速なデータ処理が必要なアプリケーションや、大規模なシステムでの利用に適しています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。