Azure 第31回『Azure の SQL データベース - どう使い分けるか?』

概要

オンプレミスのサーバーで実行しているワークロード(サービスやアプリケーション)で代表的なものは、ドメインコントローラー、ファイルサーバー、データベースでしょう。この内ドメインコントローラーとファイルサーバーの Azure クラウド移行については以前の記事で紹介しています。

今回は残る一つであるデータベースの Azure クラウド移行について、Azure でどのようなデータベースのサービスがあるのか、それぞれのサービスでどのような違いがあるのかを紹介します。

1. Azure で使える SQL Database

オンプレミスのサーバーで利用しているデータベースが Microsoft SQL Server である場合、Azure に移行する際に3つの選択肢があります。

・Azure SQL Database
・Azure SQL Managed Instance
・Azure Virtual Machines 上の SQL Server

いずれも Microsoft SQL Server をベースにしたサービスですが、異なっている部分もあります。以下でそれぞれのサービスについて解説します。

Azure SQL Database

Azure SQL Database は PaaS(Platform as a Service)として提供されている、フルマネージドの SQL Database サービスです。アップグレード、修正プログラムの適用、バックアップ、監視などのほとんどのデータベース管理機能がユーザーの操作なしで自動的に行われます。また 99.99% の可用性(SLA)が提供されています。 最新の安定したバージョンの SQL Server データベースエンジンおよび修正プログラムが自動適用されたオペレーティングシステム上で実行されますので、サーバーやデータベースエンジンの管理のための運用工数を削減でき、ユーザー自身のデータベースの管理や最適化に集中できます。 Azure SQL Database は「データベース」単位で提供されるサービスであるため、オンプレミスの SQL Database で行える操作の中で、Azure SQL Database では実行できないものがあります。またデータベースへのアクセスの認証は SQL 認証と Microsoft Entra ID 認証が利用できます。 Azure SQL Database について詳しくは、以下を参照してください。

Azure SQL Managed Instance

Azure SQL Managed Instance も Azure SQL Database と同様に PaaS(Platform as a Service)として提供されている、フルマネージドの SQL Database サービスです。アップグレード、修正プログラムの適用、バックアップ、監視などのほとんどのデータベース管理が自動的に行われる点も同じです。
Azure SQL Managed Instance と Azure SQL Database で異なるのは、Azure SQL Database が「データベース」単位で提供されるサービスであるのに対して、Azure SQL Managed Instance は「インスタンス」単位で提供されるサービスである点です。データベースへのアクセスの認証は SQL 認証と Microsoft Entra ID 認証に加えて、Microsoft Entra プリンシパルの Windows 認証が利用できます。
そのため、インスタンス単位でシステムが構築されている既存のオンプレミスの SQL Database との互換性が高く、オンプレミスのデータベースのクラウド移行に向いているサービスとなっています。 Azure SQL Managed Instance について詳しくは、以下を参照してください。

Azure Virtual Machines 上の SQL Server

Azure の IaaS (Infrastructure as a Service) 上で稼働する仮想マシンのオペレーティングシステムに SQL Database をインストールして利用することも可能です。Azure SQL Database や Azure SQL Managed Instance と異なり、オペレーティングシステムや SQL Database 自体のアップグレード、修正プログラムの適用、バックアップ、監視などはユーザーが行う必要があり、運用の工数は大きくなります。

オペレーティングシステムからユーザーが自由に選択・構築でき、特定のミドルウェアをインストールすることも可能です。またオンプレミスと同様、データベースへのアクセスの認証として SQL 認証と Windows 認証が利用できます。そのため既存のオンプレミスの SQL Database を利用しているシステムとの互換性は最も高くなります。
Azure Virtual Machines 上の SQL Server について詳しくは、以下を参照してください。

SQL Database の比較

前述のように、Azure SQL Database・Azure SQL Managed Instance・Azure Virtual Machines 上の SQL Server では、クラウドサービスとして Microsoft が管理する部分と、ユーザーが管理運用する部分の範囲が異なります。

Microsoft が管理する部分が大きいと、ユーザーの管理運用の工数は少なくなりますが、自由度は低くなります。逆に Microsoft が管理する部分が小さいと、ユーザーの管理運用の工数は多くなりますが、自由度は高くなります。
データベースを利用するシステムの特性・要件を検討して、適切なサービスを選択する必要があります。特にオンプレミスからの移行の場合は、オンプレミスとの互換性を重視するのか、一定のシステム改修を行ってクラウドの特性を活かす(ユーザーの管理運用工数削減)のか、検討する必要があります。
以下に、主要な領域でそれぞれのサービスの機能とその差異をまとめていますので、参考にしてください。

購入モデル

Azure SQL Database

以下の2つの購入モデルが利用できます。

・仮想コアベース
仮想コアの数、メモリの量、およびストレージの容量と速度を選択できます。これは仮想マシンのサイズを選択するのに似ています。
サービスレベル(提供されるサービスの質と機能)を General Purpose、Business Critical、Hyperscale の3つから選択できます。
Azure ハイブリッド特典の対象です。

