Windows Azure Platform速習シリーズ:SQL Azure(前編)

SQL Azureの機能と制約を理解する

Windows Azure Community 山本 昭宏 (監修 市川 龍太)
2010/01/12
Page1 Page2

Azure関連の記事

まだ知らない人のための最新Azure入門 - Build Insider

Azure TIPS - Build Insider

ここまで進化した、Azure Webサイトの世界観(2014年7月版) - Build Insider

連載:Windows Azureモバイルサービスで作る簡単スマートフォンアプリ - Build Insider

Microsoft Azureプレビュー・ポータルの機能とは? - Build Insider

特集:Windows Azureメディア・サービスを利用したストリーミング配信 - Build Insider

連載:Microsoft技術におけるアイデンティティ連携開発のいま - Build Insider

Vittorio Bertocci氏インタビュー: 開発者にとってのWindows Azure Active Directoryの役割と今後の展開 - Build Insider

その知識、ホントに正しい? Windowsにまつわる都市伝説(6):Microsoft Azureの秘密を探る[その1] - @IT

進化を続けるマイクロソフトのクラウド:Windows Azureの“いま”を知る - @IT

Azure - Build Insider

 Windows Azure Platformとは、マイクロソフトが提供するクラウド・サービスのためのプラットフォームであり、現在は以下の3つのサービスから構成されている。

  • Windows Azure
    クラウド上でのOSに相当する機能を提供する。

  • Windows Azure platform AppFabric
    主にエンタープライズ・サービス・バス機能とアクセス管理機能を提供する。

  • SQL Azure
    クラウド上でデータベース関連の機能を提供する。

 本稿では、このうち3つ目のSQL Azureを解説する。

 ところで、「クラウド上のデータベース」と聞いて、開発者やデータベース管理者がSQL Azureを実際に導入する際に、課題となるのは何だろうか? やはり、「既存のデータベースとの互換性は保たれているのか?」、また、「現在のデータベース開発手法がそのまま流用できるのか?」といった不安が大きいのではないだろうか。

 その点を踏まえ、本稿では特にSQL Serverとの互換性に主眼を置き、以下の観点からSQL Azureの解説を行う。

【前編】SQL Azureの機能と制約を理解する

  • SQL Azureの概要と特徴
  • SQL Azure Databaseの制約
  • 今後追加される予定の機能
  • 料金体系とSLA

【後編】SQL Azureを実際に活用する

  • 実際の使用法
  • 開発手法

 これらの観点からSQL Azureを実際に活用するための基本的な情報を提供し、読者に既存の知識や資産を有効に活用するための足掛かりとしていただくことが本稿の目的である。

 なお、より理解を進めるために、同Windows Azure Platform速習シリーズの「Windows Azureのローンチに向けて知っておくべき4つのこと」と、.NET未来展望台シリーズの「クラウドの本命となるか? 進化するWindows Azure」に目を通しておくことをお勧めする。

SQL Azureの概要と特徴

 冒頭でも述べたが、SQL AzureとはWindows Azure Platformのデータベース関連の機能を含むサービスの総称である。SQL Azureは、今後提供される予定のものを含め、以下の機能により構成されている。

機能名 概要 備考
Database リレーショナル・データベース機能を提供する。SQL Server 2008をベースにしており、基本的な機能に関する互換性がある。ほかのSQL Azure機能の基盤となる  
Reporting レポーティング機能を提供する。SQL Server Reporting Servicesと同様の機能を持つものと思われる 今後提供予定
Business Analytics ビジネス・インテリジェンス(BI)用のデータ分析機能を提供する。SQL Server Analysis Servicesと同様の機能を持つものと思われる 今後提供予定
Data Sync オンプレミス(=企業内)のSQL Serverとの、双方向のデータ同期機能を提供する CTP 2009年11月版(英語)を提供中
SQL Azureの機能

 以下にSQL Azureの概念図を示す。

SQL Azureの概念図
灰色のサービスは今後提供予定のものを表す。

 以降では現時点で機能が提供されており、ほかのサービスの基盤となるSQL Azure Databaseについて解説する。

SQL Azure Databaseの特徴

 SQL Azure Databaseの特徴の1つは、リレーショナル形式のデータベース機能を提供するということだ。当たり前のことと思われるかもしれないが、SQL Azure Databaseの発表時(当時はSQL Data Servicesと呼ばれていた)、クラウド・サービスで先行するアマゾンとグーグルはデータの永続化サービスとして、リレーショナル形式のデータベースは採用していなかった。アマゾンとグーグルが採用していたのは、データをキーと値のセットで格納する「Key-Value形式*1」と呼ばれるシンプルな形式だった。

