#24:ゼロコピークローン機能をまとめる| Snowflake Advent Calendar 2019 #SnowflakeDB

2019.12.24

こんにちは、大場です。

当エントリは『Snowflake Advent Calendar 2019』の24日目のエントリです。

本記事では Snowflake が提供している「A Quick Look at Zero-copy Cloning」の動画に沿ってゼロコピークローン機能の概要を紹介します。

従来型のデータベースにおけるコピー

実データを用いたテスト・検証をする際、本番データベースの影響を避けるために、データベースをコピーしてテスト用の環境を準備するケースは多いと思います。 しかし、このケースにおいてはすべてのデータを物理的に本番データベースからコピーデータベースに移動する必要がありとても時間がかかることに加え、本番とテストの両環境でコストがかかります。また、コピーをした後も本番データは繰り返し更新されますが、これを手動でテスト環境に更新することは手間がかかります。

Snowflake におけるゼロコピークローン

Snowflake は異なるアプローチを採用しており、より自由にテストや実験をおこなうことができます。

  • データベースを数秒で何回でも複製できます。
  • Snowflake ではデータを物理的にコピーせずに元のデータを引き続き参照します。
  • データを更新または変更するときにのみ新しいレコードを保存します。
  • 100個のデータベースクローンがある場合でも、支払いは一意の各レコードの保存に対してのみとなります。
  • 現在のデータベースを取得したり、加えた変更を本番環境にプロモートすることはクローンを作成するのと同じくらい簡単です。

デモンストレーション

デモンストレーション概要

以下のユースケースを用いて説明します。

  1. 実稼働データベースの Price 列が、ロード時のエラーのために 25% 大きいことが発覚
  2. これを修正するために、データベースのクローンを作成してテスト・変更可能な安全な場所を準備
  3. テスト環境で該当列のすべての行を正しい値に変更
  4. テスト終了後、変更を本番データベースに戻す

デモンストレーション

動画ではこの後 Worksheet から以下の操作をおこなっています。

  • デモでは標準的な販売注文データベースを用いる
  • Total Price カラムが実際よりも25%高い値で誤って読み込まれていることを確認
  • これを修正するための最初のステップとしてデータベースのクローンを作成(このデータを操作して実験するための安全な場所を準備)
    • 数秒でコピーが完了
  • コピー先で Total Price に 0.8 を掛けて修正、値を確認
  • テストデータから本番環境にデータをコピー、値を確認

動画で紹介されているとおり、データの物理的なコピーをおこなっているわけではないため、わずか数分でデータベースのクローンを作成し、データの修正と本番環境に反映がされています。また、料金が2重でかかるというもことはありません。これが Snowflake が提供するゼロコピークローンの特徴となります。まとめとして、従来型のデータベースとポイントを比べると以下となります。

さいごに

ということで本日は Snowflake のゼロコピークローンの機能をご紹介しました。最終日となる明日は「Snowflake 情報まとめ」で締めくくります。それではまた!