・DTU ベース
データベース トランザクション ユニット (DTU) という処理能力の指標によりデータベースの性能を選択できます。仮想コアベースに比べて、より抽象化された性能指標での選択となります。
サービスレベル(提供されるサービスの質と機能)は Standard、Premium の2つから選択できます。
また時間あたりの固定価格で利用するプロビジョニング済みコンピューティングと、1秒当たりのコンピューティング使用量に対する従量課金で利用するサーバーレスコンピューティング の2つのレベルが選択できます。

Azure SQL Managed Instance

仮想コアベースの購入モデルとなります。これは実質的にインスタンスを実行する仮想マシンのサイズの指定となります。
ハードウェア構成をStandard シリーズ論理 CPU、Premium シリーズ論理 CPU、Premium シリーズメモリ最適化論理 CPU の3つから選択できます。
サービスレベル(提供されるサービスの質と機能)は General Purpose、Business Critical の2つから選択できます。
Azure ハイブリッド特典の対象です。

Azure Virtual Machines 上の SQL Server

マーケットプレイスから SQL Server を含むオペレーティングシステムイメージを選択して、適切なシリーズ・サイズの仮想マシンをデプロイし、仮想マシンのシリーズ・サイズに基づく従量課金で利用します。
※オペレーティングシステムは Windows だけでなく Linux も選択できます。
Windows Server ライセンス・SQL Server ライセンス共に Azure ハイブリッド特典の対象です。

データベース互換性

オンプレミスのデータベースをクラウドに移行する際、データベースの互換性が必要となります。
Azure で利用できる SQL Database のデータベース互換性は以下の通りです。

Azure SQL Database

SQL Server 2008 以降の SQL Server のデータベースと互換性があります。
※ALTER DATABASE (Transact-SQL) 互換性レベル 100 - 160
Azure SQL Database で新規に作成されたデータベースの互換性レベルは 160(SQL Server 2022)です。

Azure SQL Managed Instance

SQL Server 2008 以降の SQL Server のデータベースと互換性があります。 ※ALTER DATABASE (Transact-SQL) 互換性レベル 100 - 160 Azure SQL Managed Instance で新規に作成されたデータベースの互換性レベルは 150(SQL Server 2019)です。

Azure Virtual Machines 上の SQL Server

仮想マシンにインストールされている SQL Server のバージョンにより互換性が決まります。
マーケットプレイスでは SQL Server 2016 以降の各バージョンがインストールされた仮想マシンイメージが利用できます。
※SQL Server 2016の ALTER DATABASE (Transact-SQL) 互換性レベル 100 - 130
SQL Server 2022 の ALTER DATABASE (Transact-SQL) 互換性レベル 100 - 160

ALTER DATABASE (Transact-SQL) 互換性レベルについては以下を参照してください。

利用できるデータベース機能

Azure Virtual Machines 上の SQL Server では、オンプレミスの SQL Server と同等の機能が利用できます。
Azure SQL Database と Azure SQL Managed Instance では一部異なるデータベース機能があります。主な相違を以下にまとめています。

機能 Azure SQL Database Azure SQL Managed Instance
Always On 可用性グループ 高可用性のために利用されます 高可用性のために利用されます
データベースのアタッチ × ×
BACKUP コマンド × 〇(制限あり)
Entra ID トークン認証
Windows 認証 ×
組み込み関数 一部相違あり 一部相違あり
BULK INSERT Azure Blob Storage からのみ Azure Blob Storage からのみ
照合順序 データベース作成時に指定可
(作成後の変更不可)
インスタンス作成時に指定可
(作成後の変更不可)
列ストアインデックス レベルによって利用可
共通言語ランタイム - CLR × 〇(ファイルシステムへのアクセス不可)
データベースにまたがるトランザクション ×
仮想ネットワークへのデプロイ ×
データベース メール - DbMail ×
データベース仮想化 ×
分散パーティションビュー ×
分散トランザクション ×
エラスティッククエリ 〇(プレビュー) ×
リンクサーバー ×
クエリ通知 ×
クエリストア
Machine Learning Services ×
リソースガバナー ×
SQL Server へのデータ復元 × 〇(条件あり)
Service Broker ×
サーバーの構成設定 ×
SQL Server エージェント ×
SQL Server 監査 ×
SQL の Synapse Link ×
システムストアド関数 関数による
システムストアプロシージャ プロシージャによる
システムテーブル テーブルによる
システムカタログビュー ビューによる
タイムゾーンの選択 × 〇(作成時に指定)
トレースフラグ × 〇(制限あり)

Azure SQL Database と Azure SQL Managed Instance のデータベース機能について詳しくは、以下を参照してください。

プラットフォーム機能

Azure Virtual Machines 上の SQL Server のプラットフォーム機能は、利用している仮想マシンに依存します。Azure SQL Database と Azure SQL Managed Instance では一部異なるプラットフォーム機能があります。主な相違を以下にまとめています。

機能 Azure SQL Database Azure SQL Managed Instance
SLA 99.99%~99.995%(構成による) 99.99%
アクティブ geo レプリケーション ×
自動スケール ×
自動バックアップ
自動チューニング (インデックス) ×
Azure Database Migration Service (DMS)
SQL データ同期
長期保有 〇(10年) 〇(10年)
一時停止/再開 サーバーレスモデルのみ General Purpose のみ
SQL Server Integration Services (SSIS)
SQL Server Reporting Services (SSRS) × ×

