Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

SQL Azureの概要とSQL Azure Databaseを使ったアプリケーション開発

Windows Azureで作成するアプリケーションの基礎(5)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/11/20 14:00

 今回は、Windows Azure Platformにおいて、クラウド上のデータベース機能を提供する「SQL Azure」について扱います。そして、SQL Azureの中核となるSQL Azure Databaseを使ってサンプルアプリケーションを作成してみます。

目次

はじめに

 今回は、Windows Azure Platformにおいて、クラウド上のデータベース機能を提供する「SQL Azure」について扱います。そして、SQL Azureの中核となるSQL Azure Databaseを使ってサンプルアプリケーションを作成してみます。

対象読者

  • Windows Azureに興味がある方
  • SQL Azureに興味がある方
  • SQL Azure Databaseを使用してアプリケーションを開発したい方

必要な環境

 シリーズ第1回第2回を参考にして、Windows Azureの開発環境のインストール、そしてクラウド環境に配置するために必要なAzure Services Developer Portalのアカウント作成とトークン取得を行ってください。

 さらに、サンプルでは最初にSQL Serverにアクセスするアプリケーションを作成しますので、SQL Server 2005または2008をインストールしてください。本稿では無償エディションのSQL Server 2008 Expressの使用を前提に話を進めます。

SQL Azureの概要

 SQL Azureは、Windows Azure Platformに含まれるビルディングブロックの一つで、SQL Serverの技術をベースにしてクラウド上にリレーショナルデータベース機能を提供するサービスです。

 そして、SQL Azureの中で、データベース本体の機能を提供するのがSQL Azure Databaseです。図1にあるように、SQL Azureにはそれ以外にも、Reporting(レポーティング)、Business Intelligence(BI)、Data Sync(データ同期)などの機能が含まれます。これらの機能は、将来のバージョンで順次リリース予定となっています。

図1:SQL Azureの構成図
図1:SQL Azureの構成図

 なお、2009年7月に名称が変更され、それまでのSQL ServicesからSQL Azureに、そして、SQL Data ServicesからSQL Azure Databaseにと、クラウドを連想させるより直感的な名称となりました。

 SQL Azureの主な機能について説明します。

  • リレーショナルデータモデル
  • Transact-SQLのサポート
  • データアクセス

リレーショナルデータモデル

 2009年8月に、SQL Azure Database August CTPがリリースされました(その後、2009年10月にSQL Azure Database October CTPがリリース)。このリリースにより、それまでの非リレーショナルなデータモデルが大幅に変更され、多くの開発者にとって待望だったリレーショナルデータベースを扱うことができるようになりました。

 これにより、SQL Serverを使用しているデータベースアプリケーションを、多くの修正を必要とすることなく、クラウド上のSQL Azureに対応させることができるようになります。Windows Azure Storageの場合と同様に、クラウドか(ローカル環境も含め)オンプレミスかを問わずどのアプリケーションからでも、SQL Azureにアクセスすることができるのです。

SQL Azureのデータモデルの変更

 2009年8月のリリースにより、SQL Azureのデータモデルは、従来のACEモデルからリレーショナルモデルへと大幅に変更されました。

 

 これまでは、Authority(オーソリティ)、Container(コンテナ)、Entity(エンティティ)で構成されるACEモデルと呼ばれるデータモデルを採用していました。ACEモデルは、Key-Value型のデータストアの一種で、シリーズ第3回でも取り上げたWindows Azure Storageのテーブルストレージともよく似たデータモデルとなっています。

 

 しかし、多くの開発者が望んでいたのは、慣れ親しんだSQLによるアクセス可能なクラウド版のSQL Serverでした。このような圧倒的な声に答える形で、SQL Azureのデータモデルの大幅な変更がなされ、リレーショナルデータモデルが採用されることになりました。

 

 このようにデータモデルが大幅に変更されたため、以前のACEモデルに基づく情報については、もはや現在のSQL Azureには当てはまらなくなっている可能性が高いことに注意する必要があります。

Transact-SQLのサポート

 SQL Serverで使用されているTransact-SQLが、SQL Azureでもサポートされています。しかし、これはSQL ServerのTransact-SQLのサブセットです。主要なSQLステートメント、カーソル、ストアドプロシージャ、トランザクション、トリガ、ビューなど主な機能はサポートあるいは部分的にサポートされています。一方、一部のSQLステートメントやCommon Language Runtime(CLR)などの機能はサポートされていません。

 Transact-SQLの主な機能についてのサポート状況を、以下にまとめてみます。

Transact-SQLの主な機能についてのサポート状況
機能 説明 SQL Azureでのサポート
Cursors カーソル サポートまたは部分的サポート
Local temporary tables ローカル一時テーブル サポートまたは部分的サポート
Stored procedures ストアドプロシージャ サポートまたは部分的サポート
Transactions トランザクション サポートまたは部分的サポート
Triggers トリガ サポートまたは部分的サポート
Tables, joins, and table variables テーブル,結合 サポートまたは部分的サポート
User-defined functions ユーザー定義関数 サポートまたは部分的サポート
Views ビュー サポートまたは部分的サポート
Common Language Runtime (CLR) 共通言語ランタイム(CLR) サポート外
Database mirroring データベースミラーリング サポート外
Distributed queries 分散クエリ サポート外
Distributed transactions 分散トランザクション サポート外

 SQL AzureがサポートするTransact-SQLの詳細については、MSDNライブラリにある次のWebページを参照してください(すべて英文)。

データアクセス

 アプリケーションからSQL Azureにアクセスする方法として、従来のADO.NETやODBCドライバを使用できます。これにより、SQL Serverにアクセスする今まで通りの方法で、クラウド上のSQL Azureにもアクセスできます(サンプルでは、ADO.NETを使用してアクセスしてみます)。

 加えて、SQL Server Driver for PHP 1.1というPHP用ドライバを使用する方法もあります。PHP開発者であれば、このドライバにより簡単にSQL Azureにアクセスできます。

 直接SQL Azureにアクセスするためのツールとしては、コマンドプロンプトから起動するsqlcmdユーティリティがあります。後程サンプルでも扱いますが、sqlcmdを使用してTransact-SQLのステートメントやストアドプロシージャを実行することができます。

 SQL Serverと同じように、GUIツールのSQL Server Management Studio(SSMS)は使えないのかと思われるかもしれません。MSDNライブラリの情報によると、現在のリリースでは、SQL Server Management Studioの機能は限定的にしか使用できず、サポート外となっています。筆者が試してみたところ、オブジェクトエクスプローラからの接続はうまく動作せず、直接クエリ画面を開き接続の変更を使用することにより、エラーメッセージが出るもののSQL Azureに接続することができました。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

  • WINGSプロジェクト 土井 毅(ドイ ツヨシ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

バックナンバー

連載:Windows Azureで作成するアプリケーションの基礎
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5