「RocksDB」の版間の差分
Inuwokaitai (会話 | 投稿記録) m バージョン情報の更新 |
|||
13行目: | 13行目: | ||
| ライセンス = [[Apache 2.0]]または[[GPL 2]] |
| ライセンス = [[Apache 2.0]]または[[GPL 2]] |
||
| 公式サイト = {{URL|rocksdb.org}} |
| 公式サイト = {{URL|rocksdb.org}} |
||
}}'''RocksDB'''は、高性能の<ref>{{Cite web|url=https://github.com/facebook/rocksdb/wiki/Performance-Benchmarks|title=Performance Benchmarks|accessdate=November 29, 2015}}</ref><ref>{{Cite web|url=http://smalldatum.blogspot.com/2014/07/benchmarking-leveldb-family.html|title=Benchmarking the leveldb family|accessdate=March 10, 2016}}</ref><ref>{{Cite web|url=http://smalldatum.blogspot.com/2015/04/comparing-leveldb-and-rocksdb-take-2.html|title=Comparing LevelDB and RocksDB, take 2|accessdate=March 10, 2016}}</ref><ref>{{Cite web|url=https://influxdata.com/blog/benchmarking-leveldb-vs-rocksdb-vs-hyperleveldb-vs-lmdb-performance-for-influxdb/|title=Benchmarking LevelDB vs. RocksDB vs. HyperLevelDB vs. LMDB Performance for InfluxDB|accessdate=March 10, 2016}}</ref><ref>{{Cite journal|last=Golan-Gueta|first=Guy|last2=Bortnikov|first2=Edward|last3=Hillel|first3=Eschar|last4=Keidar|first4=Idit|date=April 21, 2015|title=Scaling Concurrent Log-Structured Data Stores|journal=EuroSys '15 Proceedings of the Tenth European Conference on Computer Systems| |
}}'''RocksDB'''は、高性能の<ref>{{Cite web|url=https://github.com/facebook/rocksdb/wiki/Performance-Benchmarks|title=Performance Benchmarks|accessdate=November 29, 2015}}</ref><ref>{{Cite web|url=http://smalldatum.blogspot.com/2014/07/benchmarking-leveldb-family.html|title=Benchmarking the leveldb family|accessdate=March 10, 2016}}</ref><ref>{{Cite web|url=http://smalldatum.blogspot.com/2015/04/comparing-leveldb-and-rocksdb-take-2.html|title=Comparing LevelDB and RocksDB, take 2|accessdate=March 10, 2016}}</ref><ref>{{Cite web|url=https://influxdata.com/blog/benchmarking-leveldb-vs-rocksdb-vs-hyperleveldb-vs-lmdb-performance-for-influxdb/|title=Benchmarking LevelDB vs. RocksDB vs. HyperLevelDB vs. LMDB Performance for InfluxDB|accessdate=March 10, 2016}}</ref><ref>{{Cite journal|last=Golan-Gueta|first=Guy|last2=Bortnikov|first2=Edward|last3=Hillel|first3=Eschar|last4=Keidar|first4=Idit|date=April 21, 2015|title=Scaling Concurrent Log-Structured Data Stores|journal=EuroSys '15 Proceedings of the Tenth European Conference on Computer Systems|doi=10.1145/2741948.2741973|doi=10.1145/2741948.2741973}}</ref>key-valueのデータを格納する{{仮リンク|組み込みデータベース|en|Embedded database}}である。{{仮リンク|LevelDB|en|LevelDB}}のフォークであり、多数の[[CPU]]コアを活用して、入出力(I/O)バウンドなワークロードに対して、[[ソリッドステートドライブ]](SSD)のような高速なストレージを効率よく使用するように最適化されている。{{仮リンク|log-structured merge-tree|en|log-structured merge-tree}}(LSMツリー)と呼ばれるデータ構造に基づいている。コードは[[C++]]で書かれており、C++、[[C]]、[[Java]]のための公式の[[アプリケーションプログラミングインタフェース|アプリケーションプログラミングインターフェイス]](API)バインディングの他、多数の[[RocksDB#Third-party Language Bindings|サードパーティの言語バインディング]]も提供されている。RocksDBは[[オープンソースソフトウェア]]であり、当初は[[BSDライセンス|BSD 3-clause]]ライセンスのもとでリリースされていた<ref>{{Cite web|url=https://gigaom.com/2013/11/21/facebooks-latest-open-source-effort-a-flash-powered-database-called-rocksdb/|title=Facebook’s latest open source effort: a flash-powered database called RocksDB|accessdate=March 10, 2016}}</ref><ref>{{Cite web|url=https://www.facebook.com/notes/facebook-engineering/under-the-hood-building-and-open-sourcing-rocksdb/10151822347683920/|title=Under the Hood: Building and open-sourcing RocksDB|accessdate=March 10, 2016}}</ref><ref>{{Cite web|url=http://www.i-programmer.info/news/84-database/6624-rocksdb-facebooks-database-now-open-source.html|title=RocksDB - Facebook's Database Now Open Source|accessdate=March 10, 2016}}</ref>が、2017年7月、Apache 2.0とGPLv2ライセンスのデュアルライセンスに移行した<ref>{{Cite web|url=https://github.com/facebook/rocksdb/tree/3c327ac2d0fd50bbd82fe1f1af5de909dad769e6/env|title=GitHub pull request|accessdate=July 20, 2017}}</ref>。これは、Apache Software Foundationが、以前のBSD+Patentsライセンス条項をブラックリストに加えたことに応じたものと考えられている<ref>{{Cite web|url=https://www.theregister.co.uk/2017/07/17/apache_says_no_to_facebook_code_libraries/|title=Apache says 'no' to Facebook code libraries|accessdate=July 20, 2017}}</ref><ref>{{Cite web|url=https://github.com/facebook/rocksdb/issues/2605|title=GitHub issue|accessdate=July 20, 2017}}</ref>。 |
||
RocksDBは、[[スケーラビリティ|ウェブスケール]]の様々なエンタープライズのプロダクションシステムで使用されている<ref>{{Cite web|url=https://github.com/facebook/rocksdb/blob/master/USERS.md|title=Users.md|accessdate=December 1, 2015}}</ref>。使用している企業としては、[[Facebook]]、[[Yahoo!]]<ref>{{Cite web|url=http://www.i-programmer.info/news/84-database/8542-rocksdb-on-steroids.html|title=RocksDB on Steroids|accessdate=March 10, 2016}}</ref>、[[LinkedIn]]<ref>{{Cite web|url=https://engineering.linkedin.com/performance/benchmarking-apache-samza-12-million-messages-second-single-node|title=Benchmarking Apache Samza: 1.2 million messages per second on a single node|accessdate=March 10, 2016}}</ref>などがある。 |
RocksDBは、[[スケーラビリティ|ウェブスケール]]の様々なエンタープライズのプロダクションシステムで使用されている<ref>{{Cite web|url=https://github.com/facebook/rocksdb/blob/master/USERS.md|title=Users.md|accessdate=December 1, 2015}}</ref>。使用している企業としては、[[Facebook]]、[[Yahoo!]]<ref>{{Cite web|url=http://www.i-programmer.info/news/84-database/8542-rocksdb-on-steroids.html|title=RocksDB on Steroids|accessdate=March 10, 2016}}</ref>、[[LinkedIn]]<ref>{{Cite web|url=https://engineering.linkedin.com/performance/benchmarking-apache-samza-12-million-messages-second-single-node|title=Benchmarking Apache Samza: 1.2 million messages per second on a single node|accessdate=March 10, 2016}}</ref>などがある。 |
2020年1月25日 (土) 17:33時点における版
![]() | |
開発元 | |
---|---|
初版 | 2012年5月 |
最新版 |
6.0.2
/ 2019年4月23日 |
リポジトリ | |
プログラミング 言語 | C++ |
対応OS | Windows、macOS、Linux、FreeBSD |
サポート状況 | プロダクション |
種別 | 組み込みデータベース |
ライセンス | Apache 2.0またはGPL 2 |
公式サイト |
rocksdb |
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のすべての機能に加えて、以下の追加機能を提供する。
- トランザクション[15]
- バックアップ[16]とスナップショット[17]
- Column families[18]
- ブルームフィルタ[19]
- Time to live(TTL)のサポート[20]
- Universal compaction[21]
- Merge operators[22]
- Statistics collection[23]
- Geospatial indexing[24]
さらにその他の機能については、こちらを参照すること。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のサードパーティ製のプログラミング言語バインディングが使用できる。
- C#[46]
- D[47]
- Elixir[48]
- Erlang[49][50]
- Go[51]
- Haskell[52]
- Java[53]
- Node.js[54]
- Objective-C, and Swift[55]
- Perl[56]
- PHP[57]
- Python[58]
- Ruby[59]
- Rust[60]
参考文献
- ^ “Performance Benchmarks”. 2015年11月29日閲覧。
- ^ “Benchmarking the leveldb family”. 2016年3月10日閲覧。
- ^ “Comparing LevelDB and RocksDB, take 2”. 2016年3月10日閲覧。
- ^ “Benchmarking LevelDB vs. RocksDB vs. HyperLevelDB vs. LMDB Performance for InfluxDB”. 2016年3月10日閲覧。
- ^ 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.
- ^ “Facebook’s latest open source effort: a flash-powered database called RocksDB”. 2016年3月10日閲覧。
- ^ “Under the Hood: Building and open-sourcing RocksDB”. 2016年3月10日閲覧。
- ^ “RocksDB - Facebook's Database Now Open Source”. 2016年3月10日閲覧。
- ^ “GitHub pull request”. 2017年7月20日閲覧。
- ^ “Apache says 'no' to Facebook code libraries”. 2017年7月20日閲覧。
- ^ “GitHub issue”. 2017年7月20日閲覧。
- ^ “Users.md”. 2015年12月1日閲覧。
- ^ “RocksDB on Steroids”. 2016年3月10日閲覧。
- ^ “Benchmarking Apache Samza: 1.2 million messages per second on a single node”. 2016年3月10日閲覧。
- ^ “RocksDB transactions”. GitHub. 2016年4月4日閲覧。
- ^ “How to backup RocksDB?”. 2017年7月19日閲覧。
- ^ “Checkpoints”. 2017年7月19日閲覧。
- ^ “Column families in RocksDB”. GitHub. 2016年4月4日閲覧。
- ^ “RocksDB bloom filters”. GitHub. 2016年4月4日閲覧。
- ^ “RocksDB TTL support”. GitHub. 2016年4月4日閲覧。
- ^ “Universal compaction”. GitHub. 2016年4月4日閲覧。
- ^ “RocksDB merge operator”. GitHub. 2016年4月4日閲覧。
- ^ “RocksDB perf context and IO stats context”. GitHub. 2016年4月4日閲覧。
- ^ “Spatial indexing in RocksDB”. rocksdb.org. 2018年7月19日閲覧。
- ^ “First commit where RocksDB diverges from LevelDB” (2012年5月10日). 2016年3月15日閲覧。
- ^ “rocksdb README file” (2012年11月30日). 2016年3月15日閲覧。
- ^ “The History of RocksDB” (2013年11月24日). 2016年3月10日閲覧。
- ^ 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 ...”
- ^ Edwards, Jessica (2015年10月29日). “Hello World: Meet CockroachDB, the Resilient SQL Database”. The New Stack 2016年7月8日閲覧。
- ^ “mongodb-partners/mongo-rocks”. 2018年8月28日閲覧。
- ^ “Integrating RocksDB with MongoDB”. 2018年7月19日閲覧。
- ^ “MongoDB + RocksDB at Parse”. 2015年12月1日閲覧。
- ^ “facebookgo/rocks-strata”. 2018年8月28日閲覧。
- ^ “facebook/mysql-5.6”. 2018年8月28日閲覧。
- ^ “MyRocks: MySQL on RocksDB”. 2015年11月29日閲覧。
- ^ “MyRocks Deep Dive”. 2016年5月9日閲覧。
- ^ “Comparing new RocksDB and MMFiles storage engines”. 2018年8月2日閲覧。
- ^ “Storage Devices -- Ceph Documentation”. 2018年8月2日閲覧。
- ^ “LogDevice: a distributed data store for logs”. Mark Marchukov, Facebook. 2018年8月2日閲覧。
- ^ “contribsys/faktory”. 2018年8月2日閲覧。
- ^ “Introducing Faktory”. Mike Perham. 2018年8月2日閲覧。
- ^ “ideawu/ssdb-rocks”. 2018年8月2日閲覧。
- ^ https://ssdb.io
- ^ “ideawu/ssdb-rocks”. 2018年8月2日閲覧。
- ^ https://pingcap.github.io/blog/2017/07/11/tidbinternal1/#rocksdb
- ^ “warrenfalk/rocksdb-sharp”. 2018年8月2日閲覧。
- ^ “b1naryth1ef/rocksdb”. 2018年8月2日閲覧。
- ^ “urbint/rox”. 2018年8月2日閲覧。
- ^ “leo-project/erocksdb”. 2018年8月2日閲覧。
- ^ “barrel-db/erlang-rocksdb”. 2018年8月2日閲覧。
- ^ “tecbot/gorocksdb”. 2018年8月2日閲覧。
- ^ “rocksdb-haskell: Haskell bindings to RocksDB”. 2018年8月2日閲覧。
- ^ “RocksJava”. 2018年8月2日閲覧。
- ^ “rocksdb”. 2018年8月2日閲覧。
- ^ “iabudiab/ObjectiveRocks”. 2018年8月2日閲覧。
- ^ “RocksDB - Perl extension for RocksDB - metacpan.org”. 2018年8月2日閲覧。
- ^ “Photonios/rocksdb-php”. 2018年8月2日閲覧。
- ^ “stephan-hof/pyrocksdb”. 2018年8月2日閲覧。
- ^ “rocksdb-ruby - RubyGems.org - your community gem host”. 2018年8月2日閲覧。
- ^ “spacejam/rust-rocksdb”. 2018年8月2日閲覧。