Snowflake リーダーアカウントを利用したデータ共有について
概要
Snowflakeのリーダーアカウント機能を使ったデータ共有について簡単に紹介します。
弊社ではデータ分析基盤としてSnowflakeを採用しています。
背景
- 弊社では名古屋大学河口研究室と産学連携プロジェクトを実施しています。
- 詳細については こちら
- 弊社から研究室へデータを共有するためになんらかの仕組みが必要です。
- 特定の期間の購買データの一部をサマライズして提供しています。
産学連携でのビジネス要求
クライアント
- 常に最新のデータを参照したい
- Snowflakeを契約をしていない
- エンジニアがいない
弊社
- 安全にデータを提供したい
- 簡単にデータを提供したい
- 新しく何かを実装したくない
- メンテナンスに工数をかけたくない
リーダーアカウント
今回のビジネス要求にぴったりなのが リーダーアカウント です。
リーダーアカウントとは?
Snowflakeと契約していないクライアントとデータを共有できる
弊社はSnowflakeにデータを蓄積しているので、この仕組みは非常に助かります。
クライアントにエンジニアチームが存在する場合は別の方法でデータ共有する仕組みを構築することも可能だと思いますが、安全に簡単にデータを共有できるところが大きなメリットです。
「参照: Snowflake DOCUMENTATION リーダーアカウントの管理 https://docs.snowflake.com/ja/user-guide/data-sharing-reader-create 」
上図はアカウント間でのデータ共有の概要です。
Snowflakeを契約しているアカウント同士のデータ共有はもちろんのこと、今回ご紹介しているリーダーアカウントとのデータ共有も簡単に行うことができます。
Snowflakeの機能の中でも共有は非常に便利で強力な機能の1つだと思います。
また、共有されたデータの利用者はストレージコストがかかりません。 (上図のConsumer/Reader Account)
※共有されたデータを利用するときに使用するコンピュートリソースに対してコストがかかります。(後述)
通常のアカウントと同様にWeb UIも提供されている
通常のアカウント(Snowflakeを契約しているアカウント)と同様にWeb UIが提供されている点も大きなメリットです。
エンジニアの皆さんはコマンドラインでの操作に慣れていると思いますが、普段BIツールを利用している方の中にはSQLは書けるけどそれ以外のことは分からないという方は意外に多いのではないでしょうか。
Web UIが利用できると直感的にオペレーションが可能になるので、とても利用しやすいですね。
制限されていること
制限されていることもいくつかあります。
- リーダーアカウントは新しいデータの追加やアカウント内の共有データの更新はサポートされていない
- ライセンス契約がないため、リーダーアカウントから直接サポートに問い合わせすることができない
- デフォルトでは、プロバイダーが作成できるリーダーアカウントの総数は20
コストの管理
運用していく上でコストの管理はとても気になるポイントの1つですよね。
リーダーアカウント(データ利用者)が利用した分のコスト(クレジット料金)は、プロバイダーアカウント(データ提供者)に課せられます。
なのでなんらかの方法でコスト管理する必要があります。
リソースモニター
そこで登場するのがリソースモニターです。
リーダーアカウントで仮想ウェアハウスを使用して毎月消費されるクレジットの量を制御したい場合は、リソースモニターを作成して制御することができます。
これにより想定外のクレジットの消費を回避することができます。
最後に
ここまで弊社がリーダーアカウントを利用することになった背景とリーダーアカウントがどういうものなのかという概要を簡単にご紹介しました。
Snowflakeはデータ共有が簡単に安全にできるので、データの利活用が活発に行われています。非常に素晴らしいですね。
次回以降、リーダーアカウントを作成〜共有するまでの簡単な流れと設定でポイントとなる部分のご紹介ができればと思います。
Discussion