複雑なパイプラインを構築せずに運用データとともに分析データのリアルタイム クエリを実行するには、AlloyDB for PostgreSQL でレイクハウス フェデレーションを使用します。bigquery_fdw 拡張機能を利用して、AlloyDB はクエリを BigQuery に転送し、BigLake 外部テーブルを介して Apache Iceberg などのライブデータとオープン フォーマットにアクセスします。これにより、複雑な ETL(抽出、変換、読み込み)移行が不要になります。
レイクハウス フェデレーションのメリット
レイクハウス フェデレーション アプローチには、次の利点があります。
- Zero ETL: 複雑なパイプラインを構築または維持することなく、分析データを直接クエリします。
- 使い慣れた構文: 標準の PostgreSQL 構文を使用して BigQuery データをクエリします。
- リアルタイムの分析情報: 運用テーブルとともに最新のデータにアクセスできます。
- コンピューティングのオフロード: プッシュダウン最適化により、BigQuery 分散エンジンを使用して重い処理を行います。
- 承認されたアクセス: 承認されたサービス アカウントのみが外部データをクエリできるようにするには、Identity and Access Management(IAM)を使用してアクセス制御を一元管理します。
ユースケース
レイクハウスの連携は、次のビジネス ユースケースと技術ユースケースをサポートしています。
- ハイブリッド トランザクション処理と分析処理(HTAP)ワークロード: トランザクション パフォーマンスに影響を与えることなく、AlloyDB のリアルタイム運用データと、BigQuery または Cloud Storage の履歴データまたは分析データを同時にクエリできます。
- 脆弱なパイプラインなしでリアルタイムの分析情報を取得: 従来の ETL プロセスのレイテンシと障害モードを回避できます。最新の分析データに瞬時にアクセスし、最新の情報に基づいてビジネス上の意思決定を行うことができます。
- エージェント ワークフローのデータ具体化: 外部分析データを AlloyDB に具体化して、AlloyDB カラム型エンジンと AlloyDB AI の機能を使用できます。これにより、フェデレーション データで高パフォーマンスのベクトル検索、ML エンベディング、高度な AI 主導のエージェント ワークフローが可能になります。
アーキテクチャとデータフロー
次の図は、レイクハウス フェデレーションを使用する場合のデータフローとコンポーネントの相互作用を示しています。
次に、AlloyDB の Lakehouse 連携のデータフロー プロセスについて説明します。
- クエリの送信: 標準の PostgreSQL クエリを AlloyDB インスタンスに送信します。
- クエリのプランニングと最適化: AlloyDB クエリ プランナーは、BigQuery 外部データラッパー(FDW)を使用して、外部 BigQuery データセットにマッピングされているテーブルを特定します。
- プッシュダウン最適化: AlloyDB は、特定のフィルタと集計を BigQuery に直接プッシュダウンすることで、クエリを最適化します。これにより、ネットワークは関連するフィルタリングされた行または事前集計された要約のみを転送します。
- 実行と取得: BigQuery はクエリの一部を実行します。BigQuery 組み込みストレージを直接スキャンするか、Cloud Storage に保存されている Apache Iceberg テーブルを読み取り、結果のデータセットを AlloyDB にストリーミングします。
- 最終処理とレスポンス: AlloyDB は外部データをローカルの運用テーブルと結合し、残りのクエリ処理を完了して、最終結果をアプリケーションに返します。
連携クエリのデータ型の考慮事項
レイクハウス フェデレーションを使用して AlloyDB から外部 BigQuery テーブルをクエリすると、AlloyDB クエリ プランナーは BigQuery データ型を対応する PostgreSQL データ型として解釈します。これらのマッピングを理解することは、正しいクエリを作成し、bigquery_fdw 拡張機能で使用される外部テーブル定義を作成するうえで重要です。
BigQuery データ型に直接マッピングがない場合や、特別な処理が必要な場合は、クエリ内で明示的な CAST 関数を使用するか、互換性のある型でデータを表示する BigQuery のビューを作成する必要があります。
サポートされているデータ型と対応する PostgreSQL 型の一覧については、データ型のマッピングをご覧ください。
セキュリティとアクセス制御
AlloyDB から BigQuery データへのアクセスは、IAM を介して管理されます。クエリ可能なデータセットとテーブルを定義するには、AlloyDB クラスタ サービス アカウントに特定の IAM ロールを付与する必要があります。これにより、セキュリティを損なうことなく、組織の一元化されたデータ ガバナンス ポリシーにフェデレーション クエリが準拠していることを確認できます。詳細については、必要なロールをご覧ください。
プッシュダウン
フィルタと集計のプッシュダウン手法を使用すると、AlloyDB でデータが移動または処理される前に BigQuery でデータをフィルタリングまたは集計することで、クエリを高速化し、コストを削減できます。このアプローチでは、ネットワーク トラフィックとメモリ使用量が最小限に抑えられ、リソースの制限を超えずに大規模なデータセットを迅速かつ効率的に分析できます。
フィルタ プッシュダウン
フィルタ プッシュダウン(述語プッシュダウンとも呼ばれます)は、AlloyDB から BigQuery にクエリフィルタ(WHERE 句を使用)を移動することで、データ フィルタリングをストレージ レイヤにできるだけ近づける最適化手法です。
フィルタ プッシュダウンを使用すると、WHERE 句を含む SQL クエリを使用して、リモート テーブルからデータのサブセットにアクセスできます。このデータは、ローカル テーブルで具体化することも、PostgreSQL テーブルにローカル パーティションとして添付することもできます。
フィルタ プッシュダウンでサポートされているオペレーションは次のとおりです。
- 標準の比較演算子:
=、<、>、<=、>=、<> - 論理演算子:
AND、OR、NOT - パターン マッチング:
LIKEとNOT LIKE - NULL チェック:
IS NULLとIS NOT NULL - リスト内評価:
IN、NOT IN
集計プッシュダウン
集計プッシュダウンは、SUM、COUNT、AVG、GROUP BY などの計算をストレージ レイヤにできるだけ近い場所で実行する高度なデータベース最適化です。このプッシュダウンは、BigQuery で集計関数を直接評価するため、AlloyDB に返される行数を大幅に削減できます。
集計プッシュダウンでサポートされているオペレーションは次のとおりです。
SUMCOUNTAVGMINMAX
BigQuery の費用と請求
BigQuery 外部データラッパーは次のものに依存します。
- BigQuery コンピューティングの料金
- BigQuery Storage API の料金
詳細については、BigQuery の料金をご覧ください。
制限事項
- AlloyDB と BigQuery では照合順序が異なる場合があり、その結果、2 つのシステム間でデータの順序が異なることがあります。BigQuery でリモート実行されるクエリの部分については、照合順序は BigQuery の設定に従います。
- プッシュダウン後に BigQuery から大量のデータを返すクエリは最適化されません。