SQL Azureの概要とSQL Azure Databaseを使ったアプリケーション開発
Windows Azureで作成するアプリケーションの基礎(5)
ダウンロード サンプルファイル (1.0 MB)
今回は、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(データ同期)などの機能が含まれます。これらの機能は、将来のバージョンで順次リリース予定となっています。

なお、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にアクセスすることができるのです。
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の主な機能についてのサポート状況を、以下にまとめてみます。
| 機能 | 説明 | 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に接続することができました。
この記事は参考になりましたか?
- Windows Azureで作成するアプリケーションの基礎連載記事一覧
-
- SQL Azureの概要とSQL Azure Databaseを使ったアプリケーション開発
- Windows Azure Storageを利用したアプリケーションの作成(後編)
- Windows Azure Storageを利用したアプリケーションの作成(準備編)
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 土井 毅(ドイ ツヨシ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
