Enterprise Watch
バックナンバー

Microsoftの戦略的クラウド「Azure(アジュール)」を見る【第四回】

データベースサービスのSQL Services

SQL Servicesのアーキテクチャ図

SQL Serviceは、これらのサービスで構成されている。基本的には、SQL Serverをクラウドに移したモノだ
 SQL Servicesは、Azure上でデータベースを提供しているサービスだ。基本的には、データベースのSQL Serverがクラウド上に構築されている。もちろん、クラウド特有の機能が追加されている。

 SQL Servicesは、データベースエンジン部分のSQL Data Services、データの同期を行うData Sync、レポーティングを行うReporting、データマイニングを行うData Mining、Reference Data、ETL(データの抽出・加工・書き出し)などの機能を持っている。つまり、Azureには、データベースだけでなく、ビジネスインテリジェント(BI)、データウェアハウスなど、最新のSQL Server 2008が有するさまざまな機能が提供される。

 SQL Services特有の機能としては、Data Syncというサービスが用意されている。これは、SQL Servicesに格納されているデータをオンプレミスのデータベースと連携・同期させることができるもの。これにより、クラウドとローカルなどに分散したデータを同期させて、同一性を保持したデータベースが利用できる。

 Data Syncの仕組みは、ADO.NET Data Services FrameworkやSync Frameworkが利用されている。これらのフレームワークは、サーバーだけでなく、クライアントPC、モバイル端末などもデータ同期の対象にしている。

 CTPのAzureでは、SQL Data ServicesとData Syncが公開されている。そのほかのサービスに関しては、今後サービスが提供される。


SQL Data Services(SDS)

 SQL Servicesでデータベースエンジン部分がSQL Data Servicesだ。データベースエンジンのベースには、SQL Serverが使われている(現状ではSQL Server 2008をベースとしている)。

 昨年開催されたPDC 2008では、SQL Data Serviceは、クラウド上のデータベースとなるため、SQL Serverなどのリレーショナルデータベースがそのまま利用できるわけではなかった。Authority(オーソリティ)、Container(コンテナ)、Entity(エンティティ)というACEモデルが採用されていた。

 しかし、さまざまなフィードバックにより、ACEモデルが非常に使いづらく、Azure上でのアプリケーション開発を難しくしているという問題点が明確になった。そこで、2009年3月に入り、Microsoftでは、SQL Data Servicesの仕様を根本的に変更して、ACEモデルから、リレーショナルデータベースモデルに変更した(SQL Serverとまったく同じ)。

 SQL Data Servicesでは、SQL Serverが持っているTabular Data Stream(TDS)プロトコルがサポートされることになった。TDSは、SQL Serverにアクセスするためのプロトコルだ。TDSがサポートされることで、SQLクエリ、リレーショナル・スキーマ、ストアド・プロシジャといったリレーショナルデータベースが持つ機能がそのまま利用できるようになった(TDSはTransact SQL言語互換)。TDSのサポートにより、SQL Data Servicesへのアクセスは、SOAPやRESTプロトコルではなく、ADO.NETやODBC、OLEDBなど、現状でSQL Serverにアクセスするためのインターフェイスがそのまま利用できる。

 また、ADO.NET Data Services(開発コード名:Astoria)を利用すれば、クライアントから簡単にAzure上のSDSにアクセスできるだけでなく、オンプレミスのリレーショナルデータベースと連携して動作することができる。


リレーショナルモデルになったことで、データベースへのアクセスは、ADO.NETや
OLEDB、ODBCなどを利用することになる。オンプレミスのデータベースとSQL Data
Servicesが連携して動作するには、ADO.NET Data Servicesが必要になる
新しいSQL Data Servicesのアーキテクチャ図

 Microsoftでは、リレーショナルモデルのSQL Data Servicesを6月頃までにテスト公開する予定だ。また、現在のAzureのCTPで利用されているACEモデルのSQL Data Servicesは、リレーショナモデルのSQL Data Servicesのテストが開始された時点で、機能の提供は中止される。

 このため、SOAPやRESTを使ってSQL Data Servicesにアクセスしている場合は、新しいSQL Data Servicesが提供された後は、そのままでは利用できなくなる。この場合、ADO.NET Data Servicesを使ってSOAPやRESTでアクセスするように変更する必要がある。

 今回の変更は、Azure上でのサービス開発においては、根幹部分の大きな変更といえる。しかし、多くの開発者に話を聞くと、ACEモデルでは既存のデータベースをAzure上に移植することができない。できたとしても、非常に工数がかかるため、開発コストが増すといわれていた。また、開発者にとっても既存のSQL ServerとSQL Data Servicesではまったく異なるため、技術の習得に時間もかかるし、ACEモデルでは制限も多かった。

 今回、リレーショナルモデルへとSQL Data Servicesの仕様を変更したことで、多くの開発者にとっては、既存のSQL ServerベースのアプリケーションをAzure上に展開することが容易に行えるようになる。これにより、Azure上にサービスを展開していこうという企業の数は、大幅に増えるだろう。また、短期間でオンプレミスのサービスをAzure上に展開することもできる。

 こういった意味でも、ACEモデルからリレーショナルモデルへの変更は、大きな仕様変更だが、開発者のフィードバックを受けた正しい変更といえるだろう。


