今回の課題
Snowflakeの勉強をしていて、
ドキュメントに出てくる用語(特にWarehouse周り)について理解できていないと感じたため、色々と調べてまとめてみた。
SnowflakeにおけるWarehouseとは
Snowflakeの「Warehouse」は「データを保存する場所」を意味するのではなく、
「データの処理を実行する力」を意味するイメージ。
SQLなどの処理に使用されるクラスタ(コンピューティングリソース)のことを言う。
ちなみに、請求は下記に基づいて計算される。
- Warehouseのサイズ
- クラスターの数(マルチクラスターウェアハウスを使用している場合)
- 各クラスターのコンピューティングリソースが実行される時間の長さ。
Snowflakeにおけるクラスタとは
「SnowflakeにおけるWarehouseとは」で記述した、Snowflakeにおける「クラスタ」は、
Warehouseのサイズに応じて、1つのクラスタを保持している。
小さいWarehouseは数台のサーバーで構成される1つのクラスタを保持していて、
大きなWarehouseはそれよりも多くのサーバーで構成された1つのクラスタを保持しているイメージ。
マルチクラスターウェアハウスとは
上記の通り、デフォルトではWarehouseは、
クエリを実行するために使用可能なコンピューティングリソースの1つのクラスターで構成される。
Warehouseにクラスタを追加し、並列性を強化して多くのリクエストに応えられるように強化することができ、それをマルチクラスターウェアハウスと言う。(スケールアウトのこと)
スケールアップとスケールダウンとは
Warehouseのサイズを変更すると、クラスタ内のサーバーの数が変更される。
既存のWarehouseのサイズを大きくすることを「スケールアップ」、
小さくすることを「スケールダウン」と呼ぶ。
Warehouseのサイズを変更すると、特に大規模で複雑なクエリのパフォーマンスが向上する。
Warehouseのサイズが大きいほど高速であるとは限らず、迅速に実行されている小規模で基本的なクエリの場合、サイズを大きくしてもあまり効果がないことがある。