概要
Google Cloud 上でサイロ化(乱立)している BigQuery データを統合するためのアーキ
テクチャ案として、Analytics Hub の活用方法を下記の資料にて公開しました。この記事では下記資料を作成する際のメモを共有します。
Analytics Hub について
Analytics Hub とは
Analytics Hub とは、 BigQuery のデータセットと Pub/Sub を効率よく安全に共有するサービスです。
引用元: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
パターン別に設計指針が下記のドキュメントにて紹介されいます。
引用元:Analytics Hub VPC Service Controls のルール | BigQuery | Google Cloud
ベストプラクティス
Best Practices for Data Sharing On Analytics Hub | by Thakurswati | Google Cloud - Community | Medium という記事にて下記のベストプラクティスが紹介されていました。
- 認可されたデータセット内でビューを共有: ビューの基となるデータセットにアクセスできるように、データセットを認可する。
- BigLakeテーブルとして外部テーブルを共有: 外部ストレージのアクセス権限を別途付与せずに、外部テーブルを共有する。
- カラムレベルのフィルタリング: ポリシータグを使って、機密カラムの共有を制限する。
- 行レベルのフィルタリング: 行レベルのアクセスポリシーを適用して、特定のレコードの共有を制限する。
アーキテクチャの簡易的な実証検証
実装するアーキテクチャの全体象
下記のような構成にてAnalytics Hub による Big Query 統合アーキテクチャの実装検証を実施。
検証手順とその結果
1. Publisher layer にてデータセットとテーブルを作成
データセットを作成します。
テーブルを作成しデータを挿入します。
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;
2. Hub Layer にて Publsher Layer から共有を受けるエクスチェンジとリストを作成
Analytics Hub にてエクスチェンジを作成します。
Analytics Hub にて作成したエクスチェンジにリストを作成します。
3. Hub Layer にて Publsher Layer から共有されたテーブルを保持するデータセットを作成
Analytics Hub にて作成済みのリストにて+ SUBSCRIVE
を選択します。
リンクデータセットを作成します。
4. Hub Layer にて Subscriber Layer に共有するデータセットを作成
BigQuery にてデータセットを作成します。
BigQuery にてデータセットを承認済みデータセットとして設定します。リンクデータセット(.bq_publisher_01_sample_ds_01_in
)に対して、ビューを保持させているデータセット(bq_publisher_01__conf
)を登録します。
BigQuery にてリンクデータセットのテーブルを参照したビューを作成します。
CREATE VIEW bq_publisher_01__conf.sample_01
AS
SELECT
*
FROM bq-hub-01.bq_publisher_01_sample_ds_01_in.sample_01
;
5. Hub Layer にて Subscriber Layer に共有するエクスチェンジとリストを作成
Analytics Hub にてエクスチェンジを作成します。
Analytics Hub にて作成したエクスチェンジにリストを作成します。
6. Subscriber Layer にて Hub Layer から共有されたデータセットを追加
Analytics Hub にて作成済みのリストにて+ SUBSCRIVE
を選択します。
リンクデータセットを作成します。
テーブルのデータ参照できることを確認します。
SELECT
*
FROM
`bq-subscriber-01.bq_hub_01_bq_publisher_01_conf.sample_01`
LIMIT
1000
7. データ挿入の動作確認
共有元のテーブルにレコードを挿入します。
INSERT INTO sample_ds_01.sample_01
(
int_col,
string_col,
date_col
)
SELECT 4, 'ddd', CAST('2024-04-04' AS date)
;
Subscriber Layer の BigQuery にてint_col列が
4`のデータが追加されていることを確認します。
SELECT
*
FROM
`bq-subscriber-01.bq_hub_01_bq_publisher_01_conf.sample_01`
LIMIT
1000
構築時に検討すべきこと
- アーキテクチャ設計
- VPC SC の設計と構築方法
- データ共有のルール
- データ契約(データコントラクト)
- 権限の付与方法
- ロールの検討
- Exhange に設定するか、 Listing にするか
- 外部テーブルへの権限付与方法
- ストレージに対する権限付与も検討するか
- BigLake に変更するか
- 命名規則
- Exchange
- Listing
- 連携後のデータセット
- 連携後のテーブル
- オブジェクトへの記述内容の方針検討
- エクスチェンジ
- 連絡先
- 説明
- リスティング
- 表示名
- カテゴリー
- アイコン
- 説明
- ドキュメンテーション
- 主連絡先
- アクセス要求連絡先
- プロバイダー名
- プロバイダー主連絡先
- パブリッシャー名
- パブリッシャー主連絡先
- エクスチェンジ
- 機密データの特定方法
- Cloud DLP を利用するか(下記の記事の2. Cloud Data Loss Prevention API によるデータプロファイリングにて機密データの特定記述)
- その他のクラウドサービスで特定するか。
- 監査ログの取得方法と監視方法
- コストの監視方法