Facebook は、社内で開発されたソフトウェアを共有する慣行を継続し、同社が 12 億人のユーザーにコンテンツを提供するために開発した埋め込み型データ ストア RocksDB をオープン ソースとしてリリースしました。
同社はデータベースのコードをGitHubに投稿し、業界や学術界の関係者によるソフトウェアの改良を期待しています。Facebookはスケーラビリティを重視しているため、RocksDBは顧客や従業員向けに高トラフィックのアプリを開発している他のインターネットサービスや企業にとって興味深いものとなるかもしれません。

RocksDBは、新たな自由を獲得し、Facebookがオープンソースとして公開してきた他のソフトウェアに加わりました。Facebookは今年、HipHop PHP仮想マシン、Prestoクエリエンジン、Flashcacheキャッシュソフトウェア、そしてCorona Hadoopスケジューラーのソースコードを公開しました。これらはすべてFacebookが自社開発したものです。
RocksDBは、SQL型でもNoSQL型でも、完全なデータベースではありません。インデックス機能もSQLクエリの解析機能もありません。Facebookのデータベースエンジニアリングチームのエンジニア、Dhruba Borthakur氏のブログ記事によると、このソフトウェアは永続的なキーバリューストアであり、ユーザーにコンテンツを迅速に提供するために設計されています。データベースへのコンテンツの書き込みや削除も可能ですが、高度な解析機能は備えていません。
RocksDB はライブラリとして C++ で記述されており、スパム検出アプリケーションや検索エンジンなど、非常に低いレイテンシで大量のデータにアクセスする必要があるアプリケーションなど、他のアプリケーションに埋め込むことができます。
RocksDBは、実際にはGoogleのLevelDBのフォークです。LevelDBは、データの読み取り、書き込み、削除を行うシンプルな非SQLデータストアです。しかし、FacebookはLevelDBがサーバーのワーキングメモリに収まらないデータセットではパフォーマンスが低いことを発見し、エンジニアがGoogleのオープンソースコードを修正しました。
FacebookはLevelDBをサーバーの複数のプロセッサコアで実行できるように改良しました。この改良により、LevelDBは非常に高速なI/Oをサポートできるようになりました。Facebookのテストでは、データストアのランダム書き込みはLevelDBと比較して10倍、ランダム読み取りは30%高速化されました。
ボルタクル氏は、FacebookがRocksDBを本番環境でどのように活用しているかについて、いくつか詳細を説明しました。ある構成では、データストアは10台のソリッドステートドライブ(SSD)の前面で実行され、1秒あたり100万回の読み書きをサポートするためにストライプ化されています。現在、RocksDBはFacebookユーザーに定期的に提供する1ペタバイトを超えるデータを管理しています。