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

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

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

7日目はAzure SQL Data Warehouseです。昨日のCosmos DBに続きデータベース系サービスです。

概要

Azure SQL Data Warehouseは、クラウドのデータウェアハウスです。データは並列に接続されたサーバで処理され、テラバイト、ペタバイト級のデータに対して短時間でクエリ結果を得ることができます。AWSでいうとRedshift、GCPだとBigQueryに相当するサービスです。

・データベース

SQL Data Warehouseはカラム型ストレージを使用してデータを格納します。データのストレージ容量を節約するとともに、クエリのパフォーマンスが改善されます。さらに並列処理により、これまで日単位の時間がかかっていたクエリが、時間単位で処理できるようになります。

・性能

分析ワークロードに最適化された2つのパフォーマンスレベルが提供されます。

弾力性パフォーマンスレベルのための最適化:
単語が分かりにくいですが、英語だとThe Optimized for Elasticity performance tierとなります。「エラスティック用に最適化」と表記される場合もあります。
コンピューティング層がストレージ層と分離されているので、コンピューティング層のスケーリングを頻繁に行うことができます。
データはコンピューティング層のローカルにはなく、ネットワーク経由でSSDストレージ上に置かれており、この大量のデータをコンピューティング層が柔軟に並列、スケールして処理していくイメージです。このレベルが最も安価で、ワークロードの大半をサポートできます。

コンピューティングパフォーマンスレベル用の最適化:
英語だとThe Optimized for Compute performance tierとなります。「計算用に最適化」と表記される場合もあります。
超高速なワークロードに適したレベルです。ハードウェアは最新のものを利用し、NVMe接続のSSDのキャッシュが提供されます。すべてのIOがコンピューティング層のローカルで行われるので、複雑なクエリをさばくことができます。サイズ制限なしでデータを格納できるように列ストアも強化されています。
同じcDWUだと、弾力性のために最適化されたパフォーマンスレベルに比較して2.5倍のメモリが提供されます。メモリに余裕があるため、クエリを高速に、多数の同時実行数で処理することができます。

https://docs.microsoft.com/ja-jp/azure/sql-data-warehouse/performance-tiers から引用

・リソース

SQL Data Warehouseのリソースは、CPU、メモリ、IOからなるData Warehouse ユニット(DWU)という単位で決定します。ユニット数を増やすほど性能は向上します。パフォーマンスレベルでDWUの測定単位は若干異なり、「弾力性パフォーマンスレベルのための最適化」ではData Warehouse ユニット(DWU)、「コンピューティングパフォーマンスレベル用の最適化」ではコンピューティングData Warehouseユニット(cDWU)で測定されます。
DWUは明示的に増減させることもできます。DWU変更を行うと、継続中のトランザクションを中止、ロールバックして一貫性のある状態を確保してから、スケーリングが行われます。完了までには数分かかります。
DWUはSQL Data Warehouseが稼働している間だけ課金されます。夜間・休日など利用しない時間にSQL Data Warehouseを停止することで、コンピューティング分の課金を節約できます。停止している場合もストレージには利用サイズに応じて課金されます。

・バックアップ

4~8時間ごとにスナップショットが作成され、7日間使用できます。また、SQL Data Warehouseでは、8時間の回復ポイントの目標(RPO)を定めており、8時間前のデータまでさかのぼって復旧できます。
geoバックアップは、1日に1回、ペアのデータセンターにSQL Data Warehouseのバックアップを保管します。geo復元のRPOは24時間です。geoバックアップからgeoペアリージョン内のサーバーに復元できます。geoバックアップは標準で有効になっています。

・セキュリティ

SQL Databaseと同じように許可IPのホワイトリストをAzure Portalから、「サーバー ファイアウォールの設定」から定義できます。
透過的データ暗号化(TDE)も設定可能です。Azure Portalから有効/無効を設定できます。

その他

・データベースエンジンはSQL Server

・データのロードにはbcpコマンドだけでなく、PolyBaseによるBlob Storageからの高速ロード、Data FactoryのGUIでのロードも可能
・データは60個ののディストリビューションと呼ばれる単位に分割して保存される。振り分け方は、ラウンドロビンとハッシュ分散が選べる

・データはPremium Storageに格納されるのでSSDで高速(だけど高い)

料金

・コンピューティングリソースはパフォーマンスレベル(エラスティック用に最適化か計算用に最適化)とDWUで課金される

・ストレージはTB単位でPremium Storage料金(12,533.76円/1 TB/月)で課金。データウェアハウス本体のデータと7日分の増分スナップショット ストレージが含まれる

・geoバックアップにはStandard Diskの読み取りアクセスのGeo冗長ストレージ(12.24円/GB/月)で課金。

まとめ

超高性能なData Warehouse環境を、Azureクラウドの力を借りて簡単に使い始めることができます。
停止中はコンピューティングリソースに課金されなかったり、ストレージIO量に課金されずコストの見通しを立てやすいことは、他社クラウドのDWHにはない強みだと思います。

この記事を書いた人

azure-recipe-user