クラウドにリレーショナルデータベースを実装する方法、マイクロソフトの答えを見る
マイクロソフトはこれまでキー・バリュー型データベースとして提供していたWindows Azureのデータベースサービス「SQL Data Services」(SDS)の方針を切り替えて、今後はSQL Serverと互換性のあるリレーショナル型のサービスを提供すると発表していました(参考:マイクロソフトがクラウドでリーダーシップを握る可能性が高まる)。
キー・バリュー型のデータベースは非常に高いスケーラビリティを実現できるのが特徴で、クラウドにはうってつけ。Google App EngineやAmazon Web Servicesなどで提供されているデータベース機能はこのキーバリュー型データベースです。
ところがキー・バリュー型のデータベースはリレーショナルデータベースとは異なるデータ構造、内部構造を持つため、従来のデータベースアプリケーションをクラウド上に移植する際には全面的に書き換える必要があり、またエンジニアもこの新しいデータベースの仕組みをあらためて理解する必要がありました。
そのため、現在β版として公開されているWindows Azureではユーザーからは「SQL Serverと互換性のあるデータベースサービスを提供してほしい」という要望が非常に多く寄せられたそうです。
そうした要望を受けて、マイクロソフトはキー・バリュー型データベースとして提供していたSDSの方針を転換。SQL Serverと互換性のあるリレーショナルデータベースのサービスに変更すると発表したわけです。
ところが、リレーショナルデータベースをクラウドのようなスケールアウト環境に実装するのはすごく難しくて、一体マイクロソフトはどうやってSQL Serverをクラウド上に実装するのだろう? というのが僕の疑問でした。
これがここまでの経緯。
先週ラスベガスで開催された同社のイベントMIX09で、クラウド上のSQL Serverに関する技術的な概要が説明されたので、さっそくセッションビデオ「What's New in Microsoft SQL Data Services - MIX Videos」を見てみました。会場にいかなくてもビデオでセッションを見られるなんて、本当にいい時代になったものです。プレゼンシートもここからダウンロードできます。
さて、そのセッションの中で仕組みを説明したプレゼンシートがこれです。
そして、クラウド上のSQL Serverは次のように実装されていると解説されていました。ビデオの32分あたりです。
- 数百台のサーバからなるクラスタ(ファブリック)を構成する
- クラスタ上に特別バージョンのSQL Serverを走らせる
- 1つのDBはおおむね3つ以上のレプリケーションを別サーバ上に持ち、それらはつねに同期している
- クライアントアプリケーションは、マスターDBを保持するサーバに接続する。万が一そのサーバがダウンした場合は、瞬時にレプリケート先のスレーブにフェイルオーバーする
- マスターとなるサーバの負荷が高まってきた場合、そのサーバに同居しているほかのDBの処理を別サーバへと動的に移動させて負荷を軽減することで、ロードバランスを行う
もしかしたら誤解している可能性もあるのですが、セッションビデオを見る限り僕はこのように理解しました(あえていえば、これまではこの構造の上にキー・バリュー型のデータベースを実装していたけれど、それをやめて内部構造をそのままむき出しにしたようなものではないかとも思うのですが......)。
この構造によって、物理的にどこかのサーバがダウンしたとしてもサービスは稼働し続けられますし、ロードバランスである程度のスケーラビリティも維持できそうです。ただ、もしかしたら僕が誤解しているだけかもしれませんが、スケーラビリティについては最大でも1台のサーバの全能力を使い切ったところが上限になってしまいます。
キー・バリュー型なら、並列処理で同時に何台ものサーバを稼働させた高いスケーラビリティを備えているのですが、マイクロソフトはそうしたスケーラビリティよりも互換性を重視すると割り切ったのかもしれません。
しかし僕が誤解している可能性も捨てきれません。マイクロソフトのSQL Data Servicesチームのブログでは「スケーラビリティは犠牲にしない」としています。実際にはもっと並列処理を取り入れたスケーラビリティを実現しているのかもしれません。このあたりどうなっているのか、引き続き情報を収集しようと思っています。
関連記事 on Publickey
- クラウド上のリレーショナルデータベースはなぜ難しいのか? BASEとCAP定理について
- マイクロソフトがクラウドでリーダーシップを握る可能性が高まる
- クラウドでチャンスをつかむために知っておきたい3つのこと
参考記事 on the Web
- Azureの鼓動 > 【MIX特集】Azure Storage ServiceとSQL Servicesのツンデレキャラ確定 : ITmedia オルタナティブ・ブログ
- Relational SDS を考える - Agile Cat's
リレーショナルデータベースのスケールアウトの必要性と難しさを解説しています - New SDS Interview _1 - Agile Cat's
新しいSDSの機能に対するマイクロソフト開発チームの解説