Windows Azureで作成するアプリケーションの基礎(5)
WINGSプロジェクト 土井 毅 [著] 山田 祥寛 [監修] 2009/11/20 14:00

サンプルファイル 1088.57 KB
1 2 3 4 5 →

はじめに

 今回は、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に接続することができました。


1 2 3 4 5
→
INDEX
SQL Azureの概要とSQL Azure Databaseを使ったアプリケーション開発
Page1
はじめに
対象読者
必要な環境
SQL Azureの概要
SQL Azure Databaseを使ったサンプルの作成
まとめ
プロフィール
WINGSプロジェクト 土井 毅 ドイ ツヨシ

WINGSプロジェクトについて>
有限会社 WINGSプロジェクトが運営する、テクニカル執筆プロジェクト(代表 山田祥寛)。海外記事の翻訳から、主にWeb開発分野の書籍・
雑誌/Web記事の執筆、講演等を幅広く手がける。2008年8月時点での登録メンバは25名で、現在も一緒に執筆をできる有志を募集中。執筆に興味のある方は、どしどし応募頂きたい。著書多数


プロフィール
山田 祥寛 ヤマダ ヨシヒロ

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。
主な著書に「入門シリーズ(サーバサイドAjax/XMLDB/PEAR/Smarty)」「独習シリーズ(ASP.NET/PHP)」「10日でおぼえる入門教室シリーズ(ASP.NET/PHP/Jakarta/JSP&サーブレット/XML)」「Pocket詳解辞典シリーズ(ASP.NET/PHP/Perl&CGI)」「今日からつかえるシリーズ(PHP/JSP&サーブレット/XML/ASP)」「書き込み式 SQLのドリル」他、著書多数


注目の求人情報
システムエンジニア/モバイルメディアをコアとする、老舗成長企業でエンジニアの募集!!
自社既存メディア、また新規メディアの企画開発・保守業務 モバイルメディアの開発業務がコアとなりま...
システムエンジニア/生活情報ポータルサイトのリーディングカンパニーである、JASDAQ上場企業よりSE募集!
社内SEとして、主に業務系システム及びインターネット広告関連システムの設計・開発・運用を行う仕事で...
システムエンジニア/IT事業拡大中のベンチャー企業
Web・オープン系システムの設計・開発 開発・テスト・保守業務。使用言語はJava等。...

(最新日付順)
名前(ゲストの方もコメントをどうぞ):*
アイコン:
なし

内容(テキストのみ1200文字まで):*

投稿規定に同意して

スポンサーサイト

この記事のトラックバックURL: