コンテンツにスキップ

「RocksDB」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
ページ「RocksDB」の翻訳により作成
(相違点なし)

2018年8月2日 (木) 13:41時点における版

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

RocksDBは、高性能の[1][2][3][4][5]key-valueのデータを格納する組み込みデータベースである。LevelDBのフォークの1つであり、多数の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]などが含まれる。

機能

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

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

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

RocksDBはSQLデータベースではない(ただし、MyRocksというRocksDBでMySQLの機能を使用できるようにする実装もある)。他のNoSQLDbmストアと同様、関係データモデルは持たず、SQLクエリもサポートしない。また、2次インデックスも直接はサポートしないが、ユーザーが自分でColumn〜?またはexternally?を使用して2次インデックスを構築することは可能である。サーバーもコマンドラインインターフェイスも存在しないため、アプリケーションは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”. 2015年11月29日閲覧。
  2. ^ Benchmarking the leveldb family”. 2016年3月10日閲覧。
  3. ^ Comparing LevelDB and RocksDB, take 2”. 2016年3月10日閲覧。
  4. ^ Benchmarking LevelDB vs. RocksDB vs. HyperLevelDB vs. LMDB Performance for InfluxDB”. 2016年3月10日閲覧。
  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”. 2016年3月10日閲覧。
  7. ^ Under the Hood: Building and open-sourcing RocksDB”. 2016年3月10日閲覧。
  8. ^ RocksDB - Facebook's Database Now Open Source”. 2016年3月10日閲覧。
  9. ^ GitHub pull request”. 2017年7月20日閲覧。
  10. ^ Apache says 'no' to Facebook code libraries”. 2017年7月20日閲覧。
  11. ^ GitHub issue”. 2017年7月20日閲覧。
  12. ^ Users.md”. 2015年12月1日閲覧。
  13. ^ RocksDB on Steroids”. 2016年3月10日閲覧。
  14. ^ Benchmarking Apache Samza: 1.2 million messages per second on a single node”. 2016年3月10日閲覧。
  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” (2012年5月10日). 2016年3月15日閲覧。
  26. ^ rocksdb README file” (2012年11月30日). 2016年3月15日閲覧。
  27. ^ The History of RocksDB” (2013年11月24日). 2016年3月10日閲覧。
  28. ^ Borthakur, Dhruba (2013年11月22日). “RocksDB: A High Performance Embedded Key-Value Store for Flash Storage - Data@Scale”. 2016年3月10日閲覧。 “... 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. http://thenewstack.io/cockroachdb-unkillable-distributed-sql-database/ 2016年7月8日閲覧。 
  30. ^ mongodb-partners/mongo-rocks”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  31. ^ Integrating RocksDB with MongoDB”. 2018年7月19日閲覧。
  32. ^ MongoDB + RocksDB at Parse”. 2015年12月1日閲覧。
  33. ^ facebookgo/rocks-strata”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  34. ^ facebook/mysql-5.6”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  35. ^ MyRocks: MySQL on RocksDB”. 2015年11月29日閲覧。
  36. ^ MyRocks Deep Dive”. 2016年5月9日閲覧。
  37. ^ Comparing new RocksDB and MMFiles storage engines”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  38. ^ Storage Devices -- Ceph Documentation”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  39. ^ LogDevice: a distributed data store for logs”. Mark Marchukov, Facebook. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  40. ^ contribsys/faktory”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  41. ^ Introducing Faktory”. Mike Perham. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  42. ^ ideawu/ssdb-rocks”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  43. ^ https://ssdb.io
  44. ^ ideawu/ssdb-rocks”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  45. ^ https://pingcap.github.io/blog/2017/07/11/tidbinternal1/#rocksdb
  46. ^ warrenfalk/rocksdb-sharp”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  47. ^ b1naryth1ef/rocksdb”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  48. ^ urbint/rox”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  49. ^ leo-project/erocksdb”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  50. ^ barrel-db/erlang-rocksdb”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  51. ^ tecbot/gorocksdb”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  52. ^ rocksdb-haskell: Haskell bindings to RocksDB”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  53. ^ RocksJava”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  54. ^ rocksdb”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  55. ^ iabudiab/ObjectiveRocks”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  56. ^ RocksDB - Perl extension for RocksDB - metacpan.org”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  57. ^ Photonios/rocksdb-php”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  58. ^ stephan-hof/pyrocksdb”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  59. ^ rocksdb-ruby - RubyGems.org - your community gem host”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  60. ^ spacejam/rust-rocksdb”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。

外部リンク