Synapse Analytics では、データの移動について、
- BroadcastMoveOperation
- ShuffleMoveOperation
という 2 種類の操作を目にする機会が多いかと思います。
これらの動作については、次のドキュメントなどに情報が記載されています。
Synapse の SQL Pool に関しては、Analytics Platform System (APS) という、以前は、Parallel Data Warehouse (PDW) と呼ばれていたシステムがベースになっており、基本的な考え方については、並列データウェアハウスコンポーネント-分析プラットフォームシステム の情報も参考になるケースがあります。
クエリの操作については、Analytics Platform System Appliance Update 5 Documentation and Client Tools からダウンロードできるドキュメントが今でも一番情報が記載されているのではないでしょうか。
このドキュメント内には、BroadcastMoveOperation と ShuffleMoveOperation についても記載されています。
- BroadcastMoveOperation
- 分散データをレプリケートされたテーブルに移動する
- この操作は、ディストリビューションと互換性のない結合を実行しているときに使用される機会がある。
- この操作を実行するために、各ディストリビューションは、該当の行をすべてのComputeノードにブロードキャストする。
- その結果、各Computeノードは、自分の行に他のComputeノードから受け取ったすべての行を加えて、レプリケートされたテーブルを作成する。
- ShuffleMoveOperation
- 分散されたテーブルを再配布する。
- 再配布されたテーブルは、元の分散テーブルとは異なる分散カラムを持ち、これは、互換性のない結合や互換性のない集約を実行している場合に使用されることがある。
- この操作を実行するために、DMSは、各行を分散先のテーブルの分布列に従って正しい計算ノードに移動する。
- 既に正しいComputeノードに格納されている行は、この操作中はコピーされない。
というような記載があります。
基本的には、ディストリビューションに格納されていないデータ間での結合や集計が発生した際に、他のディストリビューションのデータを再配布することで必要なデータをコピーする処理となるのですが、どのような動作が実行されているかについて、まとめたことがなかったので、この機会にまとめておこうかと思います。