👏

【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)は独立させることで、柔軟性とパフォーマンスを両立している。

  • クラウドサービスレイヤー
    • 全体の一貫性・セキュリティを統制。
    • 認証、アクセス制御、インフラストラクチャ管理、メタデータ管理、クエリの解析および最適化
    • 上記「クエリの解析および最適化」について、一部のクエリ(後述)ではクラウドサービスレイヤーのみで結果が返せるが、そこも含んだ記載。一般のクエリオプティマイザーの役割だけではない。
  • コンピュートレイヤー
    • 仮想ウェアハウス(あるいは、単に「ウェアハウス」)を使用してクエリを処理。
    • ウェアハウスはコンピューティングリソースを他のウェアハウスと共有せず、各ウェアハウスで独立している。
  • ストレージレイヤー

1.2.2. 3層アーキテクチャのメリット

3層アーキテクチャにより、代表的なものとして下記のメリットが実現できる。

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

公式:Snowflakeの主な概念とアーキテクチャ

Discussion