なぜ世界中のWeb企業がキー・バリュー型データストアに注目するのか。大量のデータを処理するパフォーマンスをデータベースに求めているからだ。

 Web企業の扱うデータは、構造自体はきわめて単純だが、大量にかつ短時間で処理する必要がある。リレーショナル・データベースのような複雑な機構を使用するよりも、仕組みが単純でパフォーマンスが出やすいキー・バリュー型データストアが求められた。

 例えばミクシィの平林氏が開発したTokyo Cabinet/Tyrantは、1台のPCサーバーで毎秒6万件の問い合わせ(クエリー)を処理できる。これはデータの保存先にハードディスクを利用した時の性能であり、保存先をメモリーにすると毎秒250万件のクエリーを処理できる。

 またキー・バリュー型データストアは分散処理に向いており、スケールアウトによって性能を拡張できる。データをキーとバリュー(値)の組み合わせとして保存するので、キーの範囲に応じて複数のサーバーにデータを簡単に分散できるからだ。

サーバー台数に応じて手法を使い分ける

 GoogleやAmazon.com、Microsoftなどがキー・バリュー型データストアに注目するのは、分散処理を求めているからである。東工大の首藤准教授は勉強会で、「同じキー・バリュー型データストアであっても、サーバー台数の規模によって使用する技術に違いが見られる」と勉強会で指摘した(発表資料)。

 キー・バリュー型のデータを複数のサーバーに分散させる代表的な手法として「コンシステント・ハッシング」がある。この手法は大きく二つに分けられる。

 一つは、どのデータをどのサーバーに配置するか管理する「中央サーバー」が存在する「ゼロホップのコンシステント・ハッシング」。もう一つは、中央サーバーが存在しない「マルチホップのコンシステント・ハッシング」である。マルチホップのコンシステント・ハッシングは一般に「分散ハッシュテーブル」と呼ばれ、ピア・ツー・ピアの基盤技術として知られている。

 パフォーマンスの点だけを見れば、中央サーバーが存在する「ゼロホップ」のほうが優れている。中央サーバーの存在しない「マルチホップ」では、データの場所を探すために複数のサーバーに対して問い合わせる必要があるからだ。

 しかし、サーバー規模が拡大すると中央サーバーがボトルネックになる。そこで、首藤准教授は「ノンホップが適用可能なのは1000ノードまで。それ以上だとマルチホップが適している」と指摘する。ちなみに、Amazonのキー・バリュー型データストア「Amazon Dynamo」はゼロホップ、MicrosoftのWindows Azureはマルチホップのコンシステント・ハッシングである。

 キー・バリュー型データストアは、データ処理の高速化と大規模化(ひいてはクラウド・コンピューティング)を実現する上で、必須の技術になっている。今後もこの分野について、継続的に取材を続けていきたい。

■変更履歴
本文見出し「システム基盤技術に対する研究意欲は衰えていない」に続く4段落目の2つ目の文で「Fillotという企業のCTOである上田真史氏ら」は「Fillotという企業の研究理事である上野康平氏ら」,続く文で「上田氏が所属する」は「上野氏が所属する」の誤りです。お詫びして訂正します。本文は修正済みです。[2009/2/27 10:30]