Sync

 SQL Servicesには、Sync(同期)というサービスが用意されている。クラウドを利用すると、データベースが一元的に1つのクラウドに存在するというモデルは考えにくい。やはり、異なる企業のクラウドにデータベースが複数存在したり、クラウドとオンプレミスに分かれてデータベースが置かれていることもあるだろう。なによりも、ノートPCやモバイルでの利用を考えれば、ネットに接続できない環境や通信が途切れ途切れになってしまう環境を考えれば、オフラインでもデータベースを利用するアプリケーションが使用できないと、使い勝手が非常に悪い。

 Microsoftでは、オンプレミスのSQL ServerとAzureのSQL Data Services間でデータを同期させるためにADO.NET Data Services(開発コード名:Astoria)を開発している。

 SQL Data Services上にあるデータをオンプレミスのSQL Serverで利用するには、スキーマが必要になる。また、SQL Server上のデータをSQL Data Servicesで利用するには、データのフレックスエンティティをサポートする必要がある。これらの橋渡しをするのが、ADO.NET Data Servicesだ。


オンプレミスとクラウド間でデータベースを連携させるのがADO.NET Data Services(開発コード名:Astoria)だ ADO.NET Data Servicesは、オンプレミスのデータベースとクラウドのSQL Data Servicesの違いを吸収するブリッジだ

 また、オフラインでのデータ連携ができるように、オフライン機能(開発コード名:Astoria Offline)が用意されている。これを利用すれば、ネットワークに接続されていない環境でも、クラウドのデータベースと連動するアプリケーションを使用することができる。


Astoria Offlineのアプリケーションモデル
Astoria Offlineの詳細図

 データベースの連携は、サーバーだけでなく、クライアントでも必要になる。例えば、外出先でクラウドのアプリケーションを使用しようと思ったときに、ネットワークに接続できなければ、仕事にならないということでは、ITシステムとしては問題が多い。

 そこで、Microsoftでは、クライアントがオフラインの時でも、クラウドやオンプレミスのデータベースが利用できるようにデータベースのキャッシュを行うHuron(ヒューロン:開発コード名)の開発が行われている。

 Huronは、オンプレミスのサーバーに置いて、外出先のクライアントが、直接社内のサーバーのデータベースにアクセスすることもできる。また、Azure上にもHuron(Sync Servicesといわれている)の機能が提供されているため、クラウド上のデータとも連携することができる。もちろん、クライアントは、ノートPCだけでなく、Windows Mobileなどを搭載したスマートフォンなどの携帯電話とも連携することができる。


デスクトップとのデータ連係を可能にするHuron
Huronは、クラウドのAzure上にも用意される

ADO.NET Data Servicesのロードマップ
SQL Data ServicesとHuronのロードマップ

Business Intelligence(BI)

SQL Serviceのデータマイニング機能(PDC 2008より)

クラウドで提供されるBI機能
 SQL Serverには、データベースエンジンの機能だけではなく、BI関連のデータマイニング(Data Mining)機能、レポーティング機能、ETL機能などが用意されている。SQL Servicesでもほぼ同じBI機能が提供されている。ただし、クライアントのExcelなどのアプリケーションを利用するのではなく、Webブラウザでもデータが扱えるようになっている。

 現在のCTPでは、データベースエンジンのSQL Data Servicesだけが公開されており、BI機能などの詳細に関しては、まだ未定だ。機能としては、SQL Server 2008で提供されているものとほぼ同じモノが提供されると予測されるが、クラウド上に展開されているので、どのようなAPIやインターフェイスを持つのか、詳細に関して未定といった状況だ。このあたりは、2009年秋に行われるPDC(Professional Developers Conference)で明らかにされるだろう。

 SQL Data Servicesとは直接関連はしないが、簡単に説明しておきたいのが、Velocity(ベロシティ:開発コード名)だ。Velocityは、アプリケーションサーバーとデータベースサーバーの間に入って、データベースのキャッシュを行う分散型メモリ・キャッシュ技術だ。

 Velocityは、複数のサーバーのメモリ上にキャッシュエリアを取り、複数のキャッシュエリアを単一の巨大なキャッシュとして利用することができる。これにより、低速なハードディスクではなく、高速なメモリを利用するため、データベースアクセスがボトルネックにならないようにしている。こういったテクノロジーもAzure上に配備されている。


Velocityとは Velocityのキャッシュの役割
Velocityのシステム図

Velocityの構成図
Azureで提供されるVelocity

SQL Servicesの信頼性

Azure上でのSQL Serviceの構成図
 SQL Servicesは、クラウド上で提供されるサービスということで、Windows Azureの項で説明したように、サーバーがダウンすることもあるという前提でシステムが設計されている。このため、サーバーがダウンしても、サービスが提供できるように、データは必ず3つのレプリカを作るように設計されている。

 また、データ自体は、同じデータノードに保存されずに、分散して配置されることになっている。これにより、特定のノードがストップしても、Azure全体としては、キチンとサービスが提供できるようになっている

 ノードの障害検知は、二重リンクによって行われている。つまり、1つのノードがほかの2つのノードと通信して、ダウンしていないかを常にチェックしている。ノードのリングがループすることで、複数のノードがキチンと動作しているかチェックできる。もし、どこかのノードが落ちて、リングが入れたとしたら、別のノードに切り替えて、システム全体としてサービスが提供できるようになっている。

 このようにして、クラウド上でも、安定したデータベースサービスの提供が行われている。


SQL Servicesのコンポーネント図。データは、各ノードに分散されて保存される
リング構造による障害検知
障害時の対応

関連記事
  ・ Microsoftの戦略的クラウド「Azure(アジュール)」を見る【第一回】(2009/03/23)
  ・ Microsoftの戦略的クラウド「Azure(アジュール)」を見る【第二回】(2009/03/24)
  ・ Microsoftの戦略的クラウド「Azure(アジュール)」を見る【第三回】(2009/03/25)
  ・ Microsoftの戦略的クラウド「Azure(アジュール)」を見る【最終回】(2009/03/27)


( 山本 雅史 )
2009/03/26 08:28

Enterprise Watch ホームページ
Copyright (c) 2009 Impress Watch Corporation, an Impress Group company. All rights reserved.