クラウドにリレーショナルデータベースを実装する方法、マイクロソフトの答えを見る

2009年3月27日

マイクロソフトはこれまでキー・バリュー型データベースとして提供していた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」を見てみました。会場にいかなくてもビデオでセッションを見られるなんて、本当にいい時代になったものです。プレゼンシートもここからダウンロードできます。

さて、そのセッションの中で仕組みを説明したプレゼンシートがこれです。

fig SQL Data Serviceの実装を解説したプレゼンシート。複数のサーバが集合するファブリックに対してフェイルオーバー、レプリケーション、ロードバランスが実装され、それによってスケーラビリティと可用性を実現する、とある

そして、クラウド上のSQL Serverは次のように実装されていると解説されていました。ビデオの32分あたりです。

  • 数百台のサーバからなるクラスタ(ファブリック)を構成する
  • クラスタ上に特別バージョンのSQL Serverを走らせる
  • 1つのDBはおおむね3つ以上のレプリケーションを別サーバ上に持ち、それらはつねに同期している
  • クライアントアプリケーションは、マスターDBを保持するサーバに接続する。万が一そのサーバがダウンした場合は、瞬時にレプリケート先のスレーブにフェイルオーバーする
  • マスターとなるサーバの負荷が高まってきた場合、そのサーバに同居しているほかのDBの処理を別サーバへと動的に移動させて負荷を軽減することで、ロードバランスを行う

もしかしたら誤解している可能性もあるのですが、セッションビデオを見る限り僕はこのように理解しました(あえていえば、これまではこの構造の上にキー・バリュー型のデータベースを実装していたけれど、それをやめて内部構造をそのままむき出しにしたようなものではないかとも思うのですが......)。

この構造によって、物理的にどこかのサーバがダウンしたとしてもサービスは稼働し続けられますし、ロードバランスである程度のスケーラビリティも維持できそうです。ただ、もしかしたら僕が誤解しているだけかもしれませんが、スケーラビリティについては最大でも1台のサーバの全能力を使い切ったところが上限になってしまいます。

キー・バリュー型なら、並列処理で同時に何台ものサーバを稼働させた高いスケーラビリティを備えているのですが、マイクロソフトはそうしたスケーラビリティよりも互換性を重視すると割り切ったのかもしれません。

しかし僕が誤解している可能性も捨てきれません。マイクロソフトのSQL Data Servicesチームのブログでは「スケーラビリティは犠牲にしない」としています。実際にはもっと並列処理を取り入れたスケーラビリティを実現しているのかもしれません。このあたりどうなっているのか、引き続き情報を収集しようと思っています。

関連記事 on Publickey

参考記事 on the Web

あわせて読みたい

RDB データベース Microsoft




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本