Facebook、Key-Valueストア「RocksDB」をオープンソース化:C++ライブラリとして構築
米Facebookは、同社内で高速ストレージ用に開発・使用してきた組み込み式の永続型Key-Valueストア「RocksDB」をオープンソースで公開したと発表した。
米Facebookは2013年11月22日、同社内で高速ストレージ用に開発・使用してきた組み込み式の永続型Key-Valueストア「RocksDB」をオープンソースで公開したと発表した。
Facebookによると、これまでのアプリケーションでは、ネットワークを介したリモートプロシージャコールによって各アプリケーションが管理しているデータにアクセスするのが一般的だった。しかし12億人のユーザーごとにリアルタイムで動的なページを生成しているFacebookのようなアプリケーションの場合、それでは時間が掛かり過ぎるという難点があった。
そこでフラッシュストレージ上でデータを管理することによってデータに高速アクセスできるアプリケーションに目を向け、組み込みデータベースを使ってそれを実現したという。
RocksDBはGoogleがオープンソースで公開しているKey-Value型データベースライブラリ「LevelDB」を基盤として、多数のCPUコアを搭載したサーバで運用できる拡張性、高速ストレージの効率的な利用、技術革新のための柔軟性、I/Oバウンドやインメモリ、ライトワンスワークロードのサポートを目指した。
RocksDBはC++ライブラリとして構築され、KeyとValueを継続的に保存する。「プラガブル」なアーキテクチャを採用して、システム全体のアーキテクチャに影響を及ぼすことなくパーツの交換ができるという。これにより、例えばRocksDBのコードを変更しなくても、snappy、zlib、bzipといったさまざまなデータ圧縮ライブラリを利用して、ワークロードごとに異なる圧縮アルゴリズムを設定できる。現時点でlevel styleとuniversal styleの2種類の圧縮をサポートしているという。
LevelDBと比較すると、フラッシュストレージの高速なアクセス性能をフル活用できるため、ランダムな読み書きや大量アップロード全般にわたって高速化を図ることができるという。ランダム書き込みと大量アップロードでは10倍、ランダム読み出しでは30%の高速化を実現したとしている。
また、LevelDBのシングルスレッドの圧縮プロセスが特定のサーバワークロードに対して適切に機能しないのに対し、RocksDBはそうしたI/OバウンドワークロードでLevelDBを上回る性能を発揮できるという。
用途としては、閲覧履歴やユーザーの状態を保存するWebサイトのアプリケーション、スパム検出アプリケーション、グラフ検索クエリ、Hadoopへのリアルタイムクエリが必要なアプリなど、低遅延のデータベースアクセスが必要なアプリケーションを挙げている。Facebookでは現在、各種アプリケーションのペタバイトに近いデータをRocksDBで管理しているという。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- レイヤ2機器や無線LAN機器の管理機能を統合:Ipswitch Japanが管理ソフト「WhatsUp Gold」の新版リリース
Ipswitch Japanは10月19日、IT統合管理ソフトの最新版「WhatsUp Gold v16」を発表した。 - Androidで動く携帯Javaアプリ作成入門(5):Androidアプリの使いやすさを左右する5つのレイアウト
本連載で、SDKとEclipseを使ってAndroidの携帯端末で動くJavaアプリを作成し、Android Market配布を目指しましょう