Snowflake Clone(クローン)機能とは? ~仕組み・用途・メリットをわかりやすく解説~(vol.19)

  • 公開日:2024年02月26日(月)

Snowflakeには、データベース/スキーマ/テーブルなどのオブジェクトを高速に複製するゼロコピークローンがあります。
本ブログ記事ではゼロコピークローンはどのような機能なのか、ゼロコピークローンとTime Travelの違い、ゼロコピークローンをどのような用途で使用するとメリットがあるのかについて解説します。

SnowflakeのClone(クローン)機能とは?

ゼロコピークローンとは、Snowflake内のデータベース/スキーマ/テーブルをコピーする機能になります。ゼロコピークローンを使用することで、追加のストレージコストをかけることなく、高速でデータベース/スキーマ/テーブルのクローンを作成することができます。
*本ブログ記事では、ゼロコピークローン機能を使用して ①複製することを「クローニング」、 ②複製されたものを「クローン」 と言います。
クローニング対象がデータベースやスキーマである場合、ソースオブジェクトに含まれている子オブジェクトのクローンに対して付与されたすべての権限を継承します。

  • データベースに対して、クローニングする場合、データベースのみではなく、スキーマ/テーブル/ビューなども複製されます。また、権限も継承します。
  • スキーマに対して、クローニングする場合、スキーマのみではなく、テーブル/ビューなども複製されます。また、権限も継承します。

コンテナ(データベースまたはスキーマ)のクローン自体は、ソースコンテナに対して付与された権限を継承しないことに注意してください。

SnowflakeにおけるClone(クローン)とTime Travelの違い

本章ではSnowflakeの「Time Travel」と、ゼロコピークローンの違いについて解説します。

Snowflakeには、「Time Travel」と呼ばれる機能があります。
Time Travel機能とは、定義された期間内の任意の時点で履歴データ(=変更または削除されたデータ)にアクセスできる機能です。

「Time Travel」は、次のタスクを実行するためのツールとして機能します。

  •  誤ってまたは意図的に削除された可能性のあるデータ関連オブジェクト(テーブル/スキーマ、およびデータベース)の復元
  • 過去の重要なポイントからのデータの複製とバックアップ
  • 指定された期間のデータ使用量/操作の分析

Time Travel機能は、定義された期間(Snowflake Enterprise EditionやEnterprise Edition以上のエディションにおいて最大90日以内で設定可能)において、データの削除またはデータを含むオブジェクトの削除など、テーブル内のデータが変更されると、Snowflakeは更新前のデータの状態を保持します。定義された時間が経過すると、データは「Snowflake Fail-safe」に移動され、これらのアクションは実行できなくなります。

ゼロコピークローンはクローンを作成した時点のテーブルやスキーマ配下など指定した範囲のオブジェクトを複製します。
Time Travelはアカウントレベルやデータベース/スキーマ/テーブルなどのオブジェクト単位で指定期間の変更履歴を保持し、変更前のテーブルデータやオブジェクトにアクセスしたり、復元できる機能になります。
Time Travelは、アカウントレベルやデータベース/スキーマ/テーブルなどのオブジェクト単位で指定期間の変更履歴を保持し、変更前のテーブルデータやオブジェクトにアクセスしたり、復元できる機能になります。

Time Travelの方が設定期間内の過去データやオブジェクトにアクセスできる範囲が広くなりますが、その分ストレージ料金も増加します。
特定時点のオブジェクトの複製が必要な場合はゼロコピークローン特定期間の変更前のオブジェクトにアクセスや復元をしたい場合はTime Travel機能といったように使い分けることをおすすめします。

Snowflake でClone(クローン)機能を使用する際の注意点

