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