本稿では、Microsoft Azureで利用可能なPaaSとして提供されている「SQL Server」の特徴やメリットを紹介します。最新機能ではなく、これからAzureのSQL Serverを利用しようと考えている方に、全体的な特徴をつかんでもらえる内容です。前編では、Azureで提供されているPaaSのSQL Serverの種類と特徴を紹介します。
Microsoft Azure(以下、Azure)上では、さまざまな種類のデータベースがPaaS(Platform as a Service)として提供されており、今回紹介するSQL Serverベース以外のデータベースも使用できます。
本稿が対象としているSQL Serverをベースとしたサービスについては、次の環境を利用できます。
利用形態による管理範囲の違いは、一般的には以下の図1のようになるのではないでしょうか。
オンプレミスでは、ユーザーが全てのレイヤーを操作できます。自由度が高い半面、ユーザーによる管理が必要な範囲が広くなります。
IaaS(Infrastructure as a Service)は、提供されているハードウェア上にユーザーが任意のOSを展開して利用します。ハードウェアの管理はサービス提供者に任せられますが、ハードウェアより上のレイヤーはユーザーが管理する必要があります。オンプレミスと比べて管理する範囲は少なくなりますが、操作可能な範囲の自由度と引き換えにユーザーが管理すべき部分が残った状態になります(AzureのIaaSで構築したSQL Serverには「SQL Server IaaS Agent拡張機能」が提供されており、運用管理の利便性を向上できるようになっています)。
オンプレミス/IaaSにSQL Serverをインストールした場合は、SQL Serverの全機能を利用できます。環境に対しての自由度が高いというメリットがありますが、ユーザーによる管理が必要な範囲が広く残った状態となります。
PaaSは、SQL Serverのレイヤーまでサービス提供者で管理されています。標準で可用性環境として構築されており、データベースのバックアップも自動で行われるので、ユーザーは「データベースを使う」ことに集中できます。
OSやSQL Serverのバージョンアップなど、ソフトウェアのメンテナンスについてもサービス供者側で実施され、ユーザーがアップグレードを行わなくても常に最新状態に保たれ、最新機能を利用できます。
AzureでSQL Serverを利用する場合の特徴については、こちらのドキュメントも参考にしてください。
本稿では、AzureのSQL Serverベースのサービスで利用機会が多いと思われる「Azure SQL Database」(以下、SQL Database)と「Azure SQL Database Managed Instance」(以下、Managed Instance)の特徴を紹介していきます(図2)。
それでは、SQL DatabaseとManaged Instanceに共通するPaaSの特徴を見ていきましょう。大きな特徴としては次のようなものがあります。
最新のSQL Serverの更新プログラムは、製品のリリース後12カ月は毎月提供され、以降は隔月で提供される「新しいサービスモデル」に改定されました。
「常に最新の状態を維持する」には、定期的なソフトウェアのメンテナンス(更新プログラムの適用)が必要です。IaaSの場合、更新プログラムの適用はユーザー側で実施する必要があります。
PaaSの場合、更新プログラムの適用は環境の提供者側で自動的に行われ、ユーザーが明示的に更新プログラムを適用しなくても、常に最新の状態で利用できます。PaaSでは、更新プログラムの適用のようなメンテナンスにより、瞬間的な接続の切断が発生する可能性があるので、接続の再試行についての考慮を意識しておく必要があります。
SQL Serverで使用可能な機能は「インストールしたバージョンのSQL Server」に依存します。最新の機能を利用したい場合には、ユーザーがSQL Serverのバージョンアップを実施する必要があり、製品のライフサイクルサポートをユーザー側で意識しておく必要があります。
PaaSでは、更新プログラムの適用が行われる他、「SQL Serverのバージョンアップ」も自動的に行われます。
本稿執筆時点(2019年3月末)では、SQL Serverの最新バージョンはプレビュー版として提供されているSQL Server 2019です。
SQL Database/Managed Instanceは、SQL Server 2019で実装される機能も利用できる、「最新のSQL Serverの機能をいち早く利用できるPaaS環境」となっています。
IaaSでSQL Serverを構築した場合、環境の構成に応じて、99.9%または99.95%以上の時間で接続の確保が保証されます。
「データベースの可用性」を考慮し、データベースに冗長性を持たせる必要がある場合は、IaaSの可用性と「SQL Serverの可用性ソリューション」を組み合わせる必要があります。
PaaSのSQL Serverでは、99.99%の接続が確保されることが保証されており、データベースを作成すると、標準の状態で「データベースの可用性が考慮された構成」となります。
同一地域の別のサーバや他の地域のサーバにデータを同期して、ビジネス継続性を高めた構成に関しても、ポータルからの操作で簡単に設定でき、DR(ディザスタリカバリー)構成も容易に構築することができます。
可用性が考慮されたとしても、データベースのバックアップが不要になるわけではありません。操作を誤ってデータを削除した場合や、調査のために特定の時点のデータベースに戻す必要がある場合には、データベースのバックアップが必要不可欠となります。
IaaSのSQL Serverでは、ユーザーがデータベースのバックアップを設定する必要があり、新しくデータベースを作成した際、新規データベースをバックアップ対象に指定するといった、データベースの増減による運用の考慮も必要になります。
PaaSのSQL Serverでは、データベースを作成すると、バックアップが自動的に作成されます。データベースを作成するたびに、バックアップの明示的な追加設定を行う必要はありません。自動的に取得されているバックアップを使用して「ポイントインタイムリストア(PITR)」も行えるので、「特定の時間のデータベースに戻す」ことも可能です。
また、長期保存バックアップを取得するための機能もあるので、バックアップの保有期間も柔軟に設定できます。
IaaSでは、物理ハードウェアに構築したSQL Serverとは異なり、CPU/メモリのサイズを柔軟に変更できます。新規ディスクも柔軟に追加できますが、データベースのディスク性能については、データベース作成時のディスク構成に大きく影響します。
新規追加したディスクを、単純に領域拡張で使う場合には問題ありません。しかし、新しいディスクの性能をデータベースで使用しているディスクに追加したいという場合には、ディスクの再構成が必要になる可能性があります。
このように、IaaSでは全てのリソースの性能を柔軟に調整することが難しい場合があります。また、サイズの変更には再起動を伴うため、再起動中のダウンタイムをどのように短縮するかについても考慮する必要があります。
PaaSで構築した場合は、リソースのスケールを柔軟に調整できるようになっており、リソースのスケールにより、CPUやメモリ、ディスクの性能を調整することができます。
標準で可用性環境としても構成されているので、リソースのスケールを変更した場合のダウンタイムも最小化され、オンラインでスケールを変更することが可能です(スケール変更時に瞬間的な接続の切断が発生する可能性があるため、接続の再試行については考慮しておく必要があります)。
スケールを柔軟に変更できることで「利用者が多い時間帯はリソースを多く使えるサイズに変更」「利用者が少ない時間帯はリソースが少ないサイズに変更」というように、利用状況に応じてサイズの変更が可能になり、コスト削減につなげることもできます。
PaaSを利用する際には「初期構成時のサイズを恒久的に使用する」のではなく、クラウドのメリットである「柔軟にサイズを変更できる」というメリットの効果的な活用を検討してください。
PaaSのSQL Serverを利用する際には、SQL Serverとの機能の違いを意識しておく必要があります。
SQL Serverはデータベースの機能だけではなく、「データプラットフォーム」としてのさまざまな機能を提供する製品です。代表的なものとして、次のような機能が提供されています。
ただし、AzureのSQL Database/Managed Instanceで利用できるのは、これら機能の中で「データベースエンジン」のみとなります。データベースエンジン以外の機能については、以下のように類似の機能を持つ、他のサービスを利用する必要があります。
データベースエンジンについては、SQL Serverと同一ですが、一部の機能に違いがあります。代表的な違いは「タイムゾーン」です。
SQL Serverでは、OSのタイムゾーン設定によって「GETDATE()関数」のような日付関数が返す値が変わります。日本で利用する場合は、OSのタイムゾーンを「日本」に設定し、「GETDATE()」により、現在日付を取得した場合には「日本時間」が取得されるようにするのが一般的です。
しかし、本稿執筆時点では、PaaSのSQL Serverではタイムゾーンを変更できないため、「GETDATE()」を実行した場合は、UTC(協定世界時)が取得されます(本稿執筆時点では開発中となっていますが、Managed Instanceについては、タイムゾーンをUTC以外に変更可能とする対応も進められています)。PaaSではこのような動作の違いや、利用できない機能が幾つか存在します。
一方で、PaaSのSQL Serverにしか実装されていない機能もあります。例えば、「高度な脅威保護」はPaaSでのみ使用できる機能であり、脅威の検出により、今まで接続していなかったアクセス元からの接続や、異常なパターンのクエリ実行を検知して、セキュリティを高めることができます。
不足/重複しているインデックスの自動的なメンテナンス(インデックスの追加/削除)を行う「インデックス自動チューニング」もPaaSにのみ実装されている機能になります。
この他、PaaSだけに実装されている機能は幾つもあるので、「PaaSのSQL Serverでは利用できない機能」にだけ目を向けるのではなく、「PaaSのSQL Serverでのみ利用できる機能」にも注目することで、さまざまな機能的なメリットが見つかるのではないでしょうか。
代表的な機能の違いについては以下の表1にまとめてみました。
機能 | SQL Server | SQL Database | Managed Instance |
---|---|---|---|
可用性 | 可用性環境を個別に構築(SLA99.9または99.95%) | 自動的に可用性環境として構築される(SLA99.99%) | 自動的に可用性環境として構築される(SLA99.99%) |
バージョンアップ | 利用者が個別に実施 | 自動的に実施 | 自動的に実施 |
DB当たりの最大サイズ | 524TB(Azure VMの場合サイズに依存) | 4TB 10TB(Hyperscale (Preview)) |
汎用目的:8TB ビジネスクリティカル:4TB |
定期的な自動バックアップ | メンテナンスプランなどで個別に設定 | 自動的にバックアップが取得される | 自動的にバックアップが取得される |
BACKUPステートメントによるバックアップ | 可能 | なし | 可能(COPY_ONLYによる完全バックアップ) |
RESTOREステートメントによるリストア | 可能 | なし | 可能 |
BACPACのインポート/エクスポート | 可能 | 可能 | 不可 |
自動チューニング | ・プランの自動強制 (2017から) |
・プランの自動強制 ・インデックスの自動チューニング |
・プランの自動強制 |
複数のデータベース間のクエリ | 可能 | エラスティッククエリで一部代替可能 | 可能 |
データベースをまたがるトランザクション | 可能 | エラスティックトランザクションで一部代替可能 | 可能 |
データベースメール | 可能 | なし | 可能 |
ファイルグループの利用 | 可能 | なし | 可能 |
FILESTREAMの利用 | 可能 | なし | なし |
Geoリストア | なし | 可能 | なし(COPY_ONLYバックアップを利用) |
Geoレプリケーション | なし | 可能 | 可能 |
Service Broker | 可能 | なし | 可能 |
SQL Serverエージェント | 可能 | なし | 可能 (T-SQLの定期実行が可能) |
SQL Server Profiler | 可能 | なし | 可能 |
拡張イベント | 可能 | 可能 | 可能 |
脅威検知 | なし | 可能 | 可能 |
Azureの仮想ネットワークの利用 | 可能 | なし(サービスエンドポイントで代替) | 可能 |
データベースの互換性レベル | SQL Serverのバージョンに依存 | 100/110/120/130/140/150 | 100/110/120/130/140/150 |
サーバレベルの照合順序 | インストール時に指定 | DBの照合順序に依存 (DB作成時のみ指定可能) |
インスタンス作成時に指定 (インスタンス作成時にのみ指定可能) |
タイムゾーン | OSの設定に依存 | UTCタイムゾーン固定 | UTCタイムゾーン固定 |
ネットワークの接続方法 | ・パブリックIP ・プライベートIP |
・パブリックIP | ・プライベートIP |
SQL Serverの接続 | ・SQL Server認証 ・Windows認証 |
・SQL Server認証 ・Azure AD認証 |
・SQL Server認証 ・Azure AD認証 |
表1 利用形態による機能差 |
機能の違いの詳細な情報については、こちらのドキュメントを参照してください。
前編ではMicrosoft Azureで提供されているPaaSのSQL Serverの基本的な特徴を紹介しました。PaaSのSQL Serverは、アップグレードが自動的に行われるので、ライフサイクルサポートに合わせたバージョンアップや、新しいメジャーバージョンのリリースを待つことなく、最新の機能をいち早く使用できます。
バージョンアップだけでなく、環境を維持/管理する機能も充実しているので、PaaSを利用することで「データを格納し、データを活用する」ことに集中できると感じていただけたのではないでしょうか。
今回は、「SQL DatabaseとManaged Instanceに共通するPaaSの特徴」について触れましたが、各サービスに固有の特徴も存在します。後編では「SQL DatabaseとManaged Instanceの各サービスの特徴」を紹介します。
本稿のSQL Serverマイグレーションや、最新のSQL Serverとなる「SQL Server 2019」の最新情報については、毎月、東京・品川の日本マイクロソフトで開催されている『SQL Server丸わかり1日セミナー』でも解説しています。セミナーでは、デモを交えながら詳しく説明していますので、SQL Serverの最新情報に興味がある方はぜひご参加ください。
上記の日程以外にも開催予定がありますので、最新情報については以下のサイトでご確認ください。
Copyright © ITmedia, Inc. All Rights Reserved.