写点什么

谷歌 BigQuery 提供了分布式数据跨区域 SQL 查询的预览功能

  • 2026-03-20
    北京
  • 本文字数:1257 字

    阅读完需:约 4 分钟

谷歌云(Google Cloud)近期宣布推出BigQuery全局查询(global queries)功能的预览版。这项新功能允许开发者直接对存储在不同地理区域的数据运行 SQL 查询,无需预先迁移或复制数据即可聚合结果。

 

全局查询省去了引入 ETL 管道的必要性,它会自动从各个区域获取并合并结果,这既简化了拥有分布式数据集的企业的分析流程,又能让企业控制查询的执行位置。谷歌产品经理Wawrzek Hyska与软件工程师Oleh Khoma撰文称:

在幕后,BigQuery 会自动处理执行查询所需的数据移动,为跨地域分析提供无缝、零 ETL 的使用体验。BigQuery 会识别查询中需在不同区域执行的组成部分并分别运行,然后,这些子查询的结果会传输至主查询的执行位置(同时会进行优化以最小化传输的数据量)。最终所有的组成部分合并后返回完整的查询结果。

 

例如,开发者可通过标准 SQL 查询,将欧洲和亚洲的交易数据与美国的客户数据合并分析。此前,在 BigQuery 中,需先通过 ETL 管道复制并集中数据,再运行 SQL 语句才能实现类似效果,而现在的查询引擎可以直接跨不同区域的数据执行查询,让数据分析更简单、更高效。

SET @@location = 'US';WITH transactions AS (  SELECT customer_id, transaction_amount FROM `eu_transactions.sales_2024`  UNION ALL  SELECT customer_id, transaction_amount FROM `asia_transactions.sales_2024`)SELECT  c.customer_name,  SUM(t.transaction_amount) AS total_salesFROM  hq_customers.customer_list AS c  LEFT JOIN transactions AS t  ON c.id = t.customer_idGROUP BY  c.customer_nameORDER BY  total_sales DESC;
复制代码

 

由于跨区域数据传输需要时间,全局查询的延迟要高于单区域查询。此外,该新功能会带来额外成本与挑战,并且法规甚至可能禁止数据离开原始的存储位置,因此开发者必须显式启用该功能,即指定全局查询的执行位置。这一功能让数据工程师可控制数据的处理位置,以符合其数据驻留与合规性的要求。Hyska 和 Khoma 补充说:

核心差异在于,BigQuery 如今可以对跨数千英里的数据集执行查询。这不仅能大幅简化你的架构,还能加速洞察数据生成的速度。

 

并不是只有谷歌云提供通过单条 SQL 语句查询分布式数据的能力。例如,亚马逊云科技为 Amazon Redshift 提供了跨区域数据共享,Athena 也可跨区域查询数据,但是二者均无法像 BigQuery 全局查询那样自动协调跨区域的分布式执行。

 

要启用全局查询,数据工程师需更新项目或组织配置。在查询执行区域将enable_global_queries_execution设为 true,在数据存储区域将enable_global_queries_data_access设为 true。查询可在一个项目中运行,访问另一个项目不同区域的数据,并且不会使用任何缓存(这样可以避免跨区域数据传输)。

 

全局查询的成本包含远程区域中每个子查询的计算成本(按当地定价)、主查询执行区域的最终查询计算成本、跨区域数据复制的成本(按数据复制定价)、复制的数据在主区域存储 8 小时的存储成本。

 

该新功能目前还处于预览阶段。

 

查看英文原文: Google BigQuery Previews Cross-Region SQL Queries for Distributed Data