*1 これは.NET FrameworkのDictionary型をイメージするのが分かりやすいだろう。ちなみに、アマゾンとグーグルが提供するKey-Value形式のデータ永続化サービスは、それぞれSimpleDB(アマゾン)とBigTable(グーグル)と呼ばれている。Key-Value形式のストレージの詳細に関しては「もう1つの、DBのかたち、分散Key-Valueストアとは」を参照されたい。

 Key-Value形式は構造がシンプルであるため、クラウド・プラットフォームに求められるデータの大規模分散管理に適しており、実際SQL Azure Databaseも当初はKey-Value形式を拡張した「ACE」(Authority-Container-Entity)という形式でデータを格納していた。しかし、実際には開発者の声の大半は従来のリレーショナル形式のデータベースを望むものだったため、現在のSQL Serverとの互換性を高めたリレーショナル型のデータベース・サービスに変更されたという経緯がある。

 結論として、SQL Azure Databaseはリレーショナル形式のデータベースを採用し、SQL Serverとの互換性を有することで、オンプレミスの既存のデータ構造を大幅に変更することなくクラウドへ移行できるようになっている。

 もちろん、代わりに大規模分散処理には向かなくなってしまったのだが、Windows Azureでもテーブル・ストレージというKey-Value形式のストレージを提供しており、そのようなデータを扱う場合に使用できる。詳細は「初めてのWindows Azureテーブル・ストレージ開発」を参照されたい。

 もう1つのSQL Azure Databaseの特徴は、サーバの構築、ソフトウェアのインストールや更新がSQL Azure Databaseによって自動的に管理され、実行されるということだ。加えて、データの複数ノードへのレプリケーション、障害検知、障害発生時のレプリケート先へのフェイル・オーバーまで自動的に行われる。これらの自動管理機能によって、環境構築、運用のコストを下げられる可能性もある。

SQL Azure Databaseの制約

 ここではSQL Azure Databaseの主な制約を解説する。

 SQL Azure Databaseでは高可用性を実現するため、データの自動レプリケーションや障害発生時の自動フェイル・オーバーといった機能が提供される。これらの機能を実現するため、データベース・ファイルやインデックス・ファイルの配置など、物理リソースの管理はSQL Azure Databaseが自動的に行う。そのため、現状ではユーザーが直接ファイル・システムなど、サーバの物理リソースにアクセスすることはできないようになっている。

 SQL Azure Databaseには上記のような理由に基づく制約が存在するので、既存のデータベースからの移行を行う場合は、これらの制約を熟知しておく必要がある。

 SQL Azure DatabaseのT-SQLの主な機能のサポート状況を以下の表にまとめたので、まずはこれを概観してみよう。

機能(日本語) サポート区分
定数 サポート、または部分的なサポート
制約 サポート、または部分的なサポート
カーソル サポート、または部分的なサポート
インデックスの管理と再構築 サポート、または部分的なサポート
ローカル一時テーブル サポート、または部分的なサポート
予約済みキーワード サポート、または部分的なサポート
ストアド・プロシージャ サポート、または部分的なサポート
統計情報の管理 サポート、または部分的なサポート
トランザクション サポート、または部分的なサポート
トリガー サポート、または部分的なサポート
テーブルの結合とテーブル変数の使用 サポート、または部分的なサポート
データベース、テーブル、ユーザーなどのCREATE/ALTER/DROP サポート、または部分的なサポート
ユーザー定義関数 サポート、または部分的なサポート
ビュー サポート、または部分的なサポート
バックアップおよび復元 サポート対象外
SQL CLR サポート対象外
データベース・ファイルの配置(アタッチおよびデタッチ) サポート対象外
データベースのミラーリング サポート対象外
分散クエリ サポート対象外
分散トランザクション サポート対象外
複数のアクティブ結果セット(MARS) サポート対象外
ファイルグループ管理 サポート対象外
グローバル一時テーブル サポート対象外
空間データ型およびインデックス サポート対象外
SQL Server構成オプション サポート対象外
SQL Server Service Brokerの使用 サポート対象外
システム・テーブルの操作 サポート対象外
トレース・フラグの使用 サポート対象外
SQL Azure Databaseでの主なT-SQL機能のサポート状況

 この表を見ると、サポートされない機能の多くは、システム関連の機能、データベースの物理リソースを直接操作する機能、複数のデータベースにまたがって処理を行う機能であるということが分かるだろう。

 また、SQL Azure Databaseでのデータ型のサポート状況は以下の表のとおりである。

