Agile育成ブログ
未来を変える喜びを
未分類

クローニング

1. クローニング(CLONE)とは?

通常、他のデータベースでテーブルをコピーすると、データ量に応じて時間がかかり、ストレージ容量も2倍消費します。 しかし、Snowflakeのクローンは**「ゼロコピー・クローニング」**と呼ばれ、以下の特徴があります。

  • 爆速: 数テラバイトの巨大なテーブルでも、数秒で完了します。
  • ストレージ代がタダ: コピーした瞬間はデータを複製しないため、追加のストレージ料金は発生しません。
  • 独立している: クローンした後のテーブルに対してデータを追加・削除しても、元のテーブルには一切影響しません。

2. なぜ「データがないのに分身」が作れるのか?

Snowflakeはデータを直接テーブルに持っているのではなく、裏側で「マイクロパーティション」というファイル群として管理しています。

  • 仕組み: クローンを実行すると、Snowflakeは「新しいテーブル名」を作り、そこから元データと同じファイルを参照するように紐付け(ポインタ)だけを作成します。
  • 変更したとき: クローン側のデータを更新すると、その変更分だけが新しいファイルとして書き込まれます。それ以外の「変更していない部分」は引き続き元のファイルを見続けるため、効率が良いのです。
CREATE OR REPLACE TABLE region 
CLONE snowbearair_db.promo_catalog_sales.region;
  • 目的: 本物のデータを使ってテストをしたいけれど、本番データを壊すわけにはいかない。
  • 解決策: クローンを作れば、自分専用の箱で本物と同じデータを自由に加工・破壊できます。しかも、ストレージ代を気にせず一瞬で作れるのです。

4. クローニングの活用シーン

  • 開発・テスト: 本番データの「スナップショット」を瞬時に作成してテストする。
  • バックアップ: 大事な処理の前に、その時点の状態をバックアップとして残しておく。
  • 分析: 過去の特定の時点のデータを再現して分析する。