跨源 SQL 与执行计划指南

联邦查询:跨数据库统一查询的架构、执行与验证

从一条逻辑查询出发,理解它如何被解析、拆分、下推和跨源连接,并通过实际计划、来源遥测与控制查询证明结果正确。

更新于 2026 年 8 月 14 日阅读约 22 分钟InfiniSynapse
联邦查询把一条逻辑计划拆分为多个来源子计划,执行筛选与聚合下推后组合跨源结果并返回验证证据
本页目录
  1. 什么是联邦查询?
  2. 从客户端到来源的联邦查询架构
  3. 联邦查询如何逐步工作
  4. 使用实际计划验证联邦查询下推
  5. 控制跨源连接与数据移动
  6. 示例:跨源查询订单收入与可售库存
  7. 如何验收一条联邦查询
  8. 使用 InfiniSynapse 执行获准的多来源分析
  9. 联邦查询常见问题
  10. 官方来源与核验说明

什么是联邦查询?

联邦查询是一条逻辑查询,其执行计划读取两个或更多分别管理的数据源,并在查询时组合选定结果。联邦查询引擎解析来源对象,通过连接器转换类型与操作,把安全工作下推到各来源,执行剩余连接或聚合,再返回带执行和来源证据的统一结果。

该术语描述查询行为,并不代表统一产品契约。一个引擎可能连接数据仓库表与业务数据库;另一个可能查询对象存储和远程目录;某云服务则只能通过托管连接器访问特定外部来源。连接器、来源、版本、区域、身份、网络、类型、操作符、配额和事务支持都必须逐项验证。

Trino提供一种具体模型:目录配置连接器,协调器解析和规划,工作节点通过连接器读取数据,阶段、任务、分片、操作符和交换共同执行分布式计划。Athena、BigQuery、Redshift和PostgreSQL外部数据包装器则具有不同边界。它们的官方文档是实现证据,并不能证明所有联邦查询引擎行为相同。

搜索意图边界:联邦查询是一种查询执行行为,不自动意味着数据完全不复制、所有连接器能力一致、跨源事务成立,或任意 SQL 都能下推。具体行为必须按引擎、版本、连接器、来源、区域、身份路径与运算符逐项核验。

从客户端到来源的联邦查询架构

客户端与会话上下文

提供查询文本、身份、角色、用途、语言环境、时区、资源类别、截止时间和结果预期。

目录与连接器登记

把逻辑名称映射到端点、凭据、所有者、Schema、类型、函数、统计、限制、健康和带版本能力。

解析器、分析器与策略门禁

解析对象和字段,检查语法与类型,应用策略,并拒绝无法保持所需语义或授权的操作。

优化器与规划器

依据可用证据选择连接顺序、执行位置、下推、分区、交换、内存、溢写、并发和回退。

工作节点与来源适配器

执行连接器专属请求,流式传输受限数据,规范返回类型,传播取消,并暴露来源错误。

组合与证据

执行剩余连接或聚合,并返回来源证明、观察时间、警告、覆盖、计划身份、行数、字节、时序和审计关联。

这些是职责,并非必须对应独立产品。云服务可能把它们组合起来;自管引擎可能分离控制面、协调器、工作节点、目录和密钥管理;嵌入式外部数据机制则可能把规划放在现有数据库内部。应评估每项职责位于何处以及由谁运营。

对查询使用者而言,这些组件最重要的产物不是一张架构图,而是一份可检查的计划和结果证据:逻辑对象解析到哪个来源、哪些操作远程执行、哪些数据跨网络移动、哪些权限被应用、观察时间是什么,以及失败时返回完整、部分还是拒绝结果。

联邦查询如何逐步工作

  1. 绑定身份与意图。 验证调用者,并附加用途、角色、资源类别、截止时间、时区、结果策略和会话设置。
  2. 解析与定位。 把查询文本转换为逻辑计划,并解析每个目录、Schema、表、列、类型、函数和策略。
  3. 分析能力。 比较所需操作与连接器和来源支持情况;显式拒绝差异或执行补偿。
  4. 优化执行位置。 使用统计、选择性、位置、传输成本、来源负载、内存、并发和截止时间选择下推及连接顺序。
  5. 生成来源子计划。 把获批片段转换为来源原生请求,并限制列、谓词、聚合、行数、参数和标识符。
  6. 执行与交换。 运行远端和本地阶段,流式或暂存结果,执行预算,传播取消,并避免不安全的无界重试。
  7. 连接、聚合与规范化。 执行剩余操作,同时保留类型、空值、精度、排序规则、时间、来源证明和已声明的不完整结果策略。
  8. 返回结果与证据。 暴露计划身份、下推与本地操作、来源状态、行数、字节、时序、警告、观察时间、策略决定和审计关联。