データ型のカテゴリ データ型 サポート区分
真数型 bigint、bit、decimal、int、money、numeric、smallint、smallmoney、tinyint サポート
概数型 float、real サポート
日付および時刻型 date、datetime2、datetime、datetimeoffset、smalldatetime、time サポート
文字列型 char、varchar、text サポート
Unicode文字列型 nchar、nvarchar、ntext サポート
バイナリ文字列型 binary、varbinary、image サポート
そのほかのデータ型 cursor、sql_variant、table、timestamp、uniqueidentifier、xml サポート
hierarchyid、geography、geometry、CLRユーザー定義型 サポート対象外
SQL Azure Databaseでのデータ型のサポート状況

 この表を見て分かるとおり、ほとんどのデータ型はサポートされているので、移行の際は既存のテーブル・スキーマを大きく変更することなく対応できるだろう。

 サポートされていないデータ型の1つはCLRユーザー定義型で、現在はSQL CLR自体がサポートされていないため使用できない。ほかに、SQL Server 2008から追加された、Hierarchyid(階層ID型)、Geography(平面空間データ型)、Geometry(地理空間データ型)も使用できないので、移行の際は注意が必要だ。

 それではSQL Azure Databaseについて特に知っておくべき制約を解説する。

データ領域のサイズ制限

 後でSQL Azure Databaseの料金体系で解説するが、現在のSQL Azure Databaseには1つのデータベースの最大容量が10GBytesまでという制約がある。

 筆者が各種資料を読んだ限りでは、SQL Azure Databaseの思想として、巨大なデータベースを1つ用意するよりは、比較的小規模なデータベースを多数連携させることによりスケーラビリティを確保するという考えがあるようだ。これは、従来のデータ・パーティショニング機能を用いて大規模データベースを実現する方法と似たものだろう。

 ただし、現在SQL Azure Databaseでは、データのパーティショニング機能は使用できない。10GBytesというデータベースの最大容量では足りないという場合は、データベースを追加で購入し、均等に分散させることのできる値(例:日付、キー値のハッシュ値)に基づいて、手動で複数のデータベースのテーブルにデータを分散させるという方法がある。

 実際にデータベース分割(Database Sharding)によるスケールアウトをどのように行うかは「Windows Azure Platform Training Kit(英語)」のdemosの「Scaling Out SQL Azure with Database Sharding」にトレーニングがあるので参考にしてほしい。

ユーザー認証

 SQL Serverの認証方式にはWindows認証とSQL Server認証があるが、SQL Azure Databaseでの認証はSQL Server認証のみがサポートされ、Windows認証は使用できない。そのため、現在、データベースのユーザーやログイン、権限などの管理をActive Directoryのユーザーにひも付けて行っているデータベースを移行する際は注意が必要だ。

バックアップと復旧

 「T-SQL機能のサポート状況」の表にあるとおり、特に注意しなければならないのは、現在のSQL Azure Databaseではデータベースのバックアップや復旧、データベース・ファイルのアタッチ、デタッチが使用できないということだろう。

 先に説明したとおり、SQL Azure Databaseは自動的にデータのレプリケーションを行い、障害発生時には自動的に復旧するという高可用性を有する。しかし、当然ながらオペレーション・ミスが発生した場合のロールバックなどまでサポートされるわけではないので、任意のバックアップや復旧を行う手段は必要となるだろう。

 バックアップや復元に関しては、後編の「SQL Azure Databaseを実際に使用する」で説明するBCP(bulk copy)ユーティリティ、SSIS(SQL Server Integration Services)を使用するという方法がSQL AzureのSDKで提示されている。

参考リンク

 SQL Azure Databaseの制約に関する詳細が記載されているページへのリンクを以下にまとめた。必要に応じて適宜参照してほしい。

 続いて、SQL Azure Databaseに今後追加される予定の機能の説明を行う。


 INDEX
  Windows Azure Platform速習シリーズ:SQL Azure(前編) 
  SQL Azureの機能と制約を理解する
  1.SQL Azureの概要と特徴/SQL Azure Databaseの制約
    2.SQL Azure Databaseに今後追加される機能の予定/料金体系とSLA
 
  Windows Azure Platform速習シリーズ:SQL Azure(後編)
  SQL Azureを実際に活用する
    1.SQL Azureの契約とSQL Azure Databaseの準備
    2.SQL Server Management StudioによるSQL Azure Databaseの操作
    3.SQL Azure Databaseの開発手法

インデックス・ページヘ  「Windows Azure Platform速習シリーズ」
Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

.NET未来展望台

未来展望台コーナースポンサーからのお知らせ


- PR -
- PR -
ソリューションFLASH

「ITmedia マーケティング」新着記事

SEOは総合格闘技である――「SEOおたく」が語る普遍のマインド
SEOの最新情報を発信する「SEOおたく」の中の人として知られる著者が、SEO担当者が持つべ...

HubSpot CMSにWebサイトの「定石」を実装 WACUL×100のパッケージ第1弾を提供開始
WACULと100は共同で、Webサイトの「定石」をHubSpotで実装する「Webサイト構築パッケージ...

電通調査で「料理は面倒」が6割超 なぜそうなった?
電通の国内電通グループ横断プロジェクト「電通 食生活ラボ」は、「食生活に関する生活者...