如何使用 BigQuery Omni 联合查询 Cloud SQL 与 AWS RDS?

解读

这道题表面问“跨云联合查询”,实则考察候选人是否理解 BigQuery Omni 的跨云联邦能力边界Cloud SQL 与 AWS RDS 在连接模型上的差异 以及 国内网络合规与数据出境限制。面试官希望听到你能在 不搬数据、不违反中国数据主权规定 的前提下,给出可落地的技术路径,而不是简单背诵文档。

知识点

  1. BigQuery Omni 运行位置:目前国内仅通过 Google Cloud 中国站(vpc.googleapis.cn) 提供控制面,计算层仍运行在 海外区域(如 aws-us-east-1),因此直接扫描国内 Cloud SQL 实例会触碰 数据出境合规红线
  2. Cloud SQL 连接方式:支持 Private Service Connect(PSC)Cloud SQL Auth Proxy,但两者均无法被海外 Omni 计算层直接路由。
  3. AWS RDS 连接方式:依赖 AWS VPC Endpoint + VPC peering;同样受限于国内 跨境专线审批
  4. 联邦查询前提:BigQuery Omni 要求 目标库必须开启外部连接(External Connection) 并绑定 Cloud SQL 或 RDS 的 Private IP,且 IP 必须在 Omni 支持的子网范围内
  5. 合规替代方案:国内场景下,必须 先把数据脱敏或匿名化后,复制到海外区域,再建立 BigQuery Omni 外部连接 做联邦查询;或者 放弃 Omni,改用 Dataflow 跨境同步 + BigQuery 联邦视图

答案

在国内合规框架下,无法直接 用 BigQuery Omni 实时联合查询位于中国区域的 Cloud SQL 与 AWS RDS。可落地的三步方案如下:

  1. 数据脱敏与跨境复制
    使用 Dataflow 模板 “JdbcToBigQuery” 在中国区域运行,先把 Cloud SQL(MySQL/PostgreSQL)与 AWS RDS 的 脱敏后数据 分别 批量导出到 GCS 中国双可用区存储桶,再通过 跨境专线(如阿里云高速通道或 AWS 直连) 复制到 GCS US multi-region
  2. 海外区域建立外部连接
    BigQuery US 区域 创建 Cloud SQL 外部连接(PostgreSQL 引擎)AWS RDS 外部连接(MySQL 引擎),绑定 海外 Private IP;此时 Omni 计算层可路由到这两个端点。
  3. 联邦查询与性能调优
    使用 EXTERNAL_QUERY() 函数分别下发谓词下推的 SQL,例如:
    SELECT *
    FROM EXTERNAL_QUERY("projects/proj-us/locations/aws-us-east-1/connections/rds-mysql-conn",
                       "SELECT customer_id, SUM(amount) FROM orders WHERE dt >= CURDATE() - INTERVAL 7 DAY") aws
    JOIN
    EXTERNAL_QUERY("projects/proj-us/locations/us-central1/connections/cloudsql-pg-conn",
                       "SELECT customer_id, loyalty_score FROM loyalty WHERE status = 'VIP'") gcp
    USING (customer_id);
    
    通过 最大并行度(max_parallelism)谓词下推提示(_REMOTE_EXTERNAL_QUERY_HINT) 减少跨云网络往返,单次查询延迟可压到 3~5 秒

拓展思考

如果面试官追问“能否不做数据复制,只做实时联邦?”,可回答:
在中国区域目前做不到;若业务对实时性要求极高,可改用 Cloud SQL 的 PostgreSQL 14+ 逻辑解码 + Datastream 私有连接 把变更实时同步到 海外 BigQuery,再与 RDS 做 海外 Omni 联邦,整体端到端延迟 <10 秒,但仍需 完成数据出境安全评估。”