クラウドネイティブ アプリケーションのための Azure SQL Database の設計
Azure SQL Database は、高いスケーラビリティ機能を提供するサービスとしてのプラットフォーム (PaaS) であり、特定のワークロードに適したソリューションであり、必要とするメンテナンス作業は最小限ですみます。
Azure SQL Database は、開発者が新しいアプリケーション サービスと詳細なデプロイ オプションを大規模に構築するのに、大きな柔軟性をもたらすよう、新しいアプリケーション開発を目的としています。 SQL Database は、特定のワークロードに最適なオプションになる可能性のある、低メンテナンス ソリューションを提供します。
購入モデル
SQL Database には、仮想コアベースのモデルと DTU ベースのモデルの 2 つの主要な購入モデルがあります。 各購入モデルでは、次のサービス レベルが提供されます。
仮想コアベース
この購入モデルでは、コンピューティング リソースとストレージ リソースが分離されます。 つまり、ストレージ リソースとコンピューティング リソースを互いに独立してスケーリングできます。 利用可能なサービス レベルを次に示します。
| サービス レベル | 能力 |
|---|---|
| General Purpose | このサービス レベルは、集中度の低い運用向けに設計されており、予算指向のバランスの取れたコンピューティングとストレージのオプションを提供します。 プロビジョニングされたコンピューティング レベルとサーバーレス コンピューティング レベルの両方が提供されます。 |
| Business Critical | このサービス レベルでは、In-Memory OLTP と組み込みの読み取り専用レプリカがサポートされます。 また、コアあたりのメモリが多く含まれ、ローカル SSD ストレージを使用ます。これは、パフォーマンスを重視するワークロード用に設計されたものです。 |
| Hyperscale | Hyperscale では、高度な技術を使用する水平スケーリング機能を導入しており、データ サイズの増加に応じてコンピューティング ノードを追加できます。 単一の SQL データベースでのみサポートされます。 Hyperscale を使用すると、General Purpose サービス レベルと Business Critical サービス レベルで使用できる制限を大幅に超えるストレージ リソースとコンピューティング リソースをスケーリングできます。 |
DTU ベース
DTU モデルには、Basic、Standard、および Premium の 3 つのサービス レベルがあります。 コンピューティング リソースとストレージ リソースは DTU レベルに依存し、固定のストレージ制限、バックアップ保有期間、コストで、さまざまなパフォーマンス機能を提供します。
たとえば、データベースが最大ストレージ制限に達するまで拡大した場合、コンピューティング使用率が低い場合でも、DTU 容量を増やす必要があります。
SQL Database のスケーリング操作は、スケーリング操作の最後に短時間の接続の中断を伴う場合があります。 この動作をトリガーする主な変更が 2 つあります。
- 内部フェールオーバーを必要とするスケーリング操作を開始した後。
- エラスティック プールにデータベースを追加または削除する場合。
アプリケーションで適切な再試行ロジックを使用して、接続エラーを処理できます。
注
Azure SQL Managed Instance では DTU ベースの購入モデルはサポートされていません。
サーバーレス コンピューティング レベル
その名前にもかかわらず、サーバーレス コンピューティング レベルでは、データベースにサーバーが必要です。 サーバーレス オプションは、SQL Database の自動スケールおよび自動一時停止ソリューションと考えることができます。 開発環境とテスト環境のコストを削減するのに効果的です。 たとえば、ワークロードに基づいて動的にスケーリングする、データベースの仮想コアの最小構成と最大構成を設定できます。
自動一時停止遅延機能を使用すると、データベースが自動的に一時停止されるまでに非アクティブになる期間を定義できます。 自動一時停止の遅延機能は、1 時間から 7 日まで設定できます。 または、自動一時停止遅延機能を無効にすることもできます。
再開操作は、次にデータベースにアクセスしようとするときにトリガーされ、データベースが一時停止されている場合はストレージ料金だけが適用されます。
上の図は、サーバーレス コンピューティング レベルの自動スケールと自動一時停止のプロパティを変更できる場所を示しています。
デプロイ モデル
Azure に SQL Database を展開する場合、2 つの主要なデプロイ モデルがあります。単一データベースとエラスティック プールです。 エラスティック プールは他のデータベースと同じプールの一部とリソースを共有するのに対し、単一データベースのリソースは個別に管理されます。
仮想マシンと同様に、SQL Database は Azure Resource Manager テンプレート、PowerShell、Azure CLI、または Azure portal を使用して展開できます。
単一データベース
単一データベースは、Azure SQL Database の最も単純なデプロイ モデルです。 各データベースを、スケールとデータ サイズの観点から、個別に管理します。 このモデルで展開された各データベースには、同じ論理サーバーに展開されている場合でも、それぞれに専用のリソースがあります。
データベース リソースの使用率は、Azure portal で監視できます。 この機能を使用すると、次の図に示すように、データベースの動作状況を簡単に識別できます。
Azure portalSQL Database properties from Azure portal
SQL Database properties from Azure portalから SQL Database のプロパティをする
エラスティック プール
エラスティック プールを使用すると、データベースごとにリソースを個別に管理するのではなく、データベースのグループにストレージリソースとコンピューティング リソースを割り当てることができます。 さらに、エラスティック プールは、エラスティック プールに加えた変更によって個々のデータベースのスケーリングが不要になるので、単一データベースよりもスケーリングが容易です。
エラスティック プールでは、すべてのデータベース間でリソースが共有されるため、サービスとしてのソフトウェア アプリケーション モデルに対してコスト効率の高いソリューションを提供します。 DTU ベースの購入モデルまたは仮想コアベースの購入モデルに基づいてリソースを構成できます。
この機能の性質上、リソースを継続的に監視して、同じエラスティック プールの他のデータベース部分に影響する可能性がある同時パフォーマンスの急増を特定することをお勧めします。 多くの場合、割り当て戦略を見直して、同じエラスティック プールを共有しているすべてのデータベースに十分なリソースが使用できるようにする必要があります。
エラスティック プールは、平均使用率が低いマルチテナント アーキテクチャに適しており、各テナントにはデータベースの独自のコピーがあります。
ネットワーク オプション
Azure SQL Database には、既定では、パブリック インターネット エンドポイントがあります。 このエンドポイントへのアクセスは、ファイアウォール ルールを使用して制御するか、特定の Azure ネットワークに限定されます。この場合、Virtual Network エンドポイントや Private Link などの機能を使用します。
バックアップと復元
Azure では、SQL Database および SQL Managed Instance について、シームレスなバックアップと復元の機能を提供しています。 最も重要ないくつかの機能について学習しましょう。
継続的バックアップ
SQL Database を使用すると、データベースが定期的にバックアップされ、読み取りアクセス geo 冗長ストレージ (RA-GRS) に継続的にコピーされることを認識することで、管理効率を向上させることができます。
完全バックアップが毎週、差分バックアップが 12 時間から 24 時間ごと、そしてトランザクション ログ バックアップが 5 分から 10 分ごとに実行されます。
geo リストア
SQL Database と SQL Managed Instance のバックアップは既定で geo 冗長であり、データベースを別の地理的リージョンに簡単に復元できます。これは、必ずしも高い厳密性が求められないディザスター リカバリー シナリオに特に役立ちます。
バックアップ ストレージは、通常のデータベース ファイル ストレージとは別に課金されます。 ただし、SQL Database をプロビジョニングする際に、バックアップ ストレージは、データベースに対して選択されたデータ層の最大サイズで、追加コストなしで作成されます。
geo リストア操作の期間は、データベースのサイズ、復元操作に関係するトランザクション ログの数、ターゲット リージョンで同時に処理される復元要求の量など、いくつかの基になるコンポーネントの影響を受ける可能性があります。
注
geo リストアは、バックアップ ストレージ冗長プロパティが "geo 冗長バックアップ ストレージ" に設定されている場合に使用できます。
ポイントインタイム リストア (PITR)
SQL Database オファリングで実行されている各データベースについて、特定のポイント イン タイム保持ポリシーを設定できます。 SQL Database の保有期間は、1 日から 35 日までに設定できます。 実際は、指定しない場合、既定の構成は 7 日間です。
定義された保持期間に従ってデータベースを特定の時点に復元できますが、ポイントインタイム リストアがサポートされるのは、バックアップが開始されたのと同じサーバーにデータベースを復元する場合のみです。 SQL Database の復元には Azure portal、Azure PowerShell、Azure CLI、または REST API のいずれかを使用できます。
長期保有 (LTR)
長期保有は、Azure によって提供されるポリシーを超えて保持ポリシーを設定する必要があるシナリオで有用です。 保持ポリシーは最大 10 年間まで設定できます。このオプションは既定で無効になっています。
Azure portalLong-term retention properties from Azure portal
Long-term retention properties from Azure portalから長期保有プロパティをする
上の図では、 Azure portal を使用して長期保有ポリシーを構成できます。 データベースを選択すると、画面の右側に新しいパネルが開き、既定のプロパティをオーバーライドできます。
自動バックアップの詳細については、「自動バックアップ - Azure SQL Database & Azure SQL Managed Instance」を参照してください。
自動チューニング
自動チューニングは、機械学習の回帰機能に依存した組み込み機能であり、クエリのパフォーマンスに基づいてチューニングの機会を自動的に識別します。
自動チューニングには現在、次の機能が含まれています。
- コストの高いクエリを識別する
- 最後の良好な実行プランの実施
- インデックスの追加
- インデックスの削除
Azure サービスでは、組み込みの高度な機能を組み合わせて使用して、クエリ パターンに最適なインデックスを決定します。 最初に、これらのインデックスはデータベースのコピーでテストされ、最後にデータベースに適用されます。
すべてのデータベースは親サーバーから構成を継承します。この機能は、いつでも簡単に無効にできます。
エラスティック クエリ (プレビュー)
エラスティック クエリを使用すると、SQL Database の複数のデータベースをブリッジする T-SQL クエリを実行できます。 この機能は、変更できない 3 部と 4 部構成の名前を使用するアプリケーションに便利です。 また、移行ができるため移植性も向上します。
エラスティック クエリでは、次のパーティション分割戦略がサポートされます。
| サービス レベル | 能力 |
|---|---|
| 列方向のパーティション分割 | 複数のデータベースにまたがるクエリとも呼ばれる。 データは、多くのデータベース間で垂直方向にパーティション分割される。 スキーマはデータベースごとに異なる。 たとえば、顧客データに使用されるデータベースと、支払い情報に使用される別のものがある場合があります。 垂直方向のパーティション分割を利用して、両方のデータベース間でデータベースをまたがるクエリを実行できます。 |
| 行方向のパーティション分割 | シャーディングとも呼ばれる。 データは、複数のスケールアウトされたデータベースに行を分散するために、水平方向にパーティション分割される。 このトポロジでは、スキーマはすべてのシャーディング データベースで同じままになります。 シングルテナント モデルまたは複数テナント モデルがサポートされています。 |
柔軟なジョブ
エラスティック ジョブ機能は、Azure SQL Database の SQL Server エージェントの代替機能です。 エラスティック ジョブは、オンプレミスの SQL Server インスタンスで使用できるマルチ サーバー管理機能にある程度類似しています。
SQL Database、SQL Database エラスティック プール、シャードマップ内の SQL Database など、いくつかのターゲット展開をまたいで T SQL コマンドを実行できます。 データベース リソースは、異なる Azure サブスクリプションまたはリージョンで実行できます。 実行は並列で実行されます。これは、データベースのメンテナンス タスクを自動化する場合に便利です。
注
Azure SQL Managed Instance では、エラスティック ジョブはサポートされていません。
Fabric の SQL Database
Microsoft Fabric SQL Database は、より広範な Microsoft エコシステムとシームレスに統合するように設計された、強力で汎用性の高いソリューションです。 これを利用して、ユーザーは Microsoft Fabric 環境内で SQL データベースの機能を使用でき、データを管理および分析するための統合プラットフォームを得られます。 この統合で、組織はデータ ワークフローを合理化し、コラボレーションを強化し、情報に基づく意思決定プロセスを推進できます。
さらに、Microsoft Fabric SQL Database では、運用とトランザクションのワークロードから高度分析まで、広範囲にわたるユース ケースをサポートします。 こうした柔軟性があるため、データ インフラストラクチャを統合し、データ資産の可能性をフル活用しようとしている組織にとって、これが理想的な選択肢となります。 他の Microsoft サービスとのシームレスな統合、セキュリティの強化、スケーラビリティなどの機能を駆使して、Microsoft Fabric SQL Database のユーザーは、データドリブン アプリケーションを簡単に構築およびデプロイできます。
Fabric のデータベース ワークロードは運用 SQL データベースのさまざまな側面に対処するように設計されており、データ エンジニア、アナリスト、データ サイエンティストが連携して、特定のニーズに合わせて最適化されたデータを作成し、それに対するクエリを実行できます。
Serverless SQL Database properties from Azure portalからサーバーレス SQL Database プロパティを
SQL Database properties from Azure portalから SQL Database のプロパティを
Long-term retention properties from Azure portalから長期保有プロパティを