如需从 AlloyDB for PostgreSQL 访问 BigQuery 数据,您可以使用 bigquery_fdw(外部数据封装容器)和 alloydb_sync 扩展程序。这些扩展程序共同提供了多种集成分析数据和运营数据的方法:实时数据访问(湖仓一体联邦)、一次性数据操作和定期同步。本文档介绍了从 AlloyDB 访问 BigQuery 数据的选项。
湖仓一体联邦
借助湖仓一体联邦,您可以直接从 AlloyDB for PostgreSQL 实时访问 BigQuery 数据,而无需移动或复制数据。为了连接这两个系统,此方法使用了 bigquery_fdw 扩展程序,可让您直接查询实时数据集。由于您直接查询源数据,因此可以从最新的可用数据中获取数据洞见,从而避免数据流水线或同步间隔带来的延迟和维护开销。
为了优化性能,AlloyDB 会将标准过滤条件和汇总下推到 BigQuery,仅将相关的预过滤结果流式传输回您的实例。如需了解详情,请参阅 AlloyDB 对 BigQuery 中实时数据的访问权限概览。
使用场景
Lakehouse 联合支持以下使用情形:
- 实时运营分析:您需要访问 BigQuery 中最新的分析数据,以便立即做出业务决策,而无需等待批处理。
- 混合事务分析处理 (HTAP):您需要运行分析,将 AlloyDB 中存储的实时“热”运营数据与 BigQuery 中存储的海量历史“冷”数据联接起来。
- 临时性和探索性数据分析:您希望立即对 BigQuery 数据运行查询,而无需构建、维护或等待复杂的提取、转换和加载 (ETL) 流水线。
- 零复制架构:您希望通过将分析数据集中在一处,同时通过 PostgreSQL 语义保持访问权限,来最大限度地降低存储费用和数据治理开销。
一次性表格同步
一次性操作是指从 BigQuery 移动或访问数据一次,而不是按持续的时间表进行。您可以使用同步表或通过导入外部表来执行一次性操作。
同步表格
您可以使用 alloydb_sync 扩展程序中的 alloydb_sync.import_bq_table() 函数执行一次性同步。此函数将数据从 BigQuery 流式传输到本地 AlloyDB 存储空间。
结果是 AlloyDB 集群中完全独立的可写入 PostgreSQL 表。由于同步表是可写入的,因此您可以自由地对本地数据执行 INSERT、UPDATE 和 DELETE 操作。如需了解详情,请参阅将 BigQuery 数据同步到 AlloyDB。
导入表格
您可以使用 bigquery_fdw 扩展程序执行一次性导入。此方法使用 IMPORT FOREIGN SCHEMA 或 CREATE FOREIGN TABLE 将 BigQuery 数据集映射到 AlloyDB。
使用 bigquery_fdw 创建的外部表是对远程 BigQuery 数据的只读引用。如需创建数据的本地副本,您可以运行 CREATE TABLE local_table AS (SELECT * FROM foreign_table) 查询。如需了解详情,请参阅将 BigQuery 数据导入 AlloyDB。
使用场景
一次性数据操作支持以下使用情形:
- 数据丰富化:将 BigQuery 中预先计算的分析输出(例如客户细分桶或机器学习预测)提取到 AlloyDB 中,以丰富您的运营数据库。
- 低延迟应用服务:提供对部分历史数据的即时访问权限,而远程查询 BigQuery 的开销或延迟是不可接受的。
- 隔离的数据修改:获取分析数据的本地副本,以便独立于源数据集进行处理、修改或编入索引(例如,使用 AlloyDB AI 生成向量嵌入)。
周期性表格同步
定期操作会按定期计划(例如,每小时或每天)刷新数据。您可以使用同步表或通过安排对导入表的查询来设置定期操作。
同步表格
您可以使用 alloydb_sync 扩展程序中的 alloydb_sync.create_bq_sync_table() 函数来建立自动刷新时间表。此函数用于配置后台工作器,以定期从 BigQuery 拉取更新后的数据并刷新本地 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 列式引擎和本地缓冲区缓存处理数据,以实现最佳查询性能,前提是您的应用可以容忍按计划更新的数据。
- 自动数据镜像:按照“一劳永逸”的计划,让您的运营应用始终获得数据仓库中的最新数据。