データをコピーしてしまうと、データをコピーする際の計算資源とストレージが必要になる。
そして、「どちらのデータが正しいか問題」が発生してしまい、由々しき事態になる。
SSOT(Single Source Of True)という考え方があり、なるべくデータは1箇所に集めたい。
Zero Copy Cloning
Zero Copy Cloning を使うことにより、1つのデータをコピーせずに参照できる。
Cloneだけで意味が通じるが、「コピーしてないよ」を強調するために”Zero Copy”を付けて呼ぶ。
Clone は同一アカウント内のオブジェクト操作レベルで使用する。
つまり、Database、Schema、Table単位で使用する。
Share
Share は 同一クラウドプロバイダ内の複数のアカウントで参照するために使用する。
一度 Shareというオブジェクトを作成し、Share から Database オブジェクトを作る。
Share から Databaseオブジェクトを作る際にコピーは行われない。
Cross-Cloud,Cross-Region してしまうと、「コピーせずに」が出来なくなる。
なので、Shareは同一Cloud,同一Regionまで。
Replication
Cross-Cloud, Cross-Region でデータをコピーするための仕組み。
DR対応などで異なるリージョンにバックアップを取りたい場合や、
異なるクラウドプラットフォームに別機能を実装する場合などに用いる。
どうしてもコピーが発生してしまう。
一度 Cross-Cloud, Cross-Region で Replication を行い、
Replication先で Share, Clone を行うことで、Cross する回数が最小化される。
Whitepaper
Shareについて以下が参考になった。
Snowflake Data Sharing EXTENDING THE BUILT-FOR-THE CLOUD DATA WAREHOUSE BEYOND ORGANIZATIONAL AND APPLICATION BOUNDARIES