Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Snowflake リーダーアカウントを利用したデータ共有について

Snowflake リーダーアカウントを利用したデータ共有について

bergkamp

May 18, 2023
Tweet

Other Decks in Technology

Transcript

  1. © Minedia, Inc. All rights reserved. 自己紹介 まさ 2 •

    株式会社マインディア エンジニア • マインディアではアプリケーションのバックエンドの開発や購買デー タのパイプラインの開発・運用を担当
  2. © Minedia, Inc. All rights reserved. EC購買データを利用したプロダクトの例をご紹介 3 メールデータの自動収集により高精度なデータを保有し、 SnowflakeとTableauの活用で高速に理解しやすい分析が可能

    データの付加価値創出 UIによってデータ提供 消費者の メールデータ収集 Tableauを埋め込んだ Webツールにより可視化 Snowflakeに データ集約・分析
  3. © Minedia, Inc. All rights reserved. 産学連携 5 ユビキタス環境の研究で世界トップを走る名古屋大学河口研究室との産学連携プロジェクトを実施。 名古屋大学、大阪大学やKDDIも所属する異業種ペルソナマーケティングAI推進協議会へも参加

    マインディア • データや検証プラットフォームの提供 • ビジネスやマーケティング観点からの分析・研究の助言 河口研究室 • 実世界とオンラインの世界関連性を研究 • マインディアのデータを活用した研究で国際学会に論文を発表予定 • EC購買データをもとにオンラインでの購買行動の分析を行いたい • 研究室で知見のあるリアル空間での行動分析手法と掛け合わせることで、より高次な行動分析が可能となる • マインディアからは特定の期間の購買データの一部をサマライズして提供している
  4. © Minedia, Inc. All rights reserved. 産学連携でのビジネス要求 • クライアント ◦

    常に最新のデータを参照したい ▪ Snowflakeを契約をしていない ▪ エンジニアがいない • 弊社 ◦ 安全にデータを提供したい ◦ 簡単にデータを提供したい ▪ 極力新しく何かを実装したくない ▪ メンテナンスに工数をかけたくない 6
  5. © Minedia, Inc. All rights reserved. リーダーアカウントとは • Snowflakeと契約していないクライアントとデータを共有できる •

    通常のアカウントと同様にWeb UIも提供されている(助かります) https://docs.snowflake.com/ja/user-gu ide/data-sharing-reader-create 8
  6. © Minedia, Inc. All rights reserved. 制限されていること • リーダーアカウントは新しいデータの追加やアカウント内の共有データの更新はサポートされていない •

    ライセンス契約がないため、リーダーアカウントから直接サポートに問い合わせすることができない • デフォルトでは、プロバイダーが作成できるリーダーアカウントの総数は20 9
  7. © Minedia, Inc. All rights reserved. コストの管理 リーダーアカウント(データ利用者)が利用した分のクレジット料金は、プロバイダー アカウント(データ提供者)に課せられる 10

    リソースモニターを作成することで対応する • リーダーアカウントで仮想ウェアハウスで毎月消費されるクレジットの量を制御したい場合は、リソース モニターを作成して制御する • 想定外のクレジットの消費を回避する
  8. © Minedia, Inc. All rights reserved. リーダーアカウント作成 〜 共有までの大まかな流れ 項目

    作業するアカウント 1 リーダーアカウント作成 プロバイダーアカウント 2 共有の作成と設定 プロバイダーアカウント 3 ロール/ユーザーの作成 リーダーアカウント 4 リソースモニターの作成と設定 リーダーアカウント 5 ウェアハウスの作成 リーダーアカウント 6 共有からデータベース作成 リーダーアカウント 11
  9. © Minedia, Inc. All rights reserved. リーダーアカウントの作成 (プロバイダーアカウントで作業) // ポイントとなる部分をピックアップしたものなので、作業する際は公式ドキュメントを参照してください。

    // Web UIでも作業することができます。 // リーダーアカウント作成 CREATE MANAGED ACCOUNT sample_reader_account_1 ADMIN_NAME = sample_reader_admin_1, ADMIN_PASSWORD = '${admin_password}', TYPE = READER ; // 作成したリーダーアカウントの確認 SHOW MANAGED ACCOUNTS [LIKE ‘sample_reader_account_1’]; // 上記コマンドで表示されたurlカラムに表示されたURLからリーダーアカウントにログインできます。 // リーダーアカウントが作成されるまで5分ほどかかるので403が表示される場合は少し待ちましょう。 // リーダーアカウントをドロップする場合 DROP MANAGED ACCOUNT sample_reader_account_1; 13
  10. © Minedia, Inc. All rights reserved. 共有の作成と設定(プロバイダーアカウントで作業) // 共有を作成 CREATE

    SHARE share_1; // 共有にdatabase, schemaのUSAGE権限、tableのselect権限の追加 GRANT USAGE ON DATABASE sample_db TO SHARE share_1; GRANT USAGE ON SCHEMA sample_db.schema_1 TO SHARE share_1; GRANT SELECT ON TABLE sample_db.schema_1.table_1 TO SHARE share_1; // share_1へ付与した権限の確認 SHOW GRANTS TO SHARE share_1; // 共有にアカウントを追加 // ACCOUNTSにはSHOW MANAGED ACCOUNTSで確認したlocatorを指定する(ここではXX12345) ALTER SHARE share_1 ADD ACCOUNTS = XX12345; ※ カスタムロールに共有作成の権限を付与することも可能です。 所有する(または必要な権限がある)オブジェクトを他のアカウントに公開できるので注意が必要です。 14
  11. © Minedia, Inc. All rights reserved. リソースモニターの作成と設定(リーダーアカウントで作業) // アカウント管理者としてリーダーアカウントにログインする //

    ロール/ユーザー作成はここでは割愛 // リソースモニター作成 CREATE RESOURCE MONITOR sample_monitor WITH CREDIT_QUOTA = 5 FREQUENCY = MONTHLY START_TIMESTAMP = IMMEDIATELY NOTIFY_USERS = (hoge, fuga..) // メールのみ TRIGGERS ON 80 PERCENT DO NOTIFY // 80%で通知 ON 99 PERCENT DO SUSPEND // 99%で現在実行中のクエリの完了を許可。その他は一時停止。 ON 100 PERCENT DO SUSPEND_IMMEDIATE // 100%で即停止 ON 100 PERCENT DO NOTIFY // 100%で通知 ; // アカウントレベルでリソースモニターを設定 // ウェアハウス単位でも設定できる USE ROLE accountadmin; ALTER ACCOUNT SET RESOURCE_MONITOR = sample_monitor; 15
  12. © Minedia, Inc. All rights reserved. ウェアハウスの作成(リーダーアカウントで作業) // ウェアハウス作成 CREATE

    WAREHOUSE IF NOT EXISTS sample_wh WAREHOUSE_SIZE = 'XSMALL' AUTO_SUSPEND = 180 AUTO_RESUME = true MAX_CLUSTER_COUNT = 1 SCALING_POLICY = 'ECONOMY' INITIALLY_SUSPENDED = true // 作成したResource MonitorをWH単位で指定も可能 // RESOURCE_MONITOR = sample_monitor ; // ウェアハウスの利用権限を付与 GRANT USAGE,OPERATE,MONITOR ON WAREHOUSE sample_wh TO ROLE analyst; 16
  13. © Minedia, Inc. All rights reserved. 共有からデータベースを作成(リーダーアカウントで作業) // 共有からデータベース作成(プロバイダーアカウントのlocatorを指定する。ここではAB12345) CREATE

    DATABASE shared_db FROM SHARE AB12345.share_1; // データを参照できるよう権限を付与 GRANT IMPORTED PRIVILEGES ON DATABASE shared_db TO ROLE analyst; 17
  14. © Minedia, Inc. All rights reserved. 運用中のDBからセキュアビューを作成して共有 - 1 プロバイダーアカウント

    運用中のDB 共有用のDB Secure View リーダーアカウント • 運用中のDBを参照してセキュアビューを作成 ◦ DDL定義が表示されない ◦ パフォーマンスが悪化する可能性がある ◦ etc … user__db share_db share_2 Secure View 共有するオブジェクトを追 加したくない 18 shared_db
  15. © Minedia, Inc. All rights reserved. 運用中のDBからセキュアビューを作成して共有 - 2 //

    データベース、スキーマ作成 CREATE DATABASE share_db; CREATE SCHEMA share_db.schema_1; // 共有用のDBにセキュアビューを作成 CREATE SECURE VIEW share_db.schema_1.sample_secure_view AS SELECT .. FROM user_db.schema.table_1, user_db.schema.table_2 WHERE ..; // 共有を作成 CREATE SHARE share_2; // 共有にshare_db, schema_1のUSAGE権限を付与 GRANT USAGE ON DATABASE share_db TO SHARE share_2; GRANT USAGE ON SCHEMA share_db.schema_1 TO SHARE share_2; // 異なるデータベースに対するREFERENCE_USAGE権限を付与 // 参照するテーブルやスキーマの権限を共有する必要はない GRANT REFERENCE_USAGE ON DATABASE user_db TO SHARE share_2; // 共有にviewへのSELECT権限を付与 GRANT SELECT ON VIEW share_db.schema_1.sample_secure_view TO SHARE share_2; 19
  16. © Minedia, Inc. All rights reserved. READER_ACCOUNT_USAGE VIEW リーダーアカウントにも各種データをモニタリングするためのビューが一部用意されている •

    LOGIN_HISTORY VIEW • QUERY_HISTORY VIEW • RESOURCE_MONITORS VIEW • STORAGE_USAGE VIEW • WAREHOUSE_METERING_HISTORY VIEW 20