トップQs
タイムライン
チャット
視点

RocksDB

高性能のkey-valueのデータを格納する組み込みデータベース ウィキペディアから

RocksDB
Remove ads

RocksDBは、高性能の[1][2][3][4][5]key-valueのデータを格納する組み込みデータベース英語版である。LevelDB英語版のフォークであり、多数のCPUコアを活用して、入出力(I/O)バウンドなワークロードに対して、ソリッドステートドライブ(SSD)のような高速なストレージを効率よく使用するように最適化されている。log-structured merge-tree英語版(LSMツリー)と呼ばれるデータ構造に基づいている。コードはC++で書かれており、C++、CJavaのための公式のアプリケーションプログラミングインターフェイス(API)バインディングの他、多数のサードパーティの言語バインディングも提供されている。RocksDBはオープンソースソフトウェアであり、当初はBSD 3-clauseライセンスのもとでリリースされていた[6][7][8]が、2017年7月、Apache 2.0とGPLv2ライセンスのデュアルライセンスに移行した[9]。これは、Apache Software Foundationが、以前のBSD+Patentsライセンス条項をブラックリストに加えたことに応じたものと考えられている[10][11]

概要 開発元, 初版 ...

RocksDBは、ウェブスケールの様々なエンタープライズのプロダクションシステムで使用されている[12]。使用している企業としては、FacebookYahoo![13]LinkedIn[14]などがある。

Remove ads

機能

RocksDBは、LevelDBと同様に、任意のデータ型のキーとバリューを格納する。格納されたデータは、キーまたはカスタムのコンパレータ関数によって、バイト単位でソートされる。

RocksDBは、LevelDBのすべての機能に加えて、以下の追加機能を提供する。

さらにその他の機能については、こちらを参照すること。List of RocksDB features that are not in LevelDB

RocksDBはSQLデータベースではない(ただし、MyRocks英語版というRocksDBでMySQLの機能を使用できるようにする実装もある)。他のNoSQLDbmストアと同様、関係データモデルは持たず、SQLクエリもサポートしない。セカンダリインデックスも直接はサポートしないが、ユーザがColumn Familiesを使用して内部的に構築したり、外部的に構築することは可能である。サーバーもコマンドラインインターフェイスも存在しないため、アプリケーションはRocksDBをライブラリとして使用する。

Remove ads

歴史

RocksDBは、2012年4月、FacebookでDhruba BorthakurがLevelDBのフォークとして開発した[25][26]。 初期段階の目標は、サーバーのワークロードのための性能向上だった[27][28]

インテグレーション

組み込み可能なデータベースであるため、RocksDBは、より大きなデータベース管理システム(DBMS)の内部でストレージエンジンとして使用することができる。たとえば、CockroachDB英語版はRocksDBをストレージエンジンとして使用している[29]

代替バックエンド

以下のプロジェクトでは、すでに確立しているデータベースシステムをRocksDBで置換したり、代替ストレージエンジンを提供したりしています。

MongoDB

MongoRocksプロジェクトでは、MongoDBのストレージエンジンとしてRocksDBを使用するためのストレージモジュールを開発している[30][31][32]

関連するプログラムとして、Goで書かれたツールであるRocks Strataがある。これを利用すると、RocksDBをストレージエンジンとして使用しているときにMongoDBの増分パックアップが管理できるようになる[33]

MySQL

MyRocksプロジェクトでは、MySQLのための新しいRocksDBベースのストレージエンジンを開発している[34][35]。MyRocksの詳細については、Percona Live 2016でプレゼンテーションされた[36]

Cassandra

組み込み

以下のデータベースシステムやアプリケーションは、RocksDBを組み込みのストレージとして使用することを選択している。

ArangoDB

ArangoDB英語版は、以前使用していたストレージエンジン("mmfiles")をRocksDBで置換した[37]

CephのBlueStore

CephのBlueStoreストレージのレイヤーでは、OSDデバイス上のメタデータ管理のためにRocksDBを使用している[38]

LogDevice LogsDB

LogDeviceのLogsDBは、RocksDBの上に構築されている[39]

Faktory

バックグラウンドジョブシステムのFacktory[40]は、RocksDBをストレージとして使用している[41]

SSDB

ssdb-rocks[42]プロジェクトでは、SSDB[43] NoSQLデータベースのためのストレージエンジンとしてRocksDBを使用している。

TiDB

TiDB[44]プロジェクトでは、RocksDBをストレージエンジンとして使用している[45]

サードパーティの言語バインディング

以下の言語では、RocksDBのサードパーティ製のプログラミング言語バインディングが使用できる。

参考文献

外部リンク

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads