#24:ゼロコピークローン機能をまとめる| Snowflake Advent Calendar 2019 #SnowflakeDB
こんにちは、大場です。
当エントリは『Snowflake Advent Calendar 2019』の24日目のエントリです。
本記事では Snowflake が提供している「A Quick Look at Zero-copy Cloning」の動画に沿ってゼロコピークローン機能の概要を紹介します。
従来型のデータベースにおけるコピー
実データを用いたテスト・検証をする際、本番データベースの影響を避けるために、データベースをコピーしてテスト用の環境を準備するケースは多いと思います。 しかし、このケースにおいてはすべてのデータを物理的に本番データベースからコピーデータベースに移動する必要がありとても時間がかかることに加え、本番とテストの両環境でコストがかかります。また、コピーをした後も本番データは繰り返し更新されますが、これを手動でテスト環境に更新することは手間がかかります。
Snowflake におけるゼロコピークローン
Snowflake は異なるアプローチを採用しており、より自由にテストや実験をおこなうことができます。
- データベースを数秒で何回でも複製できます。
- Snowflake ではデータを物理的にコピーせずに元のデータを引き続き参照します。
- データを更新または変更するときにのみ新しいレコードを保存します。
- 100個のデータベースクローンがある場合でも、支払いは一意の各レコードの保存に対してのみとなります。
- 現在のデータベースを取得したり、加えた変更を本番環境にプロモートすることはクローンを作成するのと同じくらい簡単です。
デモンストレーション
デモンストレーション概要
以下のユースケースを用いて説明します。
- 実稼働データベースの Price 列が、ロード時のエラーのために 25% 大きいことが発覚
- これを修正するために、データベースのクローンを作成してテスト・変更可能な安全な場所を準備
- テスト環境で該当列のすべての行を正しい値に変更
- テスト終了後、変更を本番データベースに戻す
デモンストレーション
動画ではこの後 Worksheet から以下の操作をおこなっています。
- デモでは標準的な販売注文データベースを用いる
- Total Price カラムが実際よりも25%高い値で誤って読み込まれていることを確認
- これを修正するための最初のステップとしてデータベースのクローンを作成(このデータを操作して実験するための安全な場所を準備)
- 数秒でコピーが完了
- コピー先で Total Price に 0.8 を掛けて修正、値を確認
- テストデータから本番環境にデータをコピー、値を確認
動画で紹介されているとおり、データの物理的なコピーをおこなっているわけではないため、わずか数分でデータベースのクローンを作成し、データの修正と本番環境に反映がされています。また、料金が2重でかかるというもことはありません。これが Snowflake が提供するゼロコピークローンの特徴となります。まとめとして、従来型のデータベースとポイントを比べると以下となります。
さいごに
ということで本日は Snowflake のゼロコピークローンの機能をご紹介しました。最終日となる明日は「Snowflake 情報まとめ」で締めくくります。それではまた!