Azure SQL Databaseを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の5日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

5日目はAzure SQL Databaseです。Azureにおけるデータベースサービスの中心的存在です。

概要

Azure SQL Databaseは、Microsoft SQL Serverデータベースエンジンをベースとしたデータベースシステムを提供するマネージド型のサービスです。

・リソースのサイズ

Basic、Standard、Premium、Premium RSの4つのサービスレベルが提供されます。
Basic、Standard、Premiumの順で利用可能なリソース量、自動バックアップの期間などが拡大されます。
Premium RSは耐障害性を犠牲にする代わりに、Premiumと同等の性能をコストを抑えて利用することができます。

https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-service-tiers から引用

サイズはDTU(Database Transaction Unit)という単位で定義され、CPU、メモリ、I/Oの組み合わせからなります。
DTUが大きくなるほど、コンピューティングリソースが多く使えるようになり、標準で付属するストレージ、追加できるストレージも大きくなります。後述するように、ダウンタイムを発生させずにスケールの変更ができます。

https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-technical-overview から引用

・バックアップ

Azure SQL Databaseでは、完全バックアップ、差分バックアップ、トランザクションログバックアップが自動的に実行されます。
ポイントインタイム・リストアで、自動バックアップの期間内の任意の時点への回復もサポートされます。

・可用性

アクティブgeoレプリケーションを使用すると、同じデータセンター内、または世界各地のリージョンに分散して、最大4つの読み取り可能なセカンダリデータベースを構成でき、読み取り処理の負荷分散ができます。
また、フェールオーバー・グループを使えば、障害時のグローバルスケールでの負荷分散もできます。監視やルーティング、フェールオーバーの手当は、Azure SQL Databaseが面倒を見てくれます。

・SQLエンジン

2017年12月4日時点のエンジンは以下の通りでした。


Select @@version

Microsoft SQL Azure (RTM) - 12.0.2000.8
Nov 29 2017 09:37:51
Copyright (C) 2017 Microsoft Corporation

Azure SQL Databaseがある機能に対応しているかはAzureのオンラインドキュメントに記載されたタグを確認すれば分かります。

・スケールの変更

データベースのサービスレベルやDTUをオンラインで変更できます。内部的には、新しいインスタンスサイズで元のデータベースのレプリカが作成され、レプリカにデータの移行が完了したら、接続先が新レプリカに切り替えられるようです。切り替え時間の際には、通常4秒の間、トランザクションが受けられなくなります。

・セキュリティ

不審なデータベースアクセス、潜在的な脆弱性、SQLインジェクショ攻撃、が見つかった場合に、ユーザーにアラートを通知することもできます。
透過的データ暗号化(TDE)も2017年5月以降に新しく作成されたデータベースは、自動的に適用されるようになっています。
Virtual Machineのセキュリティグループに相当する許可IPのホワイトリストもAzure Portalから、「サーバー ファイアウォールの設定」から定義できます。

その他

・スケールアップに伴うレプリカの作成にかかる時間は変更前後のデータベースのサイズとサービスレベルによって変わる。Standard同士で、250GBのデータベースなら6時間以内、Premiumサービスレベル内で250GBなら3時間以内で完了する、と公式ドキュメントより。

・メンテナンスもあると想像しているけどドキュメントから記載見つけられず。

・Data Lakeを使えばAzure Portal上でデータのロードができる。bcpコマンドも使える。データベースが動くマシンにOSログインはできないのでローカルファイルから読み込むような処理ができないのは、AWS RDSとかと同様

・単一のデータベースではなく、ある一定のプールを割り当てそこから必要なリソースを利用するエラスティックプールと呼ばれる使い方もある。エラスティックプールを利用することで、DBのコストを一定で予測可能にすることができる。

・SQL Database以外のデータベースでは、マネージド型のAzure Database for MySQLとAzure Database for PostgreSQLも提供されている。

・SQL DatabaseはDDLにも明示的なコミットが必要。OracleはDDLは暗黙コミットなので、Oracleと同じだと思い込んでいるとはまる(はまった)。

料金

・課金はサービスレベルとDTUに応じて利用した時間に対して課金される。最小構成のBasic、5DTUなら月570円。

・通常割り当てサイズを超過するストレージは1GB単位で課金される。

・アクティブgeoレプリケーションを使う場合は、マスタと同じ価格が、各レプリケーションサイトにも課金される。

・脅威検出のオプションは有料となる。60日間の無償使用期間あり。

まとめ

オンプレでのSQL Serverは、インストール、構築が大変なイメージがあり、Azure上でSQL Databaseだとすぐに手軽にデータベース環境を構築できるのはとても魅力的です。バックアップ、可用性、セキュリティなど一通りの機能も標準で提供され、手数を少なくして、ビジネス用途にも耐えうるデータベース環境を構築できそうです。

この記事を書いた人

azure-recipe-user