生产系统还应为每个阶段保留关联标识,使客户端请求、协调器计划、连接器调用、来源查询、交换阶段、结果集和审计事件能够串联。没有这种关联时,团队很难解释一条查询为何突然变慢、扫描量为何上升,或某个数字来自哪个来源快照。

使用实际计划验证联邦查询下推

下推把选定工作发送到来源,从而减少跨网络数据量和协调器剩余工作。常见形式包括谓词、投影、嵌套字段解引用、聚合、连接、限制和Top-N下推。只有当转换后的操作在语义上安全,且来源能在保护范围内执行时,下推才有价值。

计划证据

捕获规范化计划与物理计划。识别远程扫描、筛选、投影、聚合、连接、限制、交换、重分区、本地操作、估计和选定连接器。

运行时证据

将计划与来源日志及遥测核对:提交文本或参数、扫描与返回行数、传输字节、读取分区、时长、连接、内存、溢写、取消和错误。

不能因为两张表使用同一种连接器就假设连接已下推。某些引擎要求相同目录、兼容类型、可转换谓词、可信统计和连接器专属支持。下推连接也可能扩大行数;执行位置必须依据实际基数和传输证据验证。

失败规则:如果必需筛选、授权谓词、时间边界、精度规则或行数限制无法保持,应拒绝查询或使用获批替代方案。静默执行不同操作不是优化。

下推是否真实发生的核验清单
检查对象应看到的证据常见误判
谓词下推远程请求包含等价筛选;来源扫描和返回行数明显下降查询文本有 WHERE 就认为来源已经过滤
投影下推来源只读取和返回需要的列或嵌套字段最终结果列少,却仍在远程扫描整行
聚合下推计划的来源阶段执行聚合,网络传输的是有边界结果协调器在接收原始行后才聚合
连接下推连接器与来源支持该连接,计划中本地 Join 消失或范围明确两张表使用同类数据库就假设一定下推
限制与 Top-N来源原生请求执行等价顺序、限制和空值规则语义不一致时仍把远程前 N 当作全局前 N

控制跨源连接与数据移动

跨源连接是许多看似成功原型失败的地方。规划器必须决定哪一侧在远端筛选或聚合、移动哪一侧、是否广播小关系、是否重分区数据流,以及是否允许获批临时暂存或缓存。错误决定可能扫描业务表、占满链路、耗尽协调器内存、溢写敏感数据或错过截止时间。

连接位置决策证据
因素所需证据缺失风险
基数与选择性最新行数、值分布、筛选选择性、倾斜和空值率错误构建侧、网络膨胀或内存耗尽
键语义类型、规范化、唯一性、排序、填充、大小写和重复规则错误匹配、漏匹配或重复倍增
位置与传输区域、路由、带宽、出口、加密、数据分类和暂存许可意外成本、策略违规或错过截止时间
来源范围并发、扫描、CPU、I/O、超时、锁、只读副本和维护限制生产来源降级或级联重试

当重复连接持续移动同一批大数据时,物化获批模型可能更安全、更经济。联邦并不是“不复制”的道德偏好;它只是一个执行选择,必须将其移动、保留、新鲜度、安全、成本和可靠性与替代方案比较。

跨源连接还必须先验证键语义。检查字符填充、大小写、排序规则、数值精度、时区、空值、历史键、一对多和重复规则;否则查询计划可能性能良好,却因错误匹配、漏匹配或重复倍增返回错误业务答案。匹配覆盖率和连接前后行数应成为验收指标。

示例:跨源查询订单收入与可售库存

以下数字为方法示意,不代表真实客户或产品性能。某团队需要按商品查看近七天已支付收入与当前可售库存:订单在云数仓,库存位于业务数据库,商品主数据来自第三个来源。团队先定义商品键、订单时间、币种、退款状态、库存观察时间和授权范围。

理想计划把日期、支付状态和获准商品范围下推到订单来源,把库存聚合到商品粒度,只移动两个有边界结果,再与小型商品映射连接。验收记录每个来源的原生请求、扫描与返回行数、传输字节、连接前后行数、未匹配商品、观察时间以及是否使用缓存。

测试还覆盖库存来源变慢、字段类型改变、商品键重复、权限移除部分商品、查询取消和某来源不可用。如果完整性是硬性要求,任一关键来源失败就关闭失败;若业务允许部分结果,页面必须明确标注缺失来源、覆盖率和禁止执行的下游决策。

