はじめに
組織内のSnowflakeアカウント同士で安全にリージョン間データ共有をするなら、LIST機能のOrganizational listingsを使うのが非常におすすめです。
この記事ではSnowflakeがサポートするデータ共有方法の紹介から、お勧め機能のOrganizational listingsについて触れています。
リージョン間のデータ共有と聞くと、コストの部分が気になると思いますので、コストモニタリングの方法なども取り上げております。
データ共有方法の紹介
Snowflakeでアカウント間でデータを共有する方法は大きく3つに分類されます。
共有方法 | 特長 |
---|---|
直接共有 | ・組織内の同一リージョン内のアカウントに対してデータを共有する ・共有元と共有先は1対1の関係 |
リスト | ・直接共有の強化版 ・直接共有で1対多のような関係でデータを共有したい場合、共有相手ごとに直接共有設定をしなければならず手間 ・しかし、データを共有するリストを作成し、組織内のアカウントに対してデータを共有できるためその手間が省ける。(リスト=データオブジェクトと共有先を設定した情報) ・リストの種類があり、ユースケースに合わせて利用する – マケプレや組織内リストなど ・auto-filfullmentを利用することで、リージョン間で自動データ連携をサポート |
DataExchange | ・分類としてはリストに属する ・組織外のアカウントと共有する場合のみ選択肢に上がる ・利用するにはSnowflakeサポートへ利用申請が必要で手間がかかる |
上記共有方法から、組織内のアカウント同士におけるデータ共有(リージョン間)ならリスト機能が候補として上がります。
さらにリスト種類としては組織内リスト(Organizational listings)を利用することで、安全に組織内でのデータ共有が行います。
またリージョン間のデータ連携はauto-fulfillmentを利用することで、運用を楽にすることができます。
Organizational listings
組織リストについて
https://docs.snowflake.com/ja/user-guide/collaboration/listings/organizational/org-listing-about
Snowflakeの組織リストにより、組織内でデータ製品を安全に共有することができ、社内のコンシューマーが Internal Marketplace 内の信頼できるリソースを簡単に発見して使用できるようになります。プロバイダーは、Snowflake API または Snowsight のProvider Studioでリストを作成および管理できます。
Internal Marketplace
Snowflakeの Internal Marketplace は、組織内のコラボレーションデータ共有のためのキュレーションされたセキュアなスペースです。社内で利用可能なデータ製品を一元化することで、チームは外部のマーケットプレイスを利用することなく、リソースを発見し、信頼し、適用することができます。 Internal Marketplace 内でデータ製品を発見する整理された方法を提供することで、全社的なコラボレーションとデータ主導の意思決定をサポートします。
Internal Marketplace はパブリック Snowflake Marketplace と似ていますが、お客様の組織専用です。社内のチーム内で共有されている吟味されたデータを簡単に発見し、利用することができます。
アクセスは、アカウントターゲットとロールベースのアクセス制御(RBAC)によって管理することができ、データのセキュリティを維持し、許可されたユーザーだけがアクセスできるようにします。
組織リストプロバイダー
データ製品を作成および共有する人々にとって、 Internal Marketplace はデータ製品を社内で公開するためのセキュアなプラットフォームを提供します。プロバイダーは、 Snowsight のProvider Studioを使用して、または API を介して、組織リストを作成および管理することができます。 Internal Marketplace でデータ製品を公開することで、チームは一貫性のあるデータセットにアクセスできるようになり、冗長性を減らし、統一されたデータ主導のイニシアチブをサポートします。
Internal Marketplace でデータ提供を一元化することで、機密情報へのアクセスを管理し、データセキュリティと整合性を維持しながら、信頼できるデータで組織を革新することができます。
プロバイダーは、Provider Studioまたは API を使用して、組織リストを作成および管理できます。
組織リストのコンシューマー
データを利用する側の人。Internal Marketplaceや組織リストプロバイダーを経由して組織内のデータを簡単に見つけることができます。
auto-fulfillmentについて
自動フルフィルメントにより、組織リストのデータ製品がリージョン間で自動的に伝播され、手作業による複製が不要になります。このメカニズムは、データコンシューマーにシームレスなリージョンの可用性を提供し、一貫性を高め、マルチリージョンデータ環境における管理者のオーバーヘッドを削減します。
データ連携のスケジュール設定について
CRON式と分時日週の単位でのスケジュール設定が可能ですが、8日間を超える設定はできません。
リージョン間データ連携の仕組みとコストについて
仕組みについて
具体的な処理については公開されていませんが、大枠の仕組みとしては、次のとおりです。
- Snowflakeは「安全な共有領域(SSA)」を各リージョンに持っていて、そこにデータを 自動で複製 してくれる。
- この処理は 最初の利用者がそのリージョンからリスト(共有)を取得したタイミング で実行される。
さらに複製するモードが2つあります。
- FULL_DATABASE:データベース全体を複製。更新はリフレッシュ頻度に従うが、リアルタイムではない。
- SUBDB:特定のオブジェクト(テーブルなど)だけ複製。必要になったときにオンデマンドで。
コストについて
https://other-docs.snowflake.com/ja/collaboration/provider-understand-cost-auto-fulfillment
前提として、Snowflakeは、組織がリージョンへの自動複製を管理するための安全な共有領域を1つ作成し、請求コストをその領域に関連付けます。
そのため、クロスクラウドの自動複製に関連するコストは、手動の データベース複製のコスト とは異なります。
自動複製にかかる3つのコスト
- コンピューティングリソース
・リストを複製するためにSnowflakeによって実行されるクエリは、コンピューティングリソースを消費します。設定した更新頻度は、これらのクエリの実行頻度に影響を及ぼします。 - ストレージリソース
・データベースのサイズ、データが追加および更新される速度、およびデータベースの変更速度は、最初に、および継続的に自動複製され格納されるデータの量に影響を及ぼします。 - データ転送リソース(Egress)
・リストが自動複製されるクラウドリージョンとそのリージョンのクラウドプロバイダーは、データ転送のコストに影響します。コンシューマーがリストをリクエストするリージョンが多いほど、データ転送コストのために、それらのリストを複製するコストが上昇します。
具体的なコストを見積もるには
ミニマムなデータ量から共有を始め各リソースの実コストをモニタリングすることがお勧めです。
実際どの程度のコストやデータ量を使用したかは次のSnowflakeの3つのビューを使うことで確認することができます。
- LISTING_AUTO_FULFILLMENT_REFRESH_DAILY
- LISTING_AUTO_FULFILLMENT_DATABASE_STORAGE_DAILY
- LISTING_AUTO_FULFILLMENT_USAGE_HISTORY
コンピューティングリソースをモニターする
コンピューティングコストに関与しているリストとデータベースを識別するには、SNOWFLAKE.DATA_SHARING_USAGE.LISTING_AUTO_FULFILLMENT_REFRESH_DAILY
ビュー をご参照ください。
クロスクラウド自動複製によって実行されるデータ更新を決定することができます。リストが別のリージョンに複製されると、データ製品はリストプロバイダーによって定義された頻度で更新されます。このビューには、特定のリージョンで更新されるデータの量と、更新されるデータがどのリストおよびデータベースに関連付けられているかに関する詳細が含まれます。
View内の次のカラムで転送されたバイト数や使用したクレジット数を確認することができます。
カラム名 | 説明 |
---|---|
SNOWFLAKE_REGION | データ更新が発生した Snowflakeリージョン |
BYTES_TRANSFERRED | 当日、更新のために転送されたバイト数 |
CREDITS_USED | 当日、更新に使用されたクレジットの数 |
ストレージリソースをモニターする
ストレージコストに関与しているリストとデータベースを識別するには、 SNOWFLAKE.DATA_SHARING_USAGE.LISTING_AUTO_FULFILLMENT_DATABASE_STORAGE_DAILY
ビュー をご参照ください。
この DATA_SHARING_USAGE スキーマのビューを使用して、クロスクラウド自動複製で使用されるデータストレージを決定することができます。 リストが別のリージョンに送信されると、データ製品はそのリージョンに格納されます。 このビューには、特定のリージョンに格納されているデータの量と、データストレージが関連付けられているリストおよびデータベースに関する詳細が含まれています。
View内の次のカラムでストレージのバイト数を確認することができます。
カラム名 | 説明 |
---|---|
AVERAGE_DATABASE_BYTES | Time Travel のデータを含む、使用されるデータベースストレージのバイト数 |
AVERAGE_FAILSAFE_BYTES | 使用されている Fail-safeストレージ のバイト数 |
データ転送リソースをモニターする
組織内のプロバイダーアカウントに関連付けられたすべての安全な共有領域の推定コストを表示するにはSNOWFLAKE.ORGANIZATION_USAGE.LISTING_AUTO_FULFILLMENT_USAGE_HISTORY
ビューを使用します。
この ORGANIZATION_USAGE スキーマのビューを使用して、 クロスクラウド自動複製 に関連するコストを見積もることができます。データ製品がリージョンに複製されると、Snowflakeは、 安全な共有領域 と呼ばれるプロバイダーアカウントに関連付けられた管理アカウントを使用して、コンシューマーの需要がある各リージョンにデータ製品を格納します。プロバイダーアカウントは、他のリージョンの安全な共有領域に関連するコストを負担します。
View内の次のカラムでクロスクラウド自動複製にかかるクレジットを確認することができます。
カラム名 | 説明 |
---|---|
ESTIMATED_USAGE | SERVICE_TYPE に基づいて課金される推定使用量 |
ESTIMATED_USAGE_IN_CURRENCY | USAGE_DATE における USAGE の SERVICE_TYPE に対する請求額の見積もり |
実際のコストの表示
- Snowsight にサインインします。
- Admin » Cost Management を選択し、 Consumption タブを選択します。
- 使用状況データを表示するために使用するウェアハウスを選択します。
- アカウントフィルターを使用して、 SNOWFLAKE_MANAGED$PUBLIC_<region_name> または AUTO_FULFILLMENT_AREA$-<region_name> という名前のアカウントを選択し、自動複製で使用される安全な共有領域をフィルタリングします。 例えば、 AWS リージョンeu_west_2への自動複製データの使用に関連するコストを表示するには、 SNOWFLAKE_MANAGED$PUBLIC_AWS_EU_WEST_2 を選択します。
- フィルターを使用して、すべての使用タイプを表示するか、コンピューティング、ストレージ、またはデータ転送のコストに注目します。

まとめ
実際のデータ共有手順については参考資料をご参照いただければと思います。
実際なかなか日本リージョンと海外リージョン間でデータの共有のユースケースは発生し辛いかもしれませんが、東京リージョンと大阪リージョン間でのデータ共有ならまだ可能性としてはあるのではないでしょうか。
その際は是非Organizational listings機能を使ってデータ共有を試してみてください!
またコストについても、Cost Management画面で確認することができます。
まずはスモールサイズのデータ量から始め、徐々にデータを増やすことで無理のないデータ共有を実現できると思います。