Snowflakeのゼロコピークローンは、データを複製するための便利な機能ですが、いくつかの注意点があります。本章ではSnowflakeのオブジェクト、特にデータベース/スキーマ/非仮テーブルをクローニングする際の重要な注意点について解説します。

  1. データの整合性
    クローン作成時にデータの整合性が損なわれる可能性があります。特に、トランザクション処理中のデータは、クローンに反映されない場合があります。
  2. 権限の継承
    クローンは、ソースオブジェクトの権限を継承しません。必要に応じて、クローンに手動で権限を設定する必要があります。
  3. オブジェクト名の競合
    ソースオブジェクトの名前を変更した場合、進行中のクローニング操作と競合する可能性があります。
  4. 履歴の保存
    テーブルのクローンには、ロード履歴がデフォルトで含まれません。必要に応じて、ロード履歴を別途保存する必要があります。
  5. 制限事項
    ゼロコピークローン機能には、いくつかの制限事項があります。● オブジェクト制限
    内部ステージ、ストリーム、タスク、パイプ、通知統合はクローニングされません。
    マテリアライズドビューは、基になるテーブルにマスキングポリシーが設定されている場合、Cクローニングされません。
    時間制限
    指定された時間/時点で存在しなかったオブジェクトはクローニングされません。クローン作成時のデータベース/スキーマの保持時間よりも過去に遡ることはできません。
    ● その他

・クローンは独立したオブジェクトなので、元のオブジェクトと同時に変更可能です。
・クローン作成時のデータベース/スキーマの所有権は、元のオブジェクトの所有権とは異なる場合があります。
・Python UDFsなど、一部のオブジェクトは、条件によってはクローニングされません。
・クローン作成時のデータベース/スキーマのすべての権限は、クローンに引き継がれません。

ゼロコピークローンを使用する場合は上記の注意点をご理解のうえ、ご活用いただければと思います。

SnowflakeでClone(クローン)機能を使用するメリット

    本章では、ゼロコピークローンに、どのようなメリットがあるのかについて解説します。従来のデータコピー方法と比べて、以下のメリットがあります。

    1. 高速な作成
      Snowflakeのゼロコピークローンは、従来のデータコピー方法と比べて、格段に高速でクローンを作成できます。これは、データの物理的な複製ではなく、メタデータとデータの参照のみを作成するためです。
    2. ストレージコストの削減
      Snowflakeのゼロコピークローンは、データの物理的なコピーを作成しないため、ストレージコストを削減できます。これは、特に大規模なデータセットを扱う場合に大きなメリットとなります。
    3. データの分離
      Snowflakeのゼロコピークローンは、元のデータから独立したクローンを作成するため、データの分離が容易になります。これは、テスト環境や開発環境でのデータの安全性を確保するために役立ちます。
    4. 変更の影響の抑制
      Snowflakeのゼロコピークローンは、元のデータに影響を与えることなく、クローン上で変更を行うことができます。これは、データ分析や開発作業を安全かつ効率的に進めるために役立ちます。
    5. 様々なユースケースへの適用
      Snowflakeのゼロコピークローンは、データ分析、開発、テスト、教育など、様々なユースケースに適用できます。

    まとめ

    ここまで、ゼロコピークローンとはどのような機能なのか、Time Travel機能との違いやゼロコピークローンのメリットについて、解説してまいりました。
    ゼロコピークローンの特徴をご理解いただいたうえで、Snowflakeのご利用についてご検討いただければと思います。

    弊社は、データマネジメントの専門家として、お客様のデータ一元管理やデータ活用における戦略策定、データドリブン経営の実現に向けた真の“使える”データマネジメント基盤構築のご支援をしております。
    データ分析基盤の豊富な構築実績に基づくノウハウを体系化したサービスをご提供しておりますので、データ活用でお悩みの際は、是非、弊社までお声掛けください。

    本記事は、2024年2月13日時点の情報を基に作成しています。製品・サービスに関する詳しいお問い合わせは、弊社Webサイトからお問い合わせください。
    https://itsol.dentsusoken.com/snowflake/inquiry/