👏
【Snowflake】概要とアーキテクチャ
このページは、親記事のうち、1.1節と1.2節の内容です。
Snowflakeについてさらに学習したい方は、親記事から各ページをご参照ください。
1.1. Snowflake概要
1.1.1. Snowflakeとは
Snowflakeは、すべての処理がクラウドインフラストラクチャ上で実行されるSaaS型のデータウェアハウス(DWH)製品。
クラウド環境の利点を最大限に活かすよう設計されており、「クラウドネイティブDWH」と紹介されることもある。
1.2. Snowflakeの3層アーキテクチャの全体像
1.2.1. 3層アーキテクチャの各レイヤーの役割
Snowflakeは3層アーキテクチャにより「Shared-EverythingとShared-Nothingのハイブリッド構成」を実現している。
Shared-Everythingのようにストレージを共有しつつ、Shared-Nothingのように計算リソース(Compute)は独立させることで、柔軟性とパフォーマンスを両立している。
- クラウドサービスレイヤー
- 全体の一貫性・セキュリティを統制。
- 認証、アクセス制御、インフラストラクチャ管理、メタデータ管理、クエリの解析および最適化
- 上記「クエリの解析および最適化」について、一部のクエリ(後述)ではクラウドサービスレイヤーのみで結果が返せるが、そこも含んだ記載。一般のクエリオプティマイザーの役割だけではない。
- コンピュートレイヤー
- 仮想ウェアハウス(あるいは、単に「ウェアハウス」)を使用してクエリを処理。
- ウェアハウスはコンピューティングリソースを他のウェアハウスと共有せず、各ウェアハウスで独立している。
- ストレージレイヤー
- クラウドオブジェクトストレージにデータを保持。
- データは内部の最適化された列指向形式に再編成(マイクロパーティショニング)。

公式:Snowflakeの主な概念とアーキテクチャより
1.2.2. 3層アーキテクチャのメリット
3層アーキテクチャにより、代表的なものとして下記のメリットが実現できる。
- 高い同時実行性
- ウェアハウスはコンピューティングリソースを他のウェアハウスと共有していないので、ワークロード間のリソース競合が発生しない。
- 独立したスケーリングによる高い柔軟性
- 従来の課題として、データ量(ストレージ)が増えると、計算能力(コンピュート)も一緒に増やす必要があった。
Snowflakeでは、ストレージレイヤーとコンピュートレイヤーが完全に分離しているため、それぞれを独立して調整することができる。
- 従来の課題として、データ量(ストレージ)が増えると、計算能力(コンピュート)も一緒に増やす必要があった。
- コスト最適化
- すべてのコンピュートレイヤーから同じデータを参照可能でありデータコピーが不要なため、ストレージコストを削減できる
- クエリの解析および最適化(、一部クエリの処理)をクラウドサービスレイヤーで実施するため、コンピューティングコストを削減できる
- 用途に沿った適切なウェアハウスを選択し、必要なときだけ稼働させることができるので、コンピューティングコストを削減できる
Discussion