如何验收一条联邦查询

  1. 建立来源控制结果。在每个来源运行获批的原生查询,冻结观察时间和测试数据,保存预期行数、聚合值与边界样本。
  2. 检查逻辑与物理计划。确认对象解析、来源选择、下推、连接顺序、交换、分区、内存、溢写与限制符合设计。
  3. 核对运行时遥测。比较计划与来源日志,记录扫描行数、返回行数、字节、分区、连接、时长、取消、重试和错误。
  4. 验证结果语义。核对类型、精度、空值、时区、排序规则、重复、未匹配键、授权子集和来源观察时间。
  5. 注入故障与变化。测试慢源、不可用、模式变化、过期统计、并发、超时、取消、缓存和大中间结果。
  6. 设置发布门禁。定义完整或部分结果规则、差异容差、来源负载预算、回滚、负责人和复测条件。

不要只做“查询返回成功”测试。联邦查询的失败可以表现为正确性变化、来源过载、权限扩大、旧缓存、部分结果或成本失控,而不一定表现为 SQL 错误。

使用 InfiniSynapse 执行获准的多来源分析

InfiniSynapse 公开产品定位包含对受支持数据库的直接连接和多来源联合分析,因此在实际任务是获准跨源分析时可作为相关入口。开始前可先阅读数据联邦实施指南联邦数据治理指南,准备来源范围、权限和验证要求。

本页不声称每个 InfiniSynapse 连接都实现通用联邦 SQL、任意跨源连接、所有连接器下推、分布式事务、来源身份委派、完整 EXPLAIN 或本文全部能力。使用前应确认当前可见来源、支持的工作流与产品文档。

打开应用前,请准备已确认支持的连接、数据所有者批准、最小权限凭据、获批表与字段、连接键和粒度、时间与新鲜度规则、来源控制查询、预期结果大小以及来源负载限制。

在明确查询边界内分析获批来源

确认来源支持、授权、语义、新鲜度、核对方法和工作负载限制后,再进入多来源联合分析。

分析获批数据来源

联邦查询常见问题

什么是联邦查询?

联邦查询是一条逻辑查询,其执行计划读取两个或更多分别管理的数据源,并在查询时组合选定结果。查询引擎解析来源对象,通过连接器转换类型与操作,把安全工作下推到来源,执行剩余连接或聚合,再返回带来源与执行证据的统一结果。

联邦查询如何工作?

引擎绑定身份与会话上下文,解析查询,定位目录与对象,检查策略与连接器能力,选择执行位置与连接顺序,生成来源原生子计划,运行远端和本地阶段,规范返回类型,组合结果,再返回来源证明、观察时间、警告、覆盖、计划身份、行数、字节和时序。

联邦查询会复制数据吗?

它不要求在查询前把每个来源数据集复制到一个永久存储中,但数据仍可能跨网络传输,并被交换、缓冲、溢写、暂存、缓存、记录或返回。每种中间工件都需要明确的授权、加密、保留、失效、删除、来源证明和新鲜度规则。

联邦中的查询下推是什么?

下推把连接来源支持的谓词、投影、聚合、连接、限制或Top-N等操作委派给来源执行,可以减少传输和协调器工作。但支持情况会因连接器、来源、版本、表达式与查询形状而异。必须检查实际EXPLAIN计划与来源日志,不能从功能标签推断。

一个联邦查询来源失败时会发生什么?

应遵循已声明结果策略。来源必需或部分数据可能不安全时关闭式失败;仅在策略与使用者允许时返回明确标记的部分结果;或使用带可见观察时间与覆盖的获批有边界缓存或物化回退。截止时间与取消必须限制下游来源工作。

何时应物化数据而不是使用联邦查询?

当重复高容量扫描、稳定共享历史、可预测延迟、严格可用性、统一语义、来源隔离或重复重连接的重要性高于实时访问时,应优先物化、复制或集中式集成。混合方案可以物化历史或昂贵组件,同时保持小型当前维度实时,但必须明确时间、覆盖、优先级和回滚。

怎样知道筛选或聚合真的被下推了?

查看实际执行计划与来源原生请求,并核对来源扫描行数、返回行数和网络传输量。SQL 中出现筛选或聚合并不能证明连接器已经把它交给来源执行。

联邦查询失败时可以返回部分结果吗?

取决于预先定义的决策规则。部分结果必须明确标出缺失来源、观察时间、覆盖率、所用缓存和禁止执行的下游动作;要求完整性的指标应关闭失败,不能把部分总计伪装成完整答案。

官方来源与核验说明