Azure SQL Database と Azure SQL Managed Instance のプラットフォーム機能について詳しくは、以下を参照してください。

スケーリング

Azure SQL Database や Azure SQL Managed Instance には、動的スケーリングや自動スケーリングの機能が用意されています。Azure Virtual Machines 上の SQL Server では、仮想マシンのサイズを変更することでサーバーのスケーリングが行えます。

Azure SQL Database

スケーリングに関連して、Azure SQL Database では2つのデプロイモデルが提供されています。

・単一データベース
購入した仮想コアや DTU で1つの単一データベースを実行するモデルです。
仮想コアや DTU の割り当てを変更することでスケーリングを行います。割り当てを手動またはプログラムで動的にスケーリングが行えます。

・エラスティックプール
購入した仮想コアや DTU のプールを複数の単一データベースで共有するモデルです。各データベースの処理は、プール全体のリソースの範囲で自動的にスケーリングされます。
プール全体の仮想コアや DTU の割り当てを、手動またはプログラムで動的にスケーリングが行えます。

また、DTU モデルでサーバーレスコンピューティングモデルを選択した場合は、手動またはプログラムによる動的スケーリングに加えて、自動スケーリングが行えます。
Azure SQL Database のスケーリングについて詳しくは、以下を参照してください。

Azure SQL Managed Instance

Azure SQL Managed Instance では、インスタンスに割り当てる仮想コア数とストレージ量を変更することでスケーリングを行います。
手動またはプログラムによる動的スケーリングが行えます。
なお、1つの共有仮想クラスター内に複数のインスタンスをデプロイできる「インスタンスプール」がプレビューとして提供されています。

Azure Virtual Machines 上の SQL Server

オンプレミスの SQL Server と同様に、スケーリングはユーザーで構成する必要があります。
Azure 上の仮想マシンのサイズを変更することで、サーバーの処理能力をスケールアップ/ダウンすることが可能です。
仮想マシンのサイズ変更について詳しくは、以下を参照してください。

2. その他の SQL データベース

ここまで紹介した Azure SQL Database・Azure SQL Managed Instance・Azure Virtual Machines 上の SQL Server は、Microsoft SQL Server と互換性があるクラウド上のデータベースですが、これ以外にも Azure ではさまざまな SQL データベースが提供されています。

Azure Database for PostgreSQL

オープンソースの SQL データベースとして広く採用されている PostgreSQL を Azure SQL Database と同様の PaaS として提供するサービスです。オンプレミスの PostgreSQL と高い互換性を持っているため、既存のシステムのクラウド移行を可能にします。
仮想ネットワークへのデプロイが可能です。

Azure Database for MySQL

PostgreSQL と並んでオープンソース SQL データベースとして採用例の多い MySQL の PaaS サービスです。こちらもオンプレミスの MySQL と高い互換性を持っているため、既存のシステムのクラウド移行を可能にします。
仮想ネットワークへのデプロイが可能です。

Oracle Database@Azure

Azure が稼働しているのと同じ Microsoft データセンター内に併設された Oracle Cloud Infrastructure (OCI) 上で稼働する Oracle データベースサービスです。
Oracle Database@Azure のクラウドインフラストラクチャは Oracle の運用専門チームによって管理されますが、Azure 仮想ネットワークを使用して他の Azure リソースと通信するため、高パフォーマンスと低遅延が提供されます。また Azure テナントの ID 管理と認可が使用されます。
オンプレミスで利用している Oracle Database を、他のオンプレミスのリソース(Windows Server など)と合わせて Azure クラウドへ移行する際に最適です。

まとめ

オンプレミスで利用している SQL データベースをクラウド移行する際の選択肢は多数あります。利用しているデータベース サービスの種類や処理の内容、求められる要件(処理速度、遅延、トランザクションレートなど)を分析して、それに最適なクラウド側のサービスを見つけることが必要です。
オンプレミスの SQL Server と同じ機能を提供しているのは Azure Virtual Machines 上の SQL Server ですが、仮想マシンやオペレーティングシステムなどユーザーが管理するべき部分が多く、クラウドのメリットを最大限に享受できません。Azure SQL Database と Azure SQL Managed Instance はオンプレミスの SQL Server と異なる部分がありますが、PaaS として提供されるのでユーザーの管理工数を大幅に削減できます。
特に Azure SQL Managed Instance はオンプレミスからクラウドへの移行が行いやすいよう、PaaS でありながらオンプレミスとの互換性を考慮して作られているサービスです。オンプレミスの SQL Server をクラウド移行する際は、Azure SQL Managed Instance の利用を検討してください。
また新規にクラウド上でサービスやアプリケーションを構築する場合は、もっともユーザー管理部分の少ない Azure SQL Database の利用を検討してください。
Azure の利用の開始やAzure への移行、Azure でのシステム構築についてのご相談は、お気軽に当社担当営業までお声がけください。

マルチクラウドの記事