クラウド上のリレーショナルデータベースはなぜ難しいのか? BASEとCAP定理について

2009年3月16日はてなブックマーク del.icio.us Twitter
タグ : CAP定理 , クラウド

今週18日からマイクロソフトがラスベガスで「MIX09」を開催します。Windows 7やWindows Azureが発表された昨年秋のPDC(Professional Developers Conference)とは異なり、MIXはWebデザイナーとWebデベロッパー向けのイベントです。

ところで、デザイナーとデベロッパー向けのイベントといえばアドビシステムズのイベントが有名。その名称はたしか「MAX」ですよね......。

さて。MIX09ではWindows Azureの料金体系の発表があるかもしれないといわれています。もし発表されれば、IT系メディアのヘッドラインを飾ることでしょう。

僕が注目しているのは、先日「マイクロソフトがクラウドでリーダーシップを握る可能性が高まる」で書いた、SQL Server完全互換の「SQL Data Services」(SDS)についての具体的な内容の発表です。

ところで、なぜクラウド上でリレーショナルデータベースの実装は難しいのでしょう? ネット上で調べていたらとても興味深い資料を見つけたので、自分のメモとしての意味も込めて今日はそれを紹介します。

その資料とは、UC Berkleyの教授でinktomi社のチーフサイエンティストでもあったEric Brewer氏の資料「Towards Robust Distributed Systems(PDF)」です。

かいつまんで見てみましょう。

リレーショナルデータベースは、「ACID」と呼ばれる特性を備えています。ACIDとはトランザクションに対する以下の4要件の頭文字を指します。

ところが、分散システムでACIDのCとIを実現しようとすると、それと引き替えに可用性や品質、性能が損なわれるというのです。

Eric Brewer氏はACIDと対照的に、可用性や性能を重視した特性を持つ分散システムの特性を「BASE」という頭文字で表しました。これは、以下の頭文字です(カッコ内は意訳です)。

fig ACIDとBASEの特徴の比較

そしてEric Brewer氏は分散システムにおける「CAP定理」を提唱しました。CAP定理とは、分散システムにおいて次の3つの要素のうち2つしか同時に満たすことはできない、という定理です。

fig CAP定理。一貫性、可用性、ネットワークの分断への耐性のうち同時に2つしか満たすことはできない

このBASEとCAP定理について、山本陽平氏のブログyohei-y:weblog: CAP と BASE について調べたことで、歴史的な経緯が非常に詳しく解説されています。多くの論文へのリンクもあるので、興味がある方はぜひリンクをたどってみることをおすすめします(山本氏はRESTの第一人者でもありますね)。僕もこの記事で今回の資料を知りました。

また、日本語訳されている論文EventuallyConsistent - 結果整合性もあります。

Eric Brewer氏の資料では、P(ネットワーク分断への耐性)を犠牲にしたシステムの例としてクラスタ上のデータベースを、A(可用性)を犠牲にしたシステムの例として分散データベースを、C(一貫性)を犠牲にしたシステムの例としてDNSを挙げています。

追記(2009/3/26):下記の部分は正確ではなかったので取り消します。リレーショナルデータベースのデータ整合性と、CAPのデータ一貫性は異なる概念でした(参照:yohei-y:weblog: CAPのCとACIDのC)。

さて、CAP定理が正しい場合(正しいと証明されているそうなのですが)、可用性とネットワーク分断への耐性(クラウド内の)が重要視されているクラウドでは、データの一貫性を重視するリレーショナルデータベースを実装しようとすると、クラウドの特徴である可用性などが犠牲になってしまいます。

これがクラウド上でクラウドの特性を生かしながらリレーショナルデータベースを実装することの難しさを表しているわけです。

逆に、クラウド上の特性を生かしたキー・バリュー型のデータベースは、たしかに一貫性は重視していません。例えばグーグルの検索順位の変更が行われるとき、変更された情報はゆっくりとグーグルの巨大なデータベースの中を伝播していくことが知られています。完全に伝播し終わるまでデータベースの中でのデータの一貫性は崩れていますが、検索エンジンというアプリケーションにおいて、この一貫性はそれほど大事なことではありません。

もちろん、こうしたCAP間のトレードオフは工夫である程度補うことができます。例えばネットワーク分断への耐性を犠牲にするなら、ネットワークを冗長化することでシステムトータルでの耐性を高められるでしょう。こうした工夫が、クラウドごとの特徴、クラウド上のアプリケーションの特徴を形作ることになるのだと思います。

マイクロソフトはいろんな工夫をしてSQL ServerをWindows Azureのうえに実装してくると思います。クラウドにフルスペックの商用リレーショナルデータベースを実装する最初の試みですので、オラクルもIBMもきっと注目しているでしょう。僕も彼らのチャレンジを楽しみに待っていたいと思います。


次の記事≫ IBMがいま注目している5つのテクノロジー~The Global Technology Outlook 2009
前の記事≪ 僕がなぜCMSにMovable Typeを選んだのか? 

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
RSSリーダーで : Feed
≫ 過去の記事を読む




アクセスランキング - 過去7日間

  1. IT系上場企業の平均給与を業種別にみてみた …
  2. IT系上場企業の平均給与を業種別にみてみた …
  3. SIerとパッケージベンダはどちらが高給? …
  4. Cassandra入門と、さらに詳しく知るた…
  5. ミクシィのNoSQLデータベース「Tokyo…
  6. SQLの都市伝説。マイケル・ストーンブレイカ…
  7. TwitterがBitTorrentで高速に…
  8. 仮想化は、クラウドのインフラとしては不要では…
  9. セキュリティを高めた「仮想化Firefox」…
  10. 楽天、性能向上を分散オブジェクトキャッシュで…
  11. Twitter、急成長に対応するため独自のデ…
  12. アドビ「iPadでFlashアプリを動かす」…
  13. グーグル、「政府専用Google Apps」…
  14. ITまんが 2010年版 ~ ITが楽しく分…

アーカイブ  (最新記事10)

バックナンバー

2010年7月
2010年6月
2010年5月
2010年4月
2010年3月
2010年2月
2010年1月
2009年12月
2009年11月
2009年10月
2009年9月
2009年8月
2009年7月
2009年6月
2009年5月
2009年4月
2009年3月
2009年2月






Trackbacks (TrackbackURL:http://www.publickey1.jp/mt/mt-tb.cgi/41)

  • (トラックバックは承認後に掲載されます)

Comments