このブログ記事を執筆したのは、以下の方々です。 Sahaj Saini, PM on the Microsoft Analytics Platform System (APS) team.
このブログ投稿では、対称型マルチプロセッシング (SMP) 対 MPP の簡単な概要を説明します。 このブログ投稿では、対称型マルチプロセッサ (SMP) と超並列処理 (MPP) システムの概要、SMP から MPP への移行のトリガーの特定方法、Microsoft Analytics Platform System (APS) への移行時の主な検討事項、APS などの MPP ソリューションのパワーを活用する方法に関する考察をご紹介します。 Emma は、自転車製造会社 Adventure Works Cycles のデータベース管理者です。 Adventure Works では、Emma と彼女のチームは、データウェアハウス ソリューションとして従来の SQL Server SMP を使用しています。 同社は急速に成長しており、自転車業界における競争の激化に伴い、Adventure Works Cyclesのビジネスアナリストは、データに対するより迅速な洞察を求めています。 Emma は現在、SMP の導入に伴い次のような課題に直面しています –
- 高いデータ量とデータの増加。 売上と顧客数の増加に伴い、データ量は急速に増加し、10 TB を超えました。
- データ読み込み/ETL 時間の長さ。 経営陣への報告書を毎日作成する必要があるため、Emmaは、他のOLTPおよび非リレーショナルシステムから流れてくる増大するデータを取り込んで処理するには、現在のETL速度では不十分であると判断しました。
- 長いキューブ処理時間: 現在のキューブ処理時間では、会社のリアルタイムのレポートニーズを満たすことは困難です。
これらの課題を克服するために、Emmaと彼女のチームは、データセンターに大規模で高価かつ強力なサーバーおよびストレージハードウェアのセットを購入することを評価しました。 このアプローチは問題を解決するでしょうが、今後 12 か月でデータ量が爆発的に増加することが予想されるため、短期的なものに過ぎません。 しかし、今後1年間でデータ量が爆発的に増加することが予想されるため、より大規模で強力なSMPソリューションでも、すぐに限界に達してしまうでしょう。 Emma は、データ ニーズの増加に合わせて拡張できるソリューションを望んでいます。
Emma の問題を解決する前に、SMP と MPP とは何かを簡単に定義しておきましょう。 SMP (Symmetric Multi-Processing) は、緊密に結合されたマルチプロセッサ システムで、プロセッサはリソース (オペレーティング システム (OS) のシングル インスタンス、メモリ、I/O デバイス) を共有し、共通のバスを使って接続されています。 SMP はサーバーで採用されている主な並列アーキテクチャで、次の画像に示されています。
超並列処理 (MPP) は、複数のプロセッサによる単一のタスクの協調処理で、各プロセッサは独自の OS とメモリを使用し、ある形式のメッセージング インターフェイスを使って互いに通信します。 MPP は、共有ナッシングまたは共有ディスク アーキテクチャで設定できます。
共有ナッシング アーキテクチャでは、システム全体で競合する単一のポイントがなく、ノードはメモリやディスク ストレージを共有しません。 データはノード間で水平に分割され、各ノードがデータベースの各テーブルから行のサブセットを持つようにします。 各ノードは自分のディスクにある行だけを処理します。 このアーキテクチャに基づくシステムは、システムを遅くするボトルネックが1つもないため、大規模なスケールを実現することができます。 これは Emma が求めているものです。
シェアード ナッシング アーキテクチャによる MPP は次の画像に示されています。
Microsoft Analytics Platform System アプライアンス上で実行されている Microsoft Parallel Data Warehouse (PDW) は、MPP シェアード ナッシング アーキテクチャとして実装されています。 これは、EthernetとInfinibandで相互接続された1つの制御ノードとストレージに接続された計算ノードで構成されています。 制御ノードには、MPPシステムの頭脳であるPDWエンジンが搭載されており、並列クエリプランの作成、コンピュートノードでのクエリ実行、アプライアンス全体のデータ集計を調整します。
PDWアーキテクチャの詳細については、Architecture of the Microsoft Analytics Platform Systemの投稿を参照してください。 ここでは、APS のシェアード ナッシング MPP アーキテクチャを最大限に活用するために、彼らがどのようにソリューションを適応させたかを見ていきましょう。
Table Design
前述のように、APS は、ノードが自己完結しておりメモリやディスクを共有しない、シェアード ナッシング MPP アーキテクチャに基づいています。 したがって、このアーキテクチャでは、大規模なテーブルをノードに分散して超並列処理の恩恵を受ける必要があります。 APSでは、テーブルを分散型と複製型のいずれかに定義することができます。 どちらを選択するかは、データ量と単一ノードですべてのデータにアクセスする必要性に依存します。
分散テーブル
分散テーブルとは、テーブル内の行データがアプライアンス内のノードに分散されて、大規模な拡張を可能にするものです。 各行は、以下のイメージで描かれているように、1 つの計算ノードで 1 つの分布に終わります。
APS の分散特性を利用するために、Emma は大規模テーブル、通常は Fact および大規模次元テーブルを APS で分散するように次のように変更します。
CREATE TABLE .( NOT NULL, NOT NULL, . . NULL) WITH( DISTRIBUTION = HASH(ProductKey),CLUSTERED COLUMNSTORE INDEX);
見てわかるように、これはテーブル生成用の標準 DDL 文に分散テーブル用の小さな追加を行ったものです。 テーブルは、そのテーブルのために選択された分散カラムに適用される決定論的ハッシュ関数によって分散されます。 Emma は、高いカーディナリティとスキューがないことから、FactInternetSales テーブルの配布カラムとして Product Key を選択し、したがってテーブルをノード間で均等に配布します。
Replicated Tables
ただし、すべてのテーブルを配布すると、すべての操作に対して結合操作を行う前にノード間で非常に多くのデータ移動を行う必要が出てくるでしょう。 したがって、言語、国などの小さい次元のテーブルでは、各計算ノードでテーブル全体を複製することが理にかなっています。 つまり、これらのテーブルでローカルなジョイン操作を可能にすることのメリットは、余分に消費されるストレージのコストよりも大きいのです。 複製されたテーブルとは、以下に示すように、すべての計算ノードにわたって複製されるテーブルです。
Emma、小さなテーブル、通常は寸法テーブルを次のように複製するように設計します。 たとえば、SQL Server SMP 環境で 1,000 億行に対するクエリを実行する場合、1 つの実行スペースですべてのデータを処理する必要があります。 MPPでは、作業を多くのノードに分散させることで、問題をより管理しやすく、より簡単なタスクの実行方法に分割します。 4つのノードのアプライアンス(上の写真参照)では、各ノードにはおよそ250億行の処理しか求められないので、はるかに速いタスクです。 その結果、Emmaはクエリーの実行時間が大幅に改善されたことを確認し、ビジネスにおいてより良い意思決定をより迅速に行えるようになりました。 さらにEmmaは、APSに「スケールユニット」を追加することで、データウェアハウスを数テラバイトから6ペタバイト超のデータ量に拡張することができるようになりました。
Data Loading
SQL Server SMP では、Emma と彼女のチームは、SSIS パッケージのセットを介して ETL プロセスを使用して、データをデータウェアハウスにロードしていました – (1) OLTP およびその他のシステムからデータを抽出、(2) データをディメンション形式に変換、および (3) データウェアハウス内のターゲット次元テーブルまたはファクトテーブルにデータをロードします。 データ量が増加すると、変換の実行中に中間の SSIS サーバーがボトルネックとなり、データの読み込みに時間がかかります。
APS では、Emma とそのチームは代わりに ELT を使用して OLTP およびその他のシステムからデータを抽出し、APS 上のステージング位置にデータをロードすることができます。 そして、SSISではなく、APSエンジンの分散性と並列処理能力を活かして、データをディメンション形式に変換することができます。 4 ノードのアプライアンスでは、1 ノードの SSIS サーバーに対して、4 台のサーバーがデータのサブセットに対して変換を実行することになります。 Emma は次に、CTAS (Create Table As Select) ステートメントを使用して、次のようにステージング テーブルからテーブルを作成できます。
CREATE TABLE . WITH( CLUSTERED COLUMN INDEX, DISTRIBUTION = HASH (CustomerKey))ASSELECT * FROM .;
ELT プロセスに切り替えることにより、Emma は APS の並列処理能力を利用して、データ ローディングのパフォーマンスを向上させました。 現在では、必要に応じてデータウェアハウスを拡張できるようになり、Adventure Works のデータ量と成長に自信を持って対応できるようになりました。 ELTとAPSの並列処理機能により、APSへのデータロードをより速く、予定された時間内に行うことができるようになりました。 また、APSのMPP設計と連携することで、飛躍的なクエリー性能を達成し、リアルタイムでのレポート作成とデータに対する洞察を可能にします。