第1章 Snowflake AI Data Cloudの特徴とアーキテクチャ / 想定学習時間:30〜40分 / 最終確認:2026年8月

1-1. Snowflakeアーキテクチャの3層構造(クラウドサービス・コンピュート・ストレージ)

🎯 この節の学習目標

1. なぜ3層に分かれているのか:従来アーキテクチャの課題

Snowflake のアーキテクチャを理解する出発点として、従来のデータベースが採用してきた2つの設計を押さえておきましょう。

shared-disk(共有ディスク)shared-nothing(非共有)
仕組み複数の計算ノードが1つの共有ストレージにアクセスする。データ管理がシンプル各ノードが自分専用のストレージを持ち、データを分散して処理する。並列処理に強い
弱点ノードを増やすと共有ストレージへのアクセスが競合し、性能が頭打ちになりやすい計算資源とデータが一体化しているため、片方だけを増減できず、ノード追加時にはデータの再配置が必要になる

Snowflake はこの2つの「いいとこ取り」をしたアーキテクチャを採用しています。すなわち、データは1か所の共有ストレージに置き(shared-disk 的)クエリの処理は互いに独立した複数のコンピュートクラスタが超並列(MPP)で実行する(shared-nothing 的)という設計です。Snowflake はこれをマルチクラスタ共有データアーキテクチャ(multi-cluster, shared data architecture)と呼んでいます。

📝 試験のポイント

「Snowflake のアーキテクチャは shared-disk と shared-nothing のどちらか」という問い方がされることがあります。答えは「どちらか一方ではなく、両者のハイブリッド」です。ストレージは共有(shared-disk 的)、処理は各仮想ウェアハウスが独立して MPP 実行(shared-nothing 的)、という整理で覚えておきましょう。

2. 3層構造の全体像

Snowflake は、役割の異なる3つの層が疎結合に組み合わさってできています。上から順に見ていきます。

役割主な機能
① クラウドサービス層プラットフォーム全体の「頭脳」として、各種サービスを調整する認証・アクセス制御、メタデータ管理、クエリの解析と最適化、トランザクション管理、結果キャッシュ
② クエリ処理層(コンピュート層)クエリを実際に実行する仮想ウェアハウス(virtual warehouse)と呼ばれるコンピュートクラスタが担当。各ウェアハウスは互いに独立し、性能に影響を与え合わない
③ データベースストレージ層データを保存するロードされたデータを圧縮・暗号化された Snowflake 内部の最適化フォーマットに変換し、クラウドストレージに保存する
ユーザー / BIツール / アプリケーションSQL・各種ドライバ経由の接続
認証・解析・最適化・調整
クラウドサービス層認証・アクセス制御 / メタデータ管理 / クエリ最適化 / トランザクション管理 / 結果キャッシュ
実行計画を各ウェアハウスへ
仮想ウェアハウスA例:ETL用
仮想ウェアハウスB例:BI分析用
仮想ウェアハウスC例:データサイエンス用
すべてのウェアハウスが同じデータを参照
データベースストレージ層圧縮・暗号化された内部フォーマットでクラウドストレージに保存

図:Snowflake の3層構造。複数の仮想ウェアハウスが互いに独立しながら、同一の共有データにアクセスする

この図で重要なのは、仮想ウェアハウスが複数あっても、参照するデータは1つだという点です。ETL 処理が重いクエリを実行していても、BI 分析用のウェアハウスは影響を受けません。ワークロードごとにウェアハウスを分ける運用は、この独立性を活かした Snowflake の基本パターンです。

3. クラウドサービス層:プラットフォームの頭脳

クラウドサービス層(Cloud Services Layer)は、ユーザーからのリクエストを最初に受け取り、プラットフォーム全体を調整する層です。試験対策として、この層が担う機能を正確に列挙できるようにしておきましょう。

機能内容
認証・アクセス制御ログイン認証、ロールベースの権限チェック
メタデータ管理テーブル定義、統計情報、マイクロパーティションの情報などを一元管理
クエリの解析と最適化SQL を解析し、実行計画を生成・最適化する(オプティマイザ)
トランザクション管理ACID トランザクションの調整
結果キャッシュ実行済みクエリの結果を保持し、同一クエリの再実行時にウェアハウスを使わず結果を返す

💡 具体例:結果キャッシュはどの層で効くか

-- 1回目の実行:仮想ウェアハウスがクエリを処理する
SELECT region, SUM(amount)
FROM sales
GROUP BY region;

-- 2回目の実行(データ・クエリとも変更なし):
-- クラウドサービス層の結果キャッシュから即座に結果が返り、
-- 仮想ウェアハウスは起動すら不要(コンピュートクレジットを消費しない)

結果キャッシュはウェアハウスではなくクラウドサービス層に保持されるため、ウェアハウスを停止していてもヒットします。「どのキャッシュがどの層にあるか」は整理して覚えておきたいところです。

📝 試験のポイント

「次の機能はどの層が担当するか」という対応付けの問題が試験で問われやすい論点です。認証・メタデータ管理・クエリ最適化・トランザクション管理・結果キャッシュ=クラウドサービス層クエリの実行=クエリ処理層(仮想ウェアハウス)データの保存=ストレージ層と即答できるようにしておきましょう。

4. クエリ処理層:独立して動く仮想ウェアハウス

クエリ処理層(Query Processing Layer)では、仮想ウェアハウスと呼ばれるコンピュートクラスタがクエリを実行します。ここで押さえるべき性質は次の3つです。

性質意味
互いに独立あるウェアハウスの負荷が、他のウェアハウスの性能に影響しない
同一データを共有すべてのウェアハウスがストレージ層の同じデータにアクセスする。ウェアハウスごとにデータをコピーする必要はない
独立してスケールストレージ量とは無関係に、ウェアハウスのサイズや数を増減できる。課金もストレージと別建て

ストレージとコンピュートを独立にスケールでき、課金も別々という点は、Snowflake のアーキテクチャ上の利点として説明されやすいポイントです。「データ量は増えたが計算は少ない」「一時的に計算だけ増やしたい」といった状況に、それぞれの層だけを拡張して対応できます。仮想ウェアハウスのサイズや自動停止・自動再開などの詳細は 1-5 で扱います。

5. データベースストレージ層:最適化された内部フォーマット

データベースストレージ層(Database Storage Layer)は、ロードされたデータを保存する層です。Snowflake にデータをロードすると、元のファイル形式のまま保存されるのではなく、圧縮され、暗号化された Snowflake 内部の最適化フォーマットに変換されて、基盤となるクラウドストレージに書き込まれます。

この内部フォーマットの実体であるマイクロパーティションの仕組みは、1-6 で詳しく学びます。

✅ この節のまとめ

練習問題

問1. Snowflake のアーキテクチャの説明として最も適切なものはどれか。

  1. 純粋な shared-disk アーキテクチャであり、すべてのノードが1つのストレージを奪い合う
  2. 純粋な shared-nothing アーキテクチャであり、各ノードが専用のデータを持つためノード追加時にデータ再配置が必要になる
  3. shared-disk と shared-nothing のハイブリッドであり、共有ストレージ上のデータを、互いに独立した複数のコンピュートクラスタが MPP で処理する
  4. 単一サーバー上でストレージとコンピュートを一体化したアーキテクチャである
解答と解説を見る

正解:C

Snowflake のマルチクラスタ共有データアーキテクチャは、データを1か所の共有ストレージに置く点で shared-disk 的、独立したクラスタが超並列処理する点で shared-nothing 的な、両者のハイブリッドです。Aは競合による性能頭打ちという shared-disk の弱点をそのまま持つ説明で誤りです。Bは shared-nothing の説明であり、Snowflake ではデータとコンピュートが分離しているため再配置は不要です。Dはスケールしない従来型の構成で、Snowflake の設計とは正反対です。

問2. クラウドサービス層が担当する機能はどれか(2つ選べ)。

  1. クエリの解析と実行計画の最適化
  2. 仮想ウェアハウスによるクエリの実行
  3. 結果キャッシュの保持
  4. データの圧縮・暗号化された内部フォーマットでの保存
解答と解説を見る

正解:A・C

クエリの解析・最適化と結果キャッシュは、いずれもクラウドサービス層の機能です。Bのクエリ実行はクエリ処理層(仮想ウェアハウス)、Dのデータ保存はデータベースストレージ層の役割です。本試験でも「2つ選べ」形式は多く出題されるため、層と機能の対応は複数同時に問われても答えられるように整理しておきましょう。

問3. 仮想ウェアハウスに関する説明として正しいものはどれか。

  1. 各ウェアハウスは専用のデータコピーを持つため、ウェアハウスを増やすとストレージ使用量も倍増する
  2. 各ウェアハウスは互いに独立して動作し、すべてのウェアハウスがストレージ層の同一データを共有する
  3. 1つのアカウントで同時に起動できるウェアハウスは1つだけである
  4. あるウェアハウスで重いクエリが実行されると、他のウェアハウスの性能も低下する
解答と解説を見る

正解:B

仮想ウェアハウスは「互いに独立、ただしデータは共有」が核心です。Aは誤りで、データはストレージ層に1つだけ存在し、ウェアハウスはそれを参照します。Cも誤りで、複数のウェアハウスを同時に起動してワークロードを分離するのが標準的な使い方です。Dはウェアハウスの独立性と矛盾します。独立しているからこそ、ETL と BI 分析を別ウェアハウスに分ければ互いに干渉しません。

問4. Snowflake のデータベースストレージ層に関する説明として誤っているものはどれか。

  1. ロードされたデータは圧縮・暗号化された Snowflake 内部の最適化フォーマットで保存される
  2. データの物理的な構造やファイルサイズは Snowflake が自動的に管理する
  3. ユーザーはクラウドストレージ上の内部フォーマットのファイルを直接開いて読み取ることができる
  4. ストレージはコンピュートとは独立してスケールし、課金も別々に計算される
解答と解説を見る

正解:C

Snowflake 内部フォーマットで保存されたデータには SQL クエリを通じてのみアクセスでき、基盤のクラウドストレージ上のファイルを直接読むことはできません。したがってCが誤りです。A・Bはストレージ層の基本的な性質、Dはストレージとコンピュートの分離という Snowflake アーキテクチャの利点で、いずれも正しい説明です。