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 テーブルになります。同期されたテーブルは書き込み可能であるため、ローカルデータに対して
INSERT、UPDATE、DELETE オペレーションを自由に実行できます。
詳細については、
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 クエリ(TRUNCATE や INSERT INTO ... SELECT
など)を定期的に実行して、ローカルテーブルを更新します。
同期テーブルとは異なり、このアプローチでは、pg_cron スケジュールと SQL
更新スクリプトを手動で管理する必要があります。
詳細については、
データを定期的にインポートするスケジュールを設定するをご覧ください。
ユースケース
定期的なオペレーションは、次のユースケースをサポートしています。
- 高並行処理: 数千の同時ユーザーに分析情報を提供します。AlloyDB にローカルデータを保持し、読み取りプールでスケールアウトすることで、BigQuery に固有の同時接続数の上限を回避できます。
- パフォーマンスの高速化: AlloyDB カラム型エンジンとローカル バッファ キャッシュを使用してデータを処理し、クエリ パフォーマンスを最大化します。アプリケーションは、スケジュールに従って更新されたデータを許容できます。
- 自動データ ミラーリング: 運用アプリケーションに、データ ウェアハウスから最新のデータを、設定して忘れることができるスケジュールで提供します。
次のステップ
- AlloyDB から BigQuery のライブデータをクエリする方法について学習する。
- リアルタイム データへのアクセスを構成する。
- データの同期の概要。
- BigQuery データを AlloyDB に同期する。