AlloyDB から BigQuery データにアクセスする方法を選択する

AlloyDB for PostgreSQL から BigQuery データにアクセスするには、bigquery_fdw(外部データラッパー)拡張機能と alloydb_sync 拡張機能を使用します。これらの拡張機能は、分析データと運用データを統合するための方法(リアルタイム データアクセス(レイクハウス フェデレーション)、1 回限りのデータ オペレーション、定期的な同期)を提供します。このドキュメントでは、AlloyDB から BigQuery データにアクセスするためのオプションについて説明します。

レイクハウスの連携

Lakehouse Federation を使用すると、データを移動または複製することなく、AlloyDB for PostgreSQL から BigQuery データにリアルタイムでアクセスできます。この 2 つのシステムを橋渡しするために、このメソッドでは bigquery_fdw 拡張機能を使用します。これにより、ライブ データセットをその場でクエリできます。ソースデータを直接クエリするため、データ パイプラインや同期間隔のレイテンシやメンテナンスのオーバーヘッドを回避して、利用可能な最新のデータから分析情報を取得できます。

パフォーマンスを最適化するため、AlloyDB は標準のフィルタと集計を BigQuery にプッシュダウンし、関連する事前フィルタリングされた結果のみをインスタンスにストリーミングします。詳細については、BigQuery のリアルタイム データへの AlloyDB アクセスの概要をご覧ください。

ユースケース

Lakehouse 連携は、次のユースケースをサポートしています。

  • リアルタイムの運用分析: バッチ処理を待たずに、BigQuery で利用可能な最新の分析データにアクセスして、ビジネス上の意思決定を即座に行う必要があります。
  • ハイブリッド トランザクション分析処理(HTAP): AlloyDB にあるライブの「ホット」な運用データと、BigQuery に保存されている大量の「コールド」な履歴データを結合する分析を実行する必要があります。
  • アドホック データ分析と探索的データ分析: 複雑な ETL(抽出、変換、読み込み)パイプラインを構築、維持、待機することなく、BigQuery データに対してすぐにクエリを実行したい場合。
  • ゼロコピー アーキテクチャ: 分析データを一元管理し、PostgreSQL セマンティクスによるアクセスを維持することで、ストレージ費用とデータ ガバナンスのオーバーヘッドを最小限に抑えたい。

1 回限りのテーブル同期

1 回限りのオペレーションでは、継続的なスケジュールではなく、BigQuery からデータを 1 回移動またはアクセスします。同期テーブルを使用するか、外部テーブルをインポートすることで、1 回限りのオペレーションを実行できます。

テーブルを同期する

alloydb_sync 拡張機能の alloydb_sync.import_bq_table() 関数を使用して、1 回限りの同期を実行できます。この関数は、BigQuery からローカル AlloyDB ストレージにデータをストリーミングします。

結果として、AlloyDB クラスタに完全に独立した書き込み可能な PostgreSQL テーブルが作成されます。同期されたテーブルは書き込み可能であるため、ローカルデータに対して INSERTUPDATEDELETE のオペレーションを自由に実行できます。詳細については、BigQuery データを AlloyDB に同期するをご覧ください。

テーブルをインポートする

bigquery_fdw 拡張機能を使用して、1 回限りのインポートを実行できます。このメソッドは、IMPORT FOREIGN SCHEMA または CREATE FOREIGN TABLE を使用して BigQuery データセットを AlloyDB にマッピングします。

bigquery_fdw で作成された外部テーブルは、リモート BigQuery データへの読み取り専用の参照です。データのローカルコピーを作成するには、CREATE TABLE local_table AS (SELECT * FROM foreign_table) クエリを実行します。詳細については、BigQuery データを AlloyDB にインポートするをご覧ください。

ユースケース

1 回限りのデータ オペレーションは、次のユースケースをサポートしています。

  • データ拡充: BigQuery から AlloyDB に事前計算された分析出力(顧客セグメンテーション バケットや ML 予測など)をプルして、運用データベースを拡充します。
  • 低レイテンシのアプリケーション サービング: BigQuery をリモートでクエリするオーバーヘッドやレイテンシが許容できない場合に、過去のデータのサブセットに即時アクセスを提供します。
  • 分離されたデータ変更: 分析データのローカルコピーを取得して、ソース データセットとは独立して処理、変更、インデックス登録を行います(AlloyDB AI でベクトル エンベディングを生成するなど)。

周期表の同期

定期的なオペレーションは、1 時間ごとや 1 日ごとなどの定期的なスケジュールでデータを更新します。同期テーブルを使用するか、インポートされたテーブルでクエリをスケジュール設定することで、定期的なオペレーションを設定できます。

テーブルを同期する

alloydb_sync 拡張機能の alloydb_sync.create_bq_sync_table() 関数を使用して、自動更新スケジュールを設定できます。この関数は、更新されたデータを BigQuery から定期的に pull し、ローカルの AlloyDB テーブルを更新してソースをミラーリングするようにバックグラウンド ワーカーを構成します。

alloydb_sync で作成された定期的な同期テーブルは、管理対象の読み取り専用テーブルです。これにより、データの完全性が確保され、アプリケーションはローカルでデータを高パフォーマンスでクエリし、読み取りプール間で水平方向にスケーリングできます。詳細については、BigQuery データを AlloyDB に同期するデータ同期の概要をご覧ください。

テーブルをインポートする

bigquery_fdw 拡張機能と PostgreSQL pg_cron 拡張機能を組み合わせることで、定期的なインポートを設定できます。このアプローチでは、bigquery_fdw は読み取り専用の外部テーブル定義を提供し、pg_cron は SQL クエリ(TRUNCATEINSERT INTO ... SELECT など、またはテーブルの再作成)を定期的に実行してローカル テーブルを更新します。

同期テーブルとは異なり、この方法では pg_cron スケジュールと SQL 更新スクリプトを手動で管理する必要があります。詳細については、データを定期的にインポートするスケジュールを設定するをご覧ください。

ユースケース

定期的なオペレーションは、次のユースケースをサポートしています。

  • 同時実行性の高いサービング: 数千人の同時ユーザーに分析情報を配信します。AlloyDB でローカルデータを維持し、読み取りプールでスケールアウトすることで、BigQuery に固有の同時接続制限を回避できます。
  • パフォーマンスの高速化: AlloyDB カラム型エンジンとローカル バッファ キャッシュを使用してデータを処理し、クエリ パフォーマンスを最大化します。アプリケーションがスケジュールに従って更新されたデータを許容できる場合に適しています。
  • 自動データ ミラーリング: 設定したスケジュールで、データ ウェアハウスから運用アプリケーションに最新のデータを供給します。

次のステップ