よりスマートに、高速に、安全に: Azure SQL Data Warehouse の機能強化

執筆者: Kapil Gupta (Partner Director Software Engineer, Azure SQL Data Warehouse)

このポストは、2019 年 4 月 8 日に投稿された Smarter, faster, safer: Azure SQL Data Warehouse is simply unmatched の翻訳です。

 

Azure SQL Data Warehouse が、最新の GigaOm のベンチマーク レポートで他のクラウド プロバイダーを上回る性能を持つことが改めて実証されました。今日はこのことについてお伝えしたいと思います。

これはマイクロソフトがお客様のニーズに応えるために絶えずイノベーションに取り組んできた成果の 1 つです。他にもコスト削減に取り組み、業界最先端のパフォーマンスをできるだけ低価格でお客様に提供できるようにしてきました。SQL Data Warehouse では、この 1 年間で新たに 130 以上の機能をリリースしました。 それによりさらなる高速性、柔軟性、安全性の強化を実現しています。今回はこれに加えて、SQL Data Warehouse の業界リーダーとして、次の 3 つの機能強化を実施しました。

  • クエリ パフォーマンスの向上
  • インテリジェントなワークロード管理
  • セキュリティとプライバシーの強化

この記事では、上記の機能強化の技術的な詳細と使用の開始方法についてご紹介します。

クエリ パフォーマンスの向上

2019 年 3 月のリリースでは複数の新機能を追加し、Azure SQL Data Warehouse の前バージョンと比較してワークロードのパフォーマンスが最大 22 倍向上しました。これが、TPC-H (英語)TPC-DS (英語) のベンチマーク レポートでの高評価につながっています。

この成果は一夜にして生まれたものではありません。マイクロソフトには、SQL Server を始めとする業界最先端のデータベース システムを数十年にわたって開発してきた経験があります。その世界最大規模のクラウド アーキテクチャの上に構築したのが、Azure SQL Data Warehouse です。

今回は以下のイノベーションによって、クエリ パフォーマンスを向上させました。

  • クエリ オプティマイザーの強化
  • 高速データ移動
  • 高度な分析機能の追加

クエリ オプティマイザーの強化

クエリ オプティマイザーは、どのデータベースにとっても重要なコンポーネントです。クエリの実行が最適化されるように選択することで、結果は大幅に改善します。複雑な分析クエリを実行する際に問題になるのが、分散環境で実行される処理数です。サブクエリの反復実行などの冗長な演算を一つひとつ排除していくと、クエリ パフォーマンスに直接影響が及びます。たとえば、以下のクエリは、強化された最新のクエリ オプティマイザーを使用したことで、処理数が 13 個から 5 個に減少しました。

Animated GIF displaying Query Optimizer enhancements

高速データ移動

高いパフォーマンスを発揮するために、分散型データベース システムにはデータの移動を効率化するメカニズムも重要です。第 2 世代の Azure SQL Data Warehouse では、高速データ移動が導入されています。この高速データ移動のパフォーマンスを改善するために、ブロードキャストと分割データ移動を追加しました。また、データ移動中の文字列の処理方法を最適化して、パフォーマンスを 2 倍まで向上させました

高度な分析機能

GROUP BY ROLLUP、GROUPING()、GROUPING_ID() などの分析関数が豊富に用意されているため、多次元の SQL クエリの作成が簡素化され、クエリが整理されただけでなくパフォーマンスも向上しました。以下は GROUP BY クエリの例です。

 SELECT Country
,Region
,SUM(Sales) AS TotalSales
FROM Sales
GROUP BY ROLLUP(Country, Region)
ORDER BY Country
,Region

インテリジェントなワークロード管理

Azure SQL Data Warehouse にワークロードの重要度を指定する新機能が追加されました。この機能では、データ ウェアハウス システムで実行する必要のあるワークロードに優先順位を付けることができます。管理者はこの機能を使用して、ビジネス要件 (幹部用ダッシュボード クエリや ELT の実行など) に基づいて、ワークロードに優先順位を設定できます。

ワークロードの分類

まず行うのは、ワークロードの分類です。SQL Data Warehouse では、管理者が定義した複数の条件に基づいて要求が分類されます。一致する分類子が存在しない場合は、既定の分類子が使用されます。SQL Data Warehouse では、SQL クエリ レベル、データベース ユーザー、データベース ロール、Azure Active Directory ログイン、Azure Active Directory グループといったさまざまなレベルの分類子をサポートしており、システム定義のワークロード グループ分類へ要求をマッピングします。

ワークロードの重要度

各ワークロードの分類子は、low 、below_normal、normal、above_normal、high5 つの重要度のいずれかに割り当てられます。コンパイル中、ロックの取得中、実行中のリソースへのアクセスには、要求に割り当てられた重要度に基づいて優先順位が付けられます。

以下の図は、ワークロードの分類と重要度の機能を示したものです。

ADW_GIF2_v3H

重要度に応じて要求を分類する

要求の分類は、新しく追加した CREATE WORKLOAD CLASSIFIER 構文で行うことができます。以下のログイン例をご覧ください。ExecutiveReports ロールが ABOVE_NORMAL 重要度にマッピングされ、AdhocUsers ロールが BELOW_NORMAL 重要度にマッピングされています。この構成では、ExecutiveReports ロールのメンバーのクエリが先に完了します。これは、AdhocUsers ロールのメンバーよりも優先的にリソースへのアクセスが割り当てられるためです。

 CREATE WORKLOAD CLASSIFIER ExecReportsClassifier
   WITH (WORKLOAD_GROUP = 'mediumrc'
        ,MEMBERNAME     = 'ExecutiveReports'
        ,IMPORTANCE     =  above_normal);
 
CREATE WORKLOAD CLASSIFIER AdhocClassifier
    WITH (WORKLOAD_GROUP = 'smallrc'
         ,MEMBERNAME     = 'AdhocUsers'
         ,IMPORTANCE     =  below_normal);

ワークロードの重要度の詳細については、重要度の分類CREATE WORKLOAD CLASSIFIER のドキュメントをご覧ください。

セキュリティとプライバシーの強化

データ ウェアハウスを使用する場合、お客様にとってはセキュリティやプライバシーも気がかりです。分析の分野で有名なソート リーダーの Donald Farmer 氏も、Azure SQL Data Warehouse は市場最高レベルのセキュリティ機能とプライバシー機能 (英語) を備えていると言います。そうした機能は偶然備わったわけではありません。実際、SQL Data Warehouse の中核テクノロジである SQL Server は、この 8 年間ずっと NIST 脆弱性データベースで最も脆弱性の低いデータベースとなっています。

SQL Data Warehouse に追加された最新のセキュリティ機能とプライバシー機能の 1 つが、データの検出と分類です。この機能は、機密データを含む可能性がある列を自動検出し、その列への割り当てを推奨するメタデータ タグを提示し、そのタグを永続的にテーブルに付与することができます。

これらのタグは、この機能をサポートしているクライアントでクエリ結果に表示されるほか、機密データに対するクエリの監査ログにも表示されます。

この機能を Azure Portal から使用するには、「Azure SQL Database のデータの検出と分類」ドキュメントをご覧ください。Azure SQL Database 向けの記事ですが、SQL Data Warehouse にも当てはまります。

次のステップ

Azure はデータ分析に最適

Azure はデータ分析に最適なクラウド環境です。Azure での分析がおすすめの理由は、こちらのページでご確認ください。