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

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

レイクハウス連携

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

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

ユースケース

レイクハウス連携は、次のユースケースをサポートしています。

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

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 に pull して、運用データベースを拡充します。
  • 低レイテンシのアプリケーション提供: BigQuery のリモートクエリのオーバーヘッドやレイテンシが許容できない場合に、履歴データのサブセットに即座にアクセスできるようにします。
  • 分離されたデータ変更: 分析データのローカルコピーを取得して、ソース データセットとは独立して処理、変更、インデックス作成を行います(AlloyDB AI でベクトル エンベディングを生成するなど)。

定期的なテーブル同期

定期的なオペレーションでは、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 カラム型エンジンとローカル バッファ キャッシュを使用してデータを処理し、クエリ パフォーマンスを最大化します。アプリケーションは、スケジュールに従って更新されたデータを許容できます。
  • 自動データ ミラーリング: 運用アプリケーションに、データ ウェアハウスから最新のデータを、設定して忘れることができるスケジュールで提供します。

次のステップ