目录

MoonJoinPlanKit

面向 MoonBit 的轻量级 Join 顺序规划与代价估算基础库。

MoonJoinPlanKit 解决的是查询系统里一个很具体、但很有工程价值的问题:当多个表或数据集合需要关联时,应该先关联哪两个,怎样减少中间结果,怎样把代价估算过程解释清楚。它不做 SQL 解析,也不做数据执行,而是为 MoonBit 生态里的查询工具、CSV/日志分析器、教学数据库、可视化解释器提供可复用的优化器核心。

适用场景

  • MoonBit 查询引擎、SQL 子集或 CSV 分析工具的 Join 规划层。
  • 数据可视化工具中展示 Join 顺序和中间结果规模。
  • 教学数据库中演示选择率、基数估计和代价模型。
  • 轻量级日志分析、嵌入式分析场景中的启发式规划。

核心能力

  • 表统计信息:RelationStats
  • 谓词选择率:PredicateStats
  • 目录与校验:Catalog
  • 标准/内存敏感代价模型:CostModel
  • 左深树规划:plan_left_deep
  • 贪心 Join 顺序规划:plan_greedy
  • 文本解释:JoinPlan::explain
  • JSON 导出:JoinPlan::to_json

最小示例

let catalog = @joinplan.star_schema_catalog()
let plan = @joinplan.plan_greedy(
  catalog,
  @joinplan.star_schema_names(),
  @joinplan.CostModel::standard(),
)
println(plan.explain())

运行

moon check --target all
moon test --target wasm
moon test --target wasm-gc
moon run cmd/main

与已有项目的区别

MoonJoinPlanKit 不是 ORM、不是 DataFrame、不是数据库执行器。它专注于“Join 顺序规划、基数估算、代价解释”这一层,让上层系统可以复用规划能力,而不是每个项目都重新写一套临时代价判断。

项目边界

当前不负责 SQL 解析、索引管理、真实 Join 执行、存储访问和事务控制。后续可以扩展 bushy plan、动态规划枚举、多目标代价模型和计划可视化导出。

关于
179.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号