RocksDB

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

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

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

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

 トランザクション
 バックアップとスナップショット

 ブルームフィルタ
 Time to live（TTL）のサポート
 Universal compaction
 Merge operators
 Statistics collection
 Geospatial indexing

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

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

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

インテグレーション 
組み込み可能なデータベースであるため、RocksDBは、より大きなデータベース管理システム（DBMS）の内部でストレージエンジンとして使用することができる。たとえば、はRocksDBをストレージエンジンとして使用している。

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

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

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

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

Cassandra

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

ArangoDB 
は、以前使用していたストレージエンジン（"mmfiles"）をRocksDBで置換した。

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

LogDevice LogsDB 
LogDeviceのLogsDBは、RocksDBの上に構築されている。

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

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

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

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

 C#
 D
 Elixir
 Erlang
 Go
 Haskell
 Java
 Node.js
 Objective-C, and Swift
 Perl
 PHP
 Python
 Ruby
 Rust

参考文献

外部リンク 

 
 RocksDB Users mailing list
 Wiki of documentation
 Source Code repository
 Rocksdb.dev Facebook Group
NoSQLデータベース
Facebookのソフトウェア