データを「キー」と「バリュー(値)」の組み合わせとして保存する「キー・バリュー型データストア」は、クラウド時代におけるデータベース技術の主流になろうとしている。20年以上にわたって主流であったリレーショナルデータベース管理システム(RDBMS)と仕組みを比較しながら、向く用途、向かない用途を考察しよう。

 「RDBMSはクラウドで役割を減らしつつある」―。米IBMの「DB2」や米マイクロソフトの「SQL Server」のアーキテクトだったジェームズ・ハミルトン氏(現在の所属は米アマゾン・ウェブ・サービシズ)が、中国・上海で3月に開催された「SMDB 2009」(自己管理型データベースシステムに関するワークショップ)で発表した資料のタイトルだ。

 ハミルトン氏がRDBMSに代わる存在として挙げるのは、米グーグルの「MapReduce」やそのオープンソース版「Hadoop」、アマゾンの「SimpleDB」といった「キー・バリュー型データストア」である。

 キー・バリュー型データストアは、日本でもネット企業を中心に採用や開発が進んでいる()。

表●日本企業でも相次ぐ「キー・バリュー型データストア」の採用
表●日本企業でも相次ぐ「キー・バリュー型データストア」の採用
[画像のクリックで拡大表示]

 「アメーバブログ」のログ解析処理にHadoopを採用したサイバーエージェント事業戦略室エンジニアの名村卓氏は「1日で5Gバイトを超えるログの解析が30台のPCサーバーを使って30分で終了する」と語る。キー・バリュー型データストアはデータ処理のスケールアウトが容易なので、今後データ量が増えたとしてもサーバーの増設で対応できる。

 日本でも楽天やミクシィ、グリーがキー・バリュー型データストアを独自開発する。データ処理の新顔であるキー・バリュー型データストアはRDBMSと何が異なり、どのような処理に適しているのか。「データモデル」「データ分散」「ロック」という三つの観点でRDBMSと比較して整理しよう。

【データモデル】

 キー・バリュー型データストアと呼ばれるのは、データを「キー」とそれに対応する「バリュー(値)」として保存するからだ(図1)。値にはキーを指定してアクセスする。

図1●データモデルの比較
図1●データモデルの比較
[画像のクリックで拡大表示]

 値は「BLOB(Binary Large Object、型のないビット列)」として保存する。レコード中の各データにXMLのような「タグ」を付与することで、データに属性(RDBMSにおけるカラムに相当する)を付けることも可能だ。つまり、各レコードに任意の構造を持つデータを保存できる。

 データの構造や属性を決める「スキーマ設計」は必要ない。ミクシィ開発部で「Tokyo Cabinet」を開発する平林幹雄マネージャーは「当社のようなSNSでは、ユーザー情報の属性を頻繁に変更する。キー・バリュー型データストアでは、 RDBMSのようなスキーマ設計が不要であるため、使い勝手に優れる」と指摘する。

 RDBMSのようなカラムが存在しないため、データの検索は全件検索が基本となる。キー・バリュー型データストアのなかには、属性ごとにインデックス(索引)を作成し、属性によるデータ検索の高速化を図るものもある。

 RDBMSではデータは「正規化」して保存する。正規化によってデータの重複を排除し,更新時におけるデータの不整合を生じにくくしているのだ。しかし正規化を行うとテーブル間の参照関係が複雑になる。そのため、RDBMSでは次に述べるデータベースやテーブルの分散が困難であるとされていた。