RocksDB
開発元 Facebook
初版 2012年5月 (12年前) (2012-05)
最新版
9.10.0 / 2024年12月12日 (2か月前) (2024-12-12)
リポジトリ ウィキデータを編集
プログラミング
言語
C++
対応OS Windows、macOS、Linux、FreeBSD
サポート状況 プロダクション
種別 組み込みデータベース
ライセンス Apache 2.0またはGPL 2
公式サイト rocksdb.org
テンプレートを表示

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

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

機能

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

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

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

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

歴史

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のサードパーティ製のプログラミング言語バインディングが使用できる。

参考文献

  1. ↑ “Performance Benchmarks”. November 29, 2015閲覧。
  2. ↑ “Benchmarking the leveldb family”. March 10, 2016閲覧。
  3. ↑ “Comparing LevelDB and RocksDB, take 2”. March 10, 2016閲覧。
  4. ↑ “Benchmarking LevelDB vs. RocksDB vs. HyperLevelDB vs. LMDB Performance for InfluxDB”. March 10, 2016閲覧。
  5. ↑ Golan-Gueta, Guy; Bortnikov, Edward; Hillel, Eschar; Keidar, Idit (April 21, 2015). “Scaling Concurrent Log-Structured Data Stores”. EuroSys '15 Proceedings of the Tenth European Conference on Computer Systems. doi:10.1145/2741948.2741973.
  6. ↑ “Facebook’s latest open source effort: a flash-powered database called RocksDB”. March 10, 2016閲覧。
  7. ↑ “Under the Hood: Building and open-sourcing RocksDB”. March 10, 2016閲覧。
  8. ↑ “RocksDB - Facebook's Database Now Open Source”. March 10, 2016閲覧。
  9. ↑ “GitHub pull request”. July 20, 2017閲覧。
  10. ↑ “Apache says 'no' to Facebook code libraries”. July 20, 2017閲覧。
  11. ↑ “GitHub issue”. July 20, 2017閲覧。
  12. ↑ “Users.md”. December 1, 2015閲覧。
  13. ↑ “RocksDB on Steroids”. March 10, 2016閲覧。
  14. ↑ “Benchmarking Apache Samza: 1.2 million messages per second on a single node”. March 10, 2016閲覧。
  15. ↑ “RocksDB transactions”. GitHub. 2016年4月4日閲覧。
  16. ↑ “How to backup RocksDB?”. 2017年7月19日閲覧。
  17. ↑ “Checkpoints”. 2017年7月19日閲覧。
  18. ↑ “Column families in RocksDB”. GitHub. 2016年4月4日閲覧。
  19. ↑ “RocksDB bloom filters”. GitHub. 2016年4月4日閲覧。
  20. ↑ “RocksDB TTL support”. GitHub. 2016年4月4日閲覧。
  21. ↑ “Universal compaction”. GitHub. 2016年4月4日閲覧。
  22. ↑ “RocksDB merge operator”. GitHub. 2016年4月4日閲覧。
  23. ↑ “RocksDB perf context and IO stats context”. GitHub. 2016年4月4日閲覧。
  24. ↑ “Spatial indexing in RocksDB”. rocksdb.org. 2018年7月19日閲覧。
  25. ↑ “First commit where RocksDB diverges from LevelDB” (May 10, 2012). March 15, 2016閲覧。
  26. ↑ “rocksdb README file” (Nov 30, 2012). March 15, 2016閲覧。
  27. ↑ “The History of RocksDB” (November 24, 2013). March 10, 2016閲覧。
  28. ↑ Borthakur, Dhruba (November 22, 2013). “RocksDB: A High Performance Embedded Key-Value Store for Flash Storage - Data@Scale”. March 10, 2016閲覧。 “... The story of why we decided to do RocksDB ...”
  29. ↑ Edwards, Jessica (2015年10月29日). “Hello World: Meet CockroachDB, the Resilient SQL Database”. The New Stack 2016年7月8日閲覧。
  30. ↑ “mongodb-partners/mongo-rocks”. 2018年8月28日閲覧。
  31. ↑ “Integrating RocksDB with MongoDB”. July 19, 2018閲覧。
  32. ↑ “MongoDB + RocksDB at Parse”. December 1, 2015閲覧。
  33. ↑ “facebookgo/rocks-strata”. 2018年8月28日閲覧。
  34. ↑ “facebook/mysql-5.6”. 2018年8月28日閲覧。
  35. ↑ “MyRocks: MySQL on RocksDB”. November 29, 2015閲覧。
  36. ↑ “MyRocks Deep Dive”. May 9, 2016閲覧。
  37. ↑ “Comparing new RocksDB and MMFiles storage engines”. 2018年8月2日閲覧。
  38. ↑ “Storage Devices -- Ceph Documentation”. 2018年8月2日閲覧。
  39. ↑ “LogDevice: a distributed data store for logs”. Mark Marchukov, Facebook. 2018年8月2日閲覧。
  40. ↑ “contribsys/faktory”. 2018年8月2日閲覧。
  41. ↑ “Introducing Faktory”. Mike Perham. 2018年8月2日閲覧。
  42. ↑ “ideawu/ssdb-rocks”. 2018年8月2日閲覧。
  43. ↑ https://ssdb.io
  44. ↑ “ideawu/ssdb-rocks”. 2018年8月2日閲覧。
  45. ↑ https://pingcap.github.io/blog/2017/07/11/tidbinternal1/#rocksdb
  46. ↑ “warrenfalk/rocksdb-sharp”. 2018年8月2日閲覧。
  47. ↑ “b1naryth1ef/rocksdb”. 2018年8月2日閲覧。
  48. ↑ “urbint/rox”. 2018年8月2日閲覧。
  49. ↑ “leo-project/erocksdb”. 2018年8月2日閲覧。
  50. ↑ “barrel-db/erlang-rocksdb”. 2018年8月2日閲覧。
  51. ↑ “tecbot/gorocksdb”. 2018年8月2日閲覧。
  52. ↑ “rocksdb-haskell: Haskell bindings to RocksDB”. 2018年8月2日閲覧。
  53. ↑ “RocksJava”. 2018年8月2日閲覧。
  54. ↑ “rocksdb”. 2018年8月2日閲覧。
  55. ↑ “iabudiab/ObjectiveRocks”. 2018年8月2日閲覧。
  56. ↑ “RocksDB - Perl extension for RocksDB - metacpan.org”. 2018年8月2日閲覧。
  57. ↑ “Photonios/rocksdb-php”. 2018年8月2日閲覧。
  58. ↑ “stephan-hof/pyrocksdb”. 2018年8月2日閲覧。
  59. ↑ “rocksdb-ruby - RubyGems.org - your community gem host”. 2018年8月2日閲覧。
  60. ↑ “spacejam/rust-rocksdb”. 2018年8月2日閲覧。

外部リンク

⌬ Phoenix Mesh CID: 未登録 IPFS未登録 📡 0ピア N=1 CRITICAL PQS B69