Facebook、Key-Valueストア「RocksDB」をオープンソース化C++ライブラリとして構築

米Facebookは、同社内で高速ストレージ用に開発・使用してきた組み込み式の永続型Key-Valueストア「RocksDB」をオープンソースで公開したと発表した。

» 2013年11月25日 16時17分 公開
[鈴木聖子,@IT]

 米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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。