2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

サイロ化したBigQueryをAnalyticsHubにより統合するアーキテクチャの検討時のメモ

Last updated at Posted at 2024-09-04

概要

Google Cloud 上でサイロ化(乱立)している BigQuery データを統合するためのアーキ
テクチャ案として、Analytics Hub の活用方法を下記の資料にて公開しました。この記事では下記資料を作成する際のメモを共有します。

image.png

Analytics Hub について

Analytics Hub とは

Analytics Hub とは、 BigQuery のデータセットと Pub/Sub を効率よく安全に共有するサービスです。

image.png

引用元:Analytics Hub | データ交換とデータ共有 | Google Cloud

Analytics Hub の料金

料金については下記のように記載されており、Analytics Hub にはコストがかからないようです。

データ エクスチェンジやリスティングの管理に追加料金はかかりません。

引用元:Analytics Hub の概要 | BigQuery | Google Cloud

BigQuery のコストとしては、パブリッシャーが BigQuery のデータセットのストレージコストを負担し、BigQuery のコンピューティングコストはサブスクライバーが負担することとなるようです。

BigQuery データセットの場合、Analytics Hub パブリッシャーは、データ ストレージに対して課金されます。

一方、サブスクライバーは、オンデマンド料金モデルまたは容量ベースの料金モデルに基づいて、共有データに対して実行されるクエリの料金を負担します。

引用元:Analytics Hub の概要 | BigQuery | Google Cloud

ネットワークについて

Analytics Hub を VPC Service Controls 上で管理できるようです。

VPC Service Controls の境界が設定されているプロジェクトのデータにパブリッシャーとサブスクライバーがアクセスするために必要な必要な上り(内向き)ルールと下り(外向き)ルールを設定できます。詳細については、Analytics Hub の VPC Service Controls のルールをご覧ください。

引用元:Analytics Hub の概要 | BigQuery | Google Cloud

パターン別に設計指針が下記のドキュメントにて紹介されいます。

image.png

引用元:Analytics Hub VPC Service Controls のルール | BigQuery | Google Cloud

ベストプラクティス

Best Practices for Data Sharing On Analytics Hub | by Thakurswati | Google Cloud - Community | Medium という記事にて下記のベストプラクティスが紹介されていました。

  1. 認可されたデータセット内でビューを共有: ビューの基となるデータセットにアクセスできるように、データセットを認可する。
  2. BigLakeテーブルとして外部テーブルを共有: 外部ストレージのアクセス権限を別途付与せずに、外部テーブルを共有する。
  3. カラムレベルのフィルタリング: ポリシータグを使って、機密カラムの共有を制限する。
  4. 行レベルのフィルタリング: 行レベルのアクセスポリシーを適用して、特定のレコードの共有を制限する。

アーキテクチャの簡易的な実証検証

実装するアーキテクチャの全体象

下記のような構成にてAnalytics Hub による Big Query 統合アーキテクチャの実装検証を実施。

image.png

検証手順とその結果

1. Publisher layer にてデータセットとテーブルを作成

データセットを作成します。

image.png

テーブルを作成しデータを挿入します。

CREATE TABLE sample_ds_01.sample_01 (
  int_col int,
  string_col STRING,
  date_col date
);

TRUNCATE TABLE sample_ds_01.sample_01;
INSERT INTO sample_ds_01.sample_01
(
  int_col,
  string_col,
  date_col
)
SELECT 1, 'aaa', CAST('2024-01-01' AS date)
UNION ALL
SELECT 2, 'bbb', CAST('2024-02-02' AS date)
UNION ALL
SELECT 3, 'ccc', CAST('2024-03-03' AS date)
;

SELECT * FROM sample_ds_01.sample_01;

image.png

2. Hub Layer にて Publsher Layer から共有を受けるエクスチェンジとリストを作成

Analytics Hub にてエクスチェンジを作成します。

image.png

Analytics Hub にて作成したエクスチェンジにリストを作成します。

image.png

image.png

3. Hub Layer にて Publsher Layer から共有されたテーブルを保持するデータセットを作成

Analytics Hub にて作成済みのリストにて+ SUBSCRIVEを選択します。

image.png

リンクデータセットを作成します。

image.png

image.png

4. Hub Layer にて Subscriber Layer に共有するデータセットを作成

BigQuery にてデータセットを作成します。

image.png

BigQuery にてデータセットを承認済みデータセットとして設定します。リンクデータセット(.bq_publisher_01_sample_ds_01_in)に対して、ビューを保持させているデータセット(bq_publisher_01__conf)を登録します。

image.png

image.png

BigQuery にてリンクデータセットのテーブルを参照したビューを作成します。

CREATE VIEW bq_publisher_01__conf.sample_01
AS
SELECT
  *
  FROM bq-hub-01.bq_publisher_01_sample_ds_01_in.sample_01
;

image.png

5. Hub Layer にて Subscriber Layer に共有するエクスチェンジとリストを作成

Analytics Hub にてエクスチェンジを作成します。

image.png

Analytics Hub にて作成したエクスチェンジにリストを作成します。

image.png

image.png

6. Subscriber Layer にて Hub Layer から共有されたデータセットを追加

Analytics Hub にて作成済みのリストにて+ SUBSCRIVEを選択します。

image.png

リンクデータセットを作成します。

image.png

テーブルのデータ参照できることを確認します。

SELECT
  *
FROM
  `bq-subscriber-01.bq_hub_01_bq_publisher_01_conf.sample_01`
LIMIT
  1000

image.png

7. データ挿入の動作確認

共有元のテーブルにレコードを挿入します。

INSERT INTO sample_ds_01.sample_01
(
  int_col,
  string_col,
  date_col
)
SELECT 4, 'ddd', CAST('2024-04-04' AS date)
;

image.png

Subscriber Layer の BigQuery にてint_col列が4`のデータが追加されていることを確認します。

SELECT
  *
FROM
  `bq-subscriber-01.bq_hub_01_bq_publisher_01_conf.sample_01`
LIMIT
  1000

image.png

構築時に検討すべきこと

  • アーキテクチャ設計
    • VPC SC の設計と構築方法
  • データ共有のルール
    • データ契約(データコントラクト)
  • 権限の付与方法
    • ロールの検討
    • Exhange に設定するか、 Listing にするか
    • 外部テーブルへの権限付与方法
      • ストレージに対する権限付与も検討するか
      • BigLake に変更するか
  • 命名規則
    • Exchange
    • Listing
    • 連携後のデータセット
    • 連携後のテーブル
  • オブジェクトへの記述内容の方針検討
    • エクスチェンジ
      • 連絡先
      • 説明
    • リスティング
      • 表示名
      • カテゴリー
      • アイコン
      • 説明
      • ドキュメンテーション
      • 主連絡先
      • アクセス要求連絡先
      • プロバイダー名
      • プロバイダー主連絡先
      • パブリッシャー名
      • パブリッシャー主連絡先
  • 機密データの特定方法
  • 監査ログの取得方法と監視方法
  • コストの監視方法
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?