阅读时间:1 分钟
0 字
Runtime 与语义查询
Runtime 把模型化请求转换为受权限和资源预算约束的执行计划。它不是简单的 DSL 到 SQL 转换器,也不允许调用方提交任意 SQL。
内部组件
| 组件 | 职责 |
|---|---|
| Schema Resolver | 按租户、本体和版本加载已发布快照。 |
| Entity Resolver | 解析实体身份、属性、数据绑定和实例生命周期。 |
| Relation Resolver | 解析关系方向、基数、遍历深度和跨源身份映射。 |
| Semantic Planner | 生成 Scan、Filter、Join、Traverse、Aggregate、Project 等逻辑计划。 |
| Policy Rewriter | 把实例、字段和关系约束写入逻辑计划。 |
| Physical Planner | 根据连接器能力、统计、缓存和成本选择物理路径。 |
| Execution Coordinator | 管理并发、超时、预算、重试、结果合并和部分失败。 |
请求处理
- 入口验证身份并传递租户、主体、模型版本、
traceId和用途上下文。 - Runtime 加载已发布模型,解析目标实体、属性、关系和过滤条件。
- Policy 返回允许、拒绝及约束条件;Runtime 把约束改写为查询谓词或字段投影。
- Semantic Planner 生成逻辑计划,Physical Planner 选择连接器、下推、缓存或物化路径。
- Execution Coordinator 执行并合并结果,记录实际步骤和数据新鲜度。
- 响应返回模型版本、来源摘要、读取时间、策略决策引用和
traceId。
跨源执行
过滤、排序、聚合和分页应尽量下推到可信连接器。不能安全下推权限谓词时,Runtime 必须选择受控的本地过滤、缩小候选集或拒绝请求。
跨源 Join 首期只允许有界执行:至少一侧需要主键或受限集合,设置最大扫描量、结果行数、关系深度、超时和内存预算。超预算请求在执行前拒绝,并返回稳定错误码和建议缩小条件。
一致性与错误语义
跨源查询通常没有全局快照。结果应包含各来源读取时间和新鲜度;部分来源失败时,默认不返回看似完整的结果。允许部分结果的接口必须由调用方显式请求,并逐项标注缺失来源和错误。
错误至少分为:请求无效、模型版本不存在、无权限、资源预算超限、连接器不可用、源端超时、数据质量失败和内部执行失败。是否可重试由错误契约明确,不能依赖错误文本判断。
缓存
模型缓存、策略缓存和数据结果缓存分别管理。缓存键必须包含租户、模型版本和影响结果的授权上下文;敏感结果禁止跨主体复用。发布、策略变更、数据变更和凭据轮换需要触发对应失效策略。