データ シリーズ: Windows Azure 仮想マシン内の SQL Server と Windows Azure SQL データベースの比較
このポストは、6 月 27 日に投稿された Data Series: SQL Server in Windows Azure Virtual Machine vs. SQL Database の翻訳です。
2週間前に、Windows Azure の新機能を多数発表しましたが、これらの機能は現在、パブリック プレビュー版でご利用いただけるようになっています。そのうちの 1 つが新しい Windows Azure 仮想マシン (VM) で、Windows Azure クラウドに SQL Server 専用インスタンスを簡単に展開できます。この新機能の詳細については、こちらを参照してください。Windows Azure VM で実行される SQL Server は、Windows Azure SQL データベース (旧 "SQL Azure") と同様に、クラウド ベースとオンプレミスのアプリケーションの両方のバッキング データベースとして使用できます。この機能は "サービスとしてのインフラストラクチャ" (IaaS: Infrastructure as a Service) です。正式リリース済みのサービスである Windows Azure SQL データベースは、クラウド環境におけるリレーショナル データベース サービスで、"サービスとしてのプラットフォーム" (PaaS: Platform as a Service) です。Windows Azure に新しい IaaS 機能が導入されたことに伴い、クラウドにデータベースを展開するときに Windows Azure SQL データベースと Windows Azure VM で実行される SQL Server をどのように使い分ければよいのかという疑問をお持ちになった方も多いことでしょう。本稿では、お客様がこの 2 つの相違点、相対的な長所、および主なシナリオをご理解いただけるように、基本的なことをご説明します。お客様のニーズに合わせて、適したほうをお選びください。
特定のソリューションにおいて、この 2 つのクラウド データベースのどちらがより適切かを判断する上で、次の事項が重要な基準となります。
- パッケージ製品版の SQL Server との完全な互換性
- 管理性とコスト
- データベースのスケールアウト要件
この 2 つの製品は、それぞれ異なる目的を想定して最適化されています。
- SQL データベースは、コストを最小限に抑えることを目的として最適化されています。お客様が仮想マシンやデータベースソフトウェアのプロビジョニングやメンテナンスを行う必要がないため、クラウド内で非常に迅速かつ容易にスケールアウト データ層を構築可能であると同時に、継続的な管理コストを削減できます。
- Windows Azure VM で実行される SQL Server は、既存のアプリケーションとの高い互換性を保つこと、およびハイブリッドアプリケーションでの利用を目的として最適化されています。SQL Server のパッケージ製品の全機能が提供されており、管理者は専用の SQL Server インスタンスとクラウド ベースの VM を細かく管理できます。
パッケージ製品版の SQL Server との互換性
機能と互換性の面では、SQL Server 2012 (またはそれ以前のエディション) を Windows Azure VM で実行することと、自社のデータ センターでホストされる VM で SQL Server のパッケージ製品を実行することの間には、違いはありません。本製品は完全なパッケージ製品で、サポートされる機能は、展開する SQL Server のエディションごとに異なります (AlwaysOn 可用性グループは正式リリース時のサポート開始を目標にしており、現在のプレビュー リリースではサポートされていません。Windows クラスタは、正式リリース時にはまだご利用いただけない予定です)。Windows Azure VM で SQL Server を実行すると、インフラストラクチャの購入やメンテナンスが不要であるため、TCO を削減できるという利点があります。既存の SQL Server ベースのアプリケーションは、適切なエディションが展開されている限り、Windows Azure VM で実行される SQL Server で "正常に動作" します。既存のアプリケーションの動作に SQL Server Enterprise Edition が必要な場合、SQL Server Enterprise Edition を Windows Azure VM に展開していれば、アプリケーションは動作します。これには、SQL Server Integration Services、Analysis Services、および Reporting Services などの機能が含まれます。コードの移行は不要で、クラウドとオンプレミスのいずれの環境でもアプリケーションを実行できます。今月発表された新しい Windows Azure 仮想ネットワークを使用すると、SQL Server を実行中の Windows Azure VM をオンプレミスのドメインに参加させることもできます。これは、1 つの企業が設定した信頼境界の下で、オンプレミスとオフプレミスの両方の環境にまたがるハイブリッド アプリケーションの開発を行う上で不可欠です。また、SQL Server で使用する VM イメージは、クラウド内で Windows Azure から提供されているストック イメージ ギャラリーから作成することも、オンプレミス環境の既存の展開から作成して Windows Azure にアップロードすることもできます。展開された VM イメージは、SQL Server ライセンス モビリティによってオンプレミス環境とクラウド環境との間で移動できます。SQL Server ライセンス モビリティは、ソフトウェア アシュアランス (SA) によって SQL Server のライセンスを所有しているお客様に提供されます。
一方、Windows Azure SQL データベースは、SQL Server のすべての機能をサポートしているわけではありません。機能の大部分を占めるサブセットがサポートされており、この機能セットはさらに増加し続けていますが、完全な SQL Server Enterprise Edition に相当するものではなく、すでに説明したように SQL データベースの設計目的の違いに基づく相違点が存在します。MSDN には、SQL データベースと SQL Server のパッケージ製品との機能の重要な相違点を説明したガイドが用意されています。このような違いはありますが、SQL Server Management Studio や SQL Server Data Tools などのツールは、オンプレミス環境や Windows Azure VM で実行される SQL Server と同様に、SQL データベースでも使用できます。簡単にまとめると、Windows Azure VM で SQL Server を実行することは、通常、SQL Server のパッケージ製品との高い互換性を保ちながら既存のアプリケーションやサービスを Windows Azure に移行する場合や、1 つの企業が設定した信頼境界の下で、オンプレミス環境とクラウド環境にまたがるハイブリッド型のアプリケーションやサービスを構築する際に最適な方法です。ただし、次に説明する理由により、新しいクラウド ベースのアプリケーションやサービスにとっては SQL データベースの方が適している場合があります。
管理性とコスト
Windows Azure VM で実行される SQL Server がパッケージ製品と同じデータベース機能を提供する一方で、SQL データベースはサービスとしてコストや管理のオーバーヘッドを最小化することを目指しています。たとえば、SQL データベースでは、クラウド内でのコンピューティング リソースの料金を支払う必要はありません。代わりに、データベースのサイズに基づいて、データベースごとの利用料金を支払います。料金は、最低で 100 MB のデータベースの 1 か月あたり 5 ドル (437 円) 、最高で 150 GB のデータベース (SQL データベースのデータベース 1 つあたりの現在の最大サイズ) の 1 か月あたり 228ドル (19,735 円) です。
また、Windows Azure VM で実行される SQL Server ではアプリケーションの互換性が高レベルで確保されている一方、SQL データベースにはお客様が理解しておく必要がある重要な機能が 2 つあります。
- 基本料金での高可用性 (HA) とデータベース アップタイム 99.9% を保証する SLA の提供
- SQL データベース フェデレーション
SQL データベースでは、高可用性は標準の機能で追加コストは不要です。Windows Azure SQL データベースを作成すると、そのデータベースは実際にはプライマリ ノードと複数のオンライン レプリカにまたがって動作しており、プライマリ ノードで障害が発生すると、セカンダリ ノードが数秒で自動的に処理を引き継ぐので、アプリケーションのダウンタイムは発生しません。SQL データベースでは、このようにして追加料金不要で 99.9% のアップタイムを保証する SLA を提供しています。
Windows Azure VM で実行される SQL Server の場合、正式リリース時に、仮想マシンについては 99.9% のアップタイムを保証する SLA が提供されます。この SLA は VM 自体のもので、SQL Server データベースのものではありません。SQL Server 2012 を実行する複数の VM を構成し、AlwaysOn 可用性グループを設定すると、データベースの高可用性を確保できます。ただし、この方法では手動での構成と管理が必要になると共に、オンプレミスの HA 構成と同様に、運用するセカンダリごとに追加料金が発生します。
Windows Azure VM で実行される SQL Server はお客様が自由に構成可能な専用の VM であるため、オペレーティング システムとデータベースの構成が管理できる一方で、お客様が VM を継続的に構成およびメンテナンスする必要があります。たとえば、修正プログラムの適用および OS やデータベース ソフトウェアのアップグレード、ウイルス対策やバックアップ ツールなどの追加ソフトウェアのインストールなどが必要です。SQL データベースの場合は、VM で実行しているわけではないので、VM の構成は管理できません。ただし、データベース ソフトウェアは、データ センター内でマイクロソフトによって自動的に構成、修正プログラムの適用、およびアップグレードが行われるので、管理コストが削減されます。
Windows Azure VM で SQL Server を実行する場合は、小規模なコンピューティング、ストレージ、およびメモリ構成から、より大きいサイズの VM へのスケールアップが可能で、これによって VM のサイズを管理できます。一方、SQL データベースは、スループット増大に対してスケールアップよりもスケールアウトで対応するように設計されています。これは、フェデレーションと呼ばれる SQL データベース独自の機能によって実現されます。フェデレーションによって、1 つの論理データベースを簡単に複数の物理ノードにパーティション分割 (分割データベース化) できるので、極めて要求の厳しいデータベース駆動型アプリケーションに対しても、非常に高いスループットで対応できます。SQL データベースのフェデレーション機能は、SQL データベース独特の PaaS の特性と、円滑なプロビジョニングおよび管理の自動化によって実現されています。SQL データベース フェデレーションについては、後で詳しく説明します。
データベースのスケールアウト要件
Windows Azure VM で実行される SQL Server と SQL データベースのいずれかを選択する際に、パフォーマンスとスケーラビリティも重要な基準となります。お客様は、自社所有のハードウェアで SQL Server を実行する場合、常に最適な垂直方向のスケーラビリティ ("スケールアップ" とも呼ばれる) を実現できます。これは、お客様がパフォーマンスについて高度に最適化されたハードウェアを購入できるからです。Windows Azure VM で実行される SQL Server では、データベース 1 つあたりのパフォーマンスは、Windows Azure で実行可能な最大の仮想マシン イメージの制約を受けます。これは、導入当初は仮想 CPU 数 8 個、RAM 容量 14 GB、ストレージ容量 16 TB、ネットワーク帯域幅 800 MB/秒という構成の VM になる予定です。ストレージはお客様の手でパフォーマンスに合わせて最適化および構成可能です。また、正式リリース版では AlwaysOn 可用性グループを構成して実行することもできます (プレビュー リリースでは利用できません)。必要に応じてその他のスケールアウト メカニズムを使用すると、パフォーマンスをさらに向上させることもできます (読み取り専用セカンダリ、スケーラブルな共有データベース、ピアツーピア レプリケーション、分散パーティション ビュー、データ依存型ルーティングなど)。
一方、SQL データベースでは、お客様が CPU の数やメモリの容量を選択することはありません。SQL データベースは、お客様が構成する必要のない共有リソースを使用します。マイクロソフトでは、1 つのアプリケーションが継続的にリソースを占有することがないように、SQL データベースのリソース使用量のバランスを取るよう努めています。しかし、これは結果的にそれぞれの SQL データベースがスループットの制限を受け、特定のデータベースへの需要が一定のリソースの制限を超えると自動的に調整されることを意味します。この場合、ネイティブなスケールアウト機能を使用してさらに高いスケーラビリティを実現する、SQL データベース フェデレーションと呼ばれる機能が働きます。フェデレーションでは、1 つの論理データベースを簡単に複数の物理ノードに分割できます。
この SQL データベースのネイティブな機能によって、スケールアウトの設定や管理が容易になります。たとえば、SQL データベースでは、データベースを数個から数百個のノードにすばやくパーティション分割することができます。このとき、各ノードの合計容量がデータ層の総容量となります (アプリケーションがこの機能の利用を前提に設計されている必要があります)。パーティション分割操作は 1 行の T-SQL と同じくらい単純で、再分割中もデータベースはオンラインのままです。SQL データベース フェデレーションの詳細については、こちらを参照してください。
まとめ
Windows Azure VM (IaaS) で実行される SQL Server と Windows Azure SQL データベース (PaaS) との主な相違点と類似点を理解する上で、このブログがお役に立つと幸いです。近いうちに、この 2 つのモデルをお選びいただけるようになります。また、両モデルの併用や、さまざまなタイプのソリューションに合わせた調整を簡単に実施できるようになります。どうぞご期待ください。
基準 |
Windows Azure VM 内で実行される SQL Server |
Windows Azure SQL データベース |
ソリューション提供までの期間 |
|
|
既存のアプリケーションの移行 |
短期間 |
中程度 |
新しいアプリケーションの構築 |
中程度 |
短期間 |
ソリューションのコスト |
|
|
ハードウェアの管理 |
不要 |
不要 |
ソフトウェアの管理 (データベースおよび OS) |
手動 |
不要 |
仮想マシンの高可用性 |
自動化 (正式リリース時には SLA で 99.9% のアップタイムを保証) |
該当なし |
データベースの高可用性 |
予備の VM と AlwaysOn (正式リリース時) による手動セットアップ、DBM、ログ配布による DR、トランザクションのレプリケーションが必要 |
標準機能 (SLA で 99.9% の DB アップタイムを保証) |
コスト |
中 |
低 |
スケールモデル |
|
|
スケールアップ |
XLarge VM (8 コア、14 GB RAM、最大 16 TB のディスク容量) |
サポートなし |
スケールアウト |
AlwaysOn の読み取り専用セカンダリ、スケーラブルな共有データベース、ピアツーピア レプリケーション、分散パーティション ビュー、およびデータ依存型ルーティングによる手動 (セットアップは手動、アプリケーションはこれらの機能を前提とした設計であることが必要) |
SQL データベース フェデレーション (フェデレーション用に設計されているアプリケーションにより、データ層で自動化) |
管理とカスタマイズ |
|
|
OS と VM |
すべて管理 |
管理不要 |
SQL Server データベースとの互換性、カスタマイズ |
SQL Server 2012 パッケージ製品の機能 (データベース エンジン、SSIS、SSAS、SSRS) のフル サポート |
SQL Server 2012 の多くの機能を含むサブセット |
ハイブリッド |
|
|
ドメインへの参加と Windows 認証 |
可 |
不可 |
Azure データ同期によるデータの同期 |
サポート |
サポート |
管理性 |
|
|
リソースのガバナンスとセキュリティ レベル |
SQL インスタンス/VM |
論理 DB サーバー |
ツールのサポート |
既存の SQL Server のツール (SSMS、System Center、SSDT など) |
既存の SQL Server のツール (SSMS、System Center、SSDT など) |
機能拡張時の管理 |
問題なし |
良好 |
Gregory Leake (SQL Server、プロダクト マーケティング担当取締役)
データシリーズ