雲の上のリレーショナルデータベース
クラウドでリレーショナルデータベースの時代は終わるか?
「クラウドコンピューティングにおけるストレージといえばKey Valueストア」と言い切ってしまえるほどに、現時点で浸透しているかどうかは分かりません。
ですが、Google App EngineのBigTable、Amazon Web ServiceのSimpleDB、そして、Windows AzureのTABLEでも、拡張性を最優先したクラウドらしいアーキテクチャに基づいたKey Valueストアが提供されており、ほぼ無限のスケールアウトを低コストで実現する、クラウドがもたらした革新的な要素技術の一つであることには違いありません。
しかし、クラウドの台頭ですべてのストレージがすぐさまKey Valueストアになるかというと、それほど単純な話ではありません。中でも、これまで広く活用されてきたリレーショナルデータベースは、インフラの急速なクラウド化が進行したとしても、多くの分野で当面活用されることになるだろうと、マイクロソフトは考えています。
そのような背景から、マイクロソフトはクラウド戦略の中核をなすWindows Azure Platformを構成する要素に、SQL Azureと呼ばれるクラウド上のリレーショナルデータベースサービスを展開しています。
正確には、SQL Azureという名称はクラウド上に展開される複数のデータサービスをまとめたブランド名であり、今回ご紹介するリレーショナルデータベースサービスもSQL Azure Databaseと呼ばれる構成要素の一つです。
将来構想としてほかにもレポーティングやBI(ビジネスインテリジェンス)、データ同期サービスなどが計画されていますが、初期リリースではSQL Azure Databaseのみが先行して提供されることから、ここではSQL Azureと記載した場合、暗黙的にSQL Azure Databaseを指すものとして話を進めます。
現場の声に耳を傾けて - SQL Azure誕生の経緯
現在のSQL Azureが、その名称と共に一部の開発者向けに公開されたのは2009年7月のことです。その後、8月中旬より一般の開発者が評価検証目的で利用できるようになり、ThinkITにおける田中氏の連載記事「PHPで使うWindows Azure Storage(http://thinkit.jp/article/1019/1/)」なども含め、技術情報が徐々に整備されつつあるという段階です。
突如現れたかのように思われるSQL Azureですが、現在の姿に落ち着くまでの経緯には紆余(うよ)曲折がありました。
実際、2008年10月にRay OzzieがWindows Azureを初めて語る数年前から、マイクロソフトが運営するさまざまなオンラインサービスを支える非常に多くのSQL Server群を効率的に管理する目的で、自律的なオペレーション、高可用性、およびマルチテナンシーを可能にするスケーラビリティを備えるクラウドデータベースを、サービスとして提供する計画がありました。
当時はSQL Server Data Services(以降SDS)という名称で、開発者向けのプレビュー版が公開されていましたが、現在のSQL Azureとは名前だけでなくアーキテクチャも大きく異なるものでした。
具体的には、KeyとValueをペアで持つ「Entity」を中心としたACE(Authority/Container/Entityの略)モデルというプログラミングモデルを包含し、REST/SOAPでデータにアクセスする、純粋なKey Valueストアとしての美しい世界観を目指していました。
しかし、このACEモデルに対する開発者からのフィードバックは予想以上にコンサバなものでした。開発者向けプレビューの段階で新しい技術習得を必要とするACEモデルを敬遠し、慣れ親しんだSQLと互換性のあるインターフェースをクラウド上のストレージに望む声が非常に強かったのです。
同時に、SDSより後発で開発が進んでいたWindows Azureが標準で搭載するAzure Storage ServiceのTableで、クラウド上のKey Valueストアが提供されることもあり、開発者と共に育ててきたACEモデルを擁するSDSの基本アーキテクチャを思い切って変更し、SQL Serverとの互換性を重視したSQL Azureを発表するに至ったのです。