Snowflake

Snowflakeのデータ保持と復旧|Time Travel・Fail-safe・保持期間設計

2026-03-26
更新: 2026-03-27
NicheeLab編集部

Snowflakeのデータ保持と復旧は、Time TravelFail-safeの2つの仕組みで構成されています。Time Travelはユーザーが過去のデータに直接アクセスできる機能で、Fail-safeはTime Travel期間終了後の最終防衛ラインとしてSnowflakeが内部的に保持するデータ保護です。

この記事では、2つの仕組みのタイムライン・エディション別の保持期間・テーブル種類ごとの違い・ストレージコストへの影響を整理します。SnowPro Core試験のDomain 6(Data Protection & Data Sharing / 配点10〜15%)で頻出するトピックです。

データ保持のタイムライン

データの変更(UPDATE/DELETE/DROP)が発生した時点を起点として、以下のタイムラインでデータが保持されます。

データ変更発生
  │
  ├── Time Travel期間(0〜90日)──────┐
  │   ユーザーがAT/BEFORE句で        │
  │   過去データに直接アクセス可能     │
  │   UNDROP TABLE/SCHEMA/DATABASE   │
  │   で復元可能                     │
  │                                  │
  ├── Fail-safe期間(7日間)─────────┐
  │   Snowflakeサポートによる        │
  │   データ復旧のみ可能             │
  │   ユーザーは直接アクセス不可      │
  │                                  │
  └── データ完全消去                  │
      復旧不可能

Enterprise Edition(Time Travel 90日)の場合、データ変更から最大97日間(90日 + 7日)のデータ保護期間があることになります。Standard Edition(Time Travel 最大1日)では最大8日間(1日 + 7日)です。

Time Travel の詳細

アクセス構文

構文用途
AT(TIMESTAMP => <ts>)指定時点のデータを参照AT(TIMESTAMP => '2026-03-25 10:00:00'::TIMESTAMP)
AT(OFFSET => <sec>)N秒前のデータを参照AT(OFFSET => -3600) で1時間前
AT(STATEMENT => <id>)特定のクエリ実行時点のデータAT(STATEMENT => '8e5d0ca9-...')
BEFORE(STATEMENT => <id>)特定のクエリ実行直前のデータBEFORE(STATEMENT => '8e5d0ca9-...')

UNDROP による復元

Time Travel期間内であれば、DROP TABLEで削除したテーブル・スキーマ・データベースをUNDROPで復元できます。

-- テーブルの復元
UNDROP TABLE sales;

-- スキーマの復元
UNDROP SCHEMA analytics;

-- データベースの復元
UNDROP DATABASE production;

同名のオブジェクトがすでに存在する場合はUNDROPが失敗するため、事前にALTER TABLE ... RENAMEで既存オブジェクトをリネームする必要があります。

エディション別保持期間の比較

エディションTime Travel最大期間Fail-safe期間最大保護期間
Standard0〜1日7日間8日間
Enterprise0〜90日7日間97日間
Business Critical0〜90日7日間97日間
VPS(Virtual Private Snowflake)0〜90日7日間97日間

Standard EditionではDATA_RETENTION_TIME_IN_DAYSの最大値が1日に制限されており、90日のTime Travelを利用するにはEnterprise以上へのアップグレードが必要です。

テーブル種類別のデータ保持

Snowflakeには3種類のテーブル(Permanent / Transient / Temporary)があり、それぞれデータ保持の仕様が異なります。試験では3種類の違いが頻出します。

テーブル種類Time TravelFail-safe用途ストレージコスト
Permanent(デフォルト)0〜90日(Enterprise+)7日間本番データ・マスターテーブル最も高い
Transient0〜1日なし(0日)ステージング・中間テーブル低い
Temporary0〜1日なし(0日)セッション内の一時処理最も低い

テーブル種類の選択基準

  • Permanent:ビジネスクリティカルなデータ。誤操作からの復元が必要なマスターテーブル・ファクトテーブルに使用。Time TravelとFail-safeの両方で保護される。
  • Transient:再作成可能なデータ。ETLのステージングテーブル・中間集計テーブルなど、ソースから再生成できるデータに使用。Fail-safeが不要なためストレージコストを削減できる。
  • Temporary:セッション限定のデータ。セッションが終了するとテーブルが自動的に削除される。他のユーザーからは見えない。分析の作業テーブルに使用。

ストレージコストへの影響

Time TravelとFail-safeのデータ保持はストレージコストに直接影響します。保持期間中のデータは変更前の状態(差分データ)として保持されるため、変更が多いテーブルほどストレージコストが増加します。

テーブル種類Time Travel 90日設定Fail-safeストレージコスト影響
Permanent(10GBテーブル/日次全更新)最大 10GB × 90日分の差分7日分の差分非常に大きい
Transient(10GBテーブル/日次全更新)最大 10GB × 1日分の差分なし小さい
Permanent(10GBテーブル/更新なし)0(変更がないため差分なし)0なし

頻繁にUPDATE/DELETEが実行されるテーブルでTime Travel 90日を設定すると、ストレージコストが大幅に増加する可能性があります。テーブルの重要度と更新頻度に応じてDATA_RETENTION_TIME_IN_DAYSを適切に設定してください。

保持期間の設計指針

階層的な設定戦略

DATA_RETENTION_TIME_IN_DAYSはアカウント・データベース・スキーマ・テーブルの各レベルで設定でき、下位レベルが上位レベルを上書きします。

-- アカウントレベル(デフォルト30日)
ALTER ACCOUNT SET DATA_RETENTION_TIME_IN_DAYS = 30;

-- ステージングスキーマ(0日 = Time Travel無効)
ALTER SCHEMA staging SET DATA_RETENTION_TIME_IN_DAYS = 0;

-- 重要テーブル(90日 = 最大保持)
ALTER TABLE master_customers SET DATA_RETENTION_TIME_IN_DAYS = 90;

推奨設定パターン

テーブル分類推奨Time Travelテーブル種類理由
マスターテーブル(顧客・商品)30〜90日Permanent誤操作からの復元を長期間保証
ファクトテーブル(売上・ログ)7〜30日Permanent直近の誤操作復元に対応
ステージングテーブル0〜1日Transient再ロードで復元可能。コスト最適化
中間集計テーブル0〜1日Transient再計算で復元可能
分析ワークテーブル0日Temporaryセッション限定。保持不要

Fail-safe の運用上の注意点

  • Fail-safeのデータ復旧はSnowflakeサポートへの問い合わせが必要で、復旧には数時間〜数日を要します。即座の復旧はできません。
  • Fail-safeはPermanentテーブルにのみ適用され、TransientテーブルとTemporaryテーブルには適用されません。
  • Fail-safe期間中のストレージコストはユーザーに課金されます。コストを削減したい場合はTransientテーブルの活用を検討してください。
  • Fail-safeの期間(7日間)はユーザーが変更することはできません。固定値です。
  • Fail-safeはデータの「最終保険」であり、通常の運用ではTime TravelとUNDROPで復元を完結させることが前提です。

問題で確認

SnowPro Core - Data Protection

問題 1

Enterprise EditionのSnowflakeアカウントで、Transientテーブルのデータ保持に関する説明として正しいものはどれですか?

  1. Transientテーブルは最大90日間のTime Travelと7日間のFail-safeが適用される
  2. TransientテーブルはTime Travelが最大1日に制限され、Fail-safe期間は存在しない
  3. Transientテーブルは0日のTime Travelのみ設定可能で、変更履歴は一切保持されない
  4. TransientテーブルとPermanentテーブルのデータ保持期間は同一である

正解: B

TransientテーブルはEnterprise Editionであっても、Time Travel保持期間は最大1日に制限されます(Permanentテーブルのように90日には設定できません)。さらに、TransientテーブルにはFail-safe期間が存在しません(0日)。これがTransientテーブルの最大の特徴で、Permanentテーブルと比較してストレージコストを大幅に削減できます。選択肢AはPermanentテーブルの説明です。選択肢CはTime Travelを0〜1日の範囲で設定可能なため誤りです(1日も設定可能)。選択肢Dは誤りで、TransientテーブルとPermanentテーブルの保持期間は大きく異なります。

よくある質問(FAQ)

Time TravelとFail-safeの違いは何ですか?

Time Travelはユーザーが自分でAT/BEFORE句を使用して過去のデータに直接アクセス・復元できる機能です。Enterprise以上で最大90日間の保持が可能で、UNDROP TABLE/SCHEMA/DATABASEによる復元もTime Travelの範囲内で実行できます。一方、Fail-safeはTime Travel期間終了後のデータに対するSnowflake内部の安全領域です。7日間のFail-safe期間中はSnowflakeサポートチームへの問い合わせによるデータ復旧が可能ですが、ユーザーが直接アクセスすることはできません。Fail-safeの復旧には数時間〜数日かかることがあり、最後の手段として位置づけられています。

TransientテーブルにFail-safeはありますか?

いいえ、TransientテーブルにはFail-safe期間がありません(0日)。これがTransientテーブルの最大の特徴であり、Permanentテーブル(Fail-safe 7日間)と比較してストレージコストを大幅に削減できます。TransientテーブルのTime Travel保持期間はStandard Editionで0〜1日、Enterprise以上で0〜1日(最大1日に制限)です。Permanentテーブルは最大90日のTime Travelが可能ですが、TransientテーブルはTime Travelも最大1日に制限されます。ETLのステージングテーブルや中間テーブルなど、復旧不要な一時データにはTransientテーブルを使用してストレージコストを最適化しましょう。

DATA_RETENTION_TIME_IN_DAYSのデフォルト値と最大値は?

DATA_RETENTION_TIME_IN_DAYSのデフォルト値は1日で、これは全エディション共通です。最大値はエディションによって異なり、Standard Editionでは1日(変更不可)、Enterprise以上では最大90日まで設定可能です。このパラメータはアカウント・データベース・スキーマ・テーブルの各レベルで設定でき、下位レベルの設定が上位レベルを上書きします。例えばアカウントレベルで30日に設定していても、特定のステージングテーブルだけ0日に設定して保持期間を無効化できます。保持期間を長くするとストレージコストが増加するため、テーブルの重要度に応じて適切な値を設定してください。

データ保護の問題をもっと解こう

Data Protection & Data Sharingドメインの問題で理解を深めましょう

無料で問題を解く

Snowflake データ保護関連記事

Time Travel完全解説

AT/BEFORE句の構文とUNDROPの使い方

Fail-safe完全解説

Fail-safeの仕組みとストレージコスト

Snowflake用語集80選

試験に出る重要用語をカテゴリ別に整理

Snowflake認定資格一覧

全11試験の概要・費用・受験条件を網羅

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Snowflake

Snowflake資格一覧|全11試験(SnowPro)の難易度・費用

Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...

Snowflake

Snowflake試験の難易度ランキング|全11資格を徹底比較

Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...

Snowflake

Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ

Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...

Snowflake

SnowPro Core試験完全解説|出題範囲・問題例・合格戦略

SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...

Snowflake

SnowPro Platform Associate完全解説|入門試験の攻略

SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...

Snowflakeの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.