Skip to main content

Module federation

Module federation 

Source
Expand description

跨库联邦查询(Phase 5)

核心难点:Mongo 的 $lookup 与 SQL 的 JOIN 都只能在同一数据源内, 跨源无法下推为一条命令。故本模块把一条 GQL 拆成:

  plan_federated  → 各源命令序列 + join 边(纯逻辑,无 IO)
  Host            → 逐源执行(Mongo 原生 / SQL translate→exec)
  merge_federated → 内存哈希 join + 嵌套还原
  Host            → prepare_query / strip_query(与单库同一套尾处理)

契约(对齐执行文档第七节):

  • postprocess 与单库 plan_query 的 postprocess 同形状({ast, inject}), 从而直接复用 crate::command::finalize_query / strip_query,无第二套实现;
  • sources[].source 只取自 Registry 的 schema datasource 名(缺省 default), 禁止 Host 自造名;
  • 跨源关系必须能确定 cardinality(one / many),否则早失败;
  • 无法安全下推的组合一律进 degraded + warning,绝不静默产生错误结果。

子模块划分:

  • [plan]:拆源(哪些关系同源可下推、哪些跨源要拆成 join 边)
  • [merge]:按 join 边做内存哈希 join 与数组/对象还原

Constants§

FEDERATION_VERSION
契约版本:形状变更必须升版并附迁移说明
MAX_FEDERATION_ROWS
单源取数结果行数上限(内存 join 前的护栏)

Functions§

merge_federated
合并各源结果 → 嵌套文档数组
plan_federated
生成联邦计划(纯逻辑)