今回は、米Googleのクラウド環境に存在するデータベースBigtableとDatastoreサービスを紹介します。「巨大分散」という新たなデータベースの地平を切り開くためにどのような工夫をしているか、じっくり見ていきましょう。

 「Bigtable」は、Googleの主要なサービスを支える独自の巨大分散データストアです*1。Bigtableは、2005年4月から本格的な運用(プロダクション利用)が開始されたもので、Googleの検索サービスをはじめ、Gmail、YouTube、Google Maps、Google日本語入力、そしてApp Engineなど、70以上のプロジェクトで利用されています。その規模は、数P(ペタ)バイト~数十Pバイトに達しているでしょう。

 Bigtableは、Google検索サービスにおける膨大なコンテンツやインデックスを保持し、高速に検索するための専用データストアとして開発されました。Bigtableは、リレーショナルデータベース(Relational Database、RDB)ではありません。「NoSQL(Not Only SQL)」に分類されることもある、リレーショナルモデルに基づかないデータストアです。

 Bigtableでは、図1のように、行と列からなる「テーブル」にデータを格納し、「キー」を用いてテーブルの個々の行に対する読み書きを行います*2。「RDBと同じじゃないか」と思う人もいるかもしれませんが、違いは後で出てきます。

図1●Bigtableのテーブル例
図1●Bigtableのテーブル例

 Bigtableの特徴は、スケーラビリティに制限がないことです。Bigtableのテーブルに保存可能な行数には制限がありません。例えば、数十億件に達するような膨大なデータをテーブルに保存して、テーブル全体に膨大な人数のユーザーが同時にアクセスしても、個々の読み書き処理は平均数十ミリ秒程度です。

 可用性の高さも特徴です。Bigtableのテーブルにデータを書き込むと3台以上のサーバーにコピーされます。うち1台は異なるロケーションのデータセンターにあるサーバーが選ばれます。そのため、データセンター規模で障害が発生しても、Bigtableに保存されたデータが失われることはなく、短時間でサービスを復旧できます。

 BigtableはハイエンドのRDBクラスタに匹敵するようなレプリケーション(複製)機能やディザスタリカバリー機能を備えており、サーバーやデータセンターの障害によってデータが失われる可能性は低くなります。データのバックアップ作業の負担が軽減されるでしょう。さらに、Bigtableのサービスを構成するサーバー群はすべてが冗長化されており、SPoF*3は徹底的に排除されています。