Open4
Azure SQL(特にAzure SQL Database)について
Azure SQL
- Azure上でSQL Serverを実行するためのサービス
- Azure SQLには、Azure SQL Database、Azure SQL Server on VM(仮想マシン上でSQLServerを稼働)、Azure SQL Managed Instanceの3つがある。
Azure SQL Databaseとは
- Azureがクラウド上でSQL Serverを稼働させ、データベース機能だけを「サービス」として提供しているもの
- フルマネージドサービスなので、データベースの管理の手間が省ける
- SQL Serverからハード部分を取り除き、データベースの機能だけをPasSとして提供しているクラウドデータベース
- MicrosoftのRDBMSであるSQL Serverのエンジンで動くが、100%の互換性はない
- オンプレからの移行がある場合は、後の2つを選択する必要がある
Azure SQL Server on VMとは
- 仮想マシン上でSQLServerを稼働させる
- AzureのSQL Serverを使うのではなく、AzureのVM上に自分でSQL Serverをインストールして使う
- IaaS型のサービス
Azure SQL Managed Instanceとは
- Paas型のサービス
- オンプレのSQL Serverとほぼ100%の互換性を持つ
- そのため、オンプレからの移行が必要な場合に有力な選択肢となる
論理サーバ(SQLサーバ)
- Azure SQL Databaseを作成する前に、それらデータベースを運用するためのSQLサーバを作成する必要がある。
- データベース使用には、この論理サーバの作成が必須
- SQLサーバに対して、リージョンを選択する
- 作成時、管理者アカウントの設定(ログイン名とパスワード)が必要
- 1台のSQLサーバに対して、複数のデータベースを作成できる
- 論理サーバの名前の通り、あくまでも複数のデータベースを管理しやすくするための論理的なコンテナのようなもの。
- 同じ論理サーバに属するデータベースは、必ずしも物理的に同じ場所に存在する訳ではない
- DB_aへの高負荷が同じ論理サーバに属するDB_bに影響を与えることはない
Azure SQL Databaseの作成
- 前項の論理サーバ内にデータベースを作成する
- それぞれのデータベースごとにスペックを指定できる
Azure SQL Databaseの購入モデル
DTUベース
- DTU:データベーストランザクションユニット
- CPU、メモリ、IOのリソースの組み合わせで性能の目安値を表したもの
- CPU、メモリ、IOのリソースの性能をそれぞれ設定しなくて良いため、データベースのスペック設計に不慣れでも分かりやすい
- 仮想コアベースに比べると、柔軟性は低い
- DTUの値が高いほど性能が高い(お値段も高い)
- 最小構成にしたときに仮想コアベースよりも安いため、試験的に始めたいというニーズにはビッタリ
DTU購入モデルのサービスレベル
- Basic
- Standard
- Premium
仮想コアベース
- プロビジョニング済みとサーバレスの2種類がある
- プロビジョニング済みは、ハードウェア、仮想コア(CPU)の数、メモリ量、ストレージのサイズなどを事前に決めておく。DTUとは異なり、各リソースごとに性能を設定できる。
- 1時間単位で課金
- AzureFunctionsで例えるなら、AppServiceプランのようなものか
- サーバレスは、実際に使用されるコンピューティングリソースに応じて課金される
- 1秒単位で課金
- 基本的にリソース不足にはならず、Azureがよしなにスケールしてくれる従量課金モデル
仮想コア購入モデルのサービスレベル
- 汎用目的
- Business Critical
- Hyper Scale
コンピューティングレベル
- 仮想コア購入モデル時のみ選択可能
- 上述した、プロビジョニング済みとサーバレスのいずれかを選択する
- DTU選択時は、表示されない
ハードウェア構成
- 仮想コア購入モデル時のみ選択可能
- DTU選択時は、表示されない
SQLエラスティックプール
- SQLサーバ内に作成できるリソース
- このプールに対して、スペックを指定できる
- このプールの中に、データベースを作成できる
- SQLサーバ内に、CPUなどの性能を共有する枠組みを作るイメージ
- このプール内に作成されたデータベースは、プールに指定された性能を共有する
- 性能の指定については、データベースと同様(仮想コアやDTU)
- 同一SQLサーバ内の複数のデータベースの負荷変動が激しく、データベースごとに性能を指定するのが難しい場合などに使う