第1章 Snowflake AI Data Cloudの特徴とアーキテクチャ(Features & Architecture, 31%)
🎯 この節の学習目標
Snowflake の内部ストレージに格納されるテーブルには、データ保護機能の強さが異なる3つのタイプがあります。違いを生むのは、過去のデータに遡れる Time Travel(TT)と、その後さらに Snowflake が災害復旧用に保持する Fail-safe の2つです(それぞれの詳細は第4章で学びます)。
| タイプ | Time Travel | Fail-safe | 主な用途 |
|---|---|---|---|
| permanent(既定) | 最大 1日(Standard Edition) 最大 90日(Enterprise Edition 以上) | あり(7日) | 本番データなど、保護を最優先するデータ |
| transient | 0〜1日 | なし | ステージング用・再作成可能なデータ。ストレージコストを抑えたい場合 |
| temporary | 0〜1日 | なし | セッション内の一時的な作業用データ |
permanent テーブルは CREATE TABLE で作られる既定のタイプで、TT と Fail-safe の両方によって最も手厚く保護されます。その分、保護用の履歴データもストレージコストに含まれます。
transient テーブルは Fail-safe を持たず、TT も最大1日に制限される代わりに、履歴保持のためのストレージコストを抑えられます。「元データから再作成できる中間テーブル」「ロード前のステージングデータ」など、失っても復元手段があるデータに向いています。
temporary テーブルは、作成したセッションの中だけに存在し、他のセッションからは見えません。セッションが終了すると自動的に削除されます。同じセッション内の作業用・中間結果の置き場として使います。
📝 試験のポイント
「TT と Fail-safe の有無」の組み合わせは選択肢の判別ポイントになりやすい論点です。Fail-safe があるのは permanent だけ、transient と temporary は TT 0〜1日+Fail-safe なし、そして temporary はセッション限定・他セッション不可視という3点を確実に区別できるようにしておきましょう。permanent の TT 最大日数がエディションで変わる点(Standard は最大1日、Enterprise 以上は最大90日)もあわせて覚えます。
external テーブルは、Snowflake の内部ストレージにデータを取り込まず、外部ステージ上のファイル(クラウドストレージ上の Parquet・CSV など)を読み取り専用で参照するテーブルです。
「データレイク上のファイルを移動せずに SQL で参照したい」という場面で使われますが、内部テーブルに比べてクエリ性能は落ちるのが一般的です。
Iceberg テーブルは、オープンなテーブルフォーマットである Apache Iceberg 形式でデータを管理するテーブルです。データは Snowflake の内部ストレージではなく、ユーザーが用意した外部ボリューム(external volume)上のクラウドストレージに置かれます。
💡 具体例:タイプを指定したテーブル作成
-- 既定は permanent
CREATE TABLE sales (id NUMBER, amount NUMBER);
-- transient テーブル(Fail-safeなし、ストレージコスト減)
CREATE TRANSIENT TABLE staging_sales (id NUMBER, amount NUMBER);
-- temporary テーブル(セッション内のみ)
CREATE TEMPORARY TABLE work_sales (id NUMBER, amount NUMBER);
-- external テーブル(外部ステージ上のファイルを読み取り専用で参照)
CREATE EXTERNAL TABLE ext_sales
LOCATION = @my_ext_stage/sales/
FILE_FORMAT = (TYPE = PARQUET);
キーワードを付けなければ permanent になる、という既定値も覚えておきましょう。
近年の Snowflake には、特定のワークロードに最適化されたテーブルタイプも追加されています。試験ではまず「何のためのものか」を対応付けられれば十分です。
| タイプ | 特徴 | 主な用途 |
|---|---|---|
| dynamic table | SELECT 文の宣言だけで定義し、結果が自動的にリフレッシュされる(詳細は 3-5) | 変換パイプラインの簡素化。「常に最新の変換結果」を保つテーブル |
| hybrid table | Unistore ワークロード向け。行ストア主体で高速な単一行の読み書きに対応し、主キーが強制される | OLTP 的な(トランザクション処理中心の)アプリケーション |
dynamic table は「変換ロジックを SELECT で宣言しておけば、更新処理を自分で書かなくても Snowflake が結果を保守してくれる」テーブルです。hybrid table は、分析(OLAP)向けの列指向ストレージとは対照的に行ストアを主体とし、トランザクション処理と分析を1つのプラットフォームで扱う Unistore を支えます。通常のテーブルと異なり主キー制約が強制される点が特徴です。
図:用途からテーブルタイプを選ぶ判断の流れ
✅ この節のまとめ
問1. Time Travel と Fail-safe に関するテーブルタイプごとの説明として正しいものはどれか。
正解:B
Fail-safe(7日)を持つのは permanent テーブルだけで、transient と temporary は TT 0〜1日かつ Fail-safe なしです。Aは permanent と transient の説明が逆です。Cは誤りで、TT 最大90日(Enterprise 以上)が可能なのは permanent テーブルです。Dはタイプを分ける意味自体を否定しており誤りです。
問2. temporary テーブルの説明として正しいものはどれか。
正解:A
temporary テーブルはセッションスコープのテーブルで、他セッションから不可視、セッション終了で自動削除されます。Bは permanent(または transient)テーブルの挙動です。Cは external テーブルの説明です。Dは誤りで、Fail-safe を持つのは permanent テーブルだけです。
問3. 「他のクエリエンジンからも読めるオープンなテーブルフォーマットでデータを保持したい」という要件に最も適したテーブルタイプはどれか。
正解:C
Iceberg テーブルは Apache Iceberg というオープンフォーマットで外部ボリューム上にデータを保存するため、Snowflake 以外のエンジンとの相互運用が可能です。Aの transient は内部ストレージのテーブルであり、フォーマットの相互運用性とは関係ありません。Bの hybrid は OLTP(Unistore)向けのタイプです。Dの temporary はセッション内の一時作業用です。
問4. dynamic table と hybrid table の説明として正しいものを2つ選べ。
正解:A・C
dynamic table は SELECT で変換結果を宣言し、Snowflake が自動リフレッシュで最新状態を保ちます(A)。hybrid table は行ストア主体で主キーが強制され、OLTP 的なワークロード(Unistore)に対応します(C)。Bは external テーブルの説明です。Dは temporary テーブルの説明です。