JQuick-SQL 模块架构:从 SQL AST 到分布式执行

JQuick-SQL 模块架构:从 SQL AST 到分布式执行

Meta 描述:梳理 jquick-sql 的 core、parser、plan、proto、query、runtime 六个模块,理解 Java SQL 查询引擎的真实处理边界。

标签:jquick-sql 架构、SQL AST、逻辑计划、物理计划、Coordinator Worker、Java SQL 查询引擎

官网示例:

前言

理解模块边界,才能在数据中台中正确扩展 jquick-sql,而不把 SQL 语法、计划优化和执行调度混在一起。该项目通过六个 Maven 模块串起 SQL 的完整处理链。

六个模块的职责

  • jquick-sql-core:配置、枚举、数据源管理、统计与工具类。
  • jquick-sql-parser:词法/语法分析、AST 节点、Visitor 与 JQuickSQLExecutor。
  • jquick-sql-plan:AST→逻辑计划、优化规则、逻辑→物理计划。
  • jquick-sql-proto:执行层的 Protobuf 与 gRPC 定义。
  • jquick-sql-query:Fragmenter、Coordinator、Worker、分区和表达式执行。
  • jquick-sql-runtime:JQuickSQL 门面、XML 动态代理、函数 SPI 与 DTD。

计划如何流转

text 复制代码
SQL → Parser/AST → Logical Plan → Optimizer → Physical Plan
    → Fragmenter → Coordinator → Worker → JQuickDataSet

逻辑优化器包含谓词下推、投影下推、Join 重排序、常量折叠等规则;随后物理计划被切分为 Fragment,通过 Coordinator-Worker 模型执行。

代码入口示例

java 复制代码
import com.github.paohaijiao.executor.JQuickSQLExecutor;
import com.github.paohaijiao.ast.JQuickQueryNode;

JQuickQueryNode ast = new JQuickSQLExecutor().execute(
    "SELECT dept, COUNT(*) FROM emp GROUP BY dept"
);
System.out.println(ast);

只需要 SQL 审计或语句结构分析时,可停留在 Parser/AST 层;需要执行已注册数据集时,再使用 Runtime 门面。

设计边界

jquick-sql 是轻量级 SQL 引擎,不是 JDBC 数据访问框架。异构数据源联邦查询需要先经接入组件形成数据集,再由 Query/Runtime 层统一计划和执行。这样可避免把驱动、连接管理和 SQL 计划耦合到同一模块。

常见问题

**业务服务应该直接依赖所有模块吗?**一般引入 runtime 即可。

**SQL 优化发生在哪里?**主要在 jquick-sql-plan。

**Worker 负责解析字符串吗?**Worker 接收片段计划并执行,解析入口在 Parser/Runtime 侧。

总结与拓展

模块化架构让团队能按"语法---计划---执行"分层定位问题,也能更安全地扩展 Java 跨库查询的数据接入链路。

Core Advantage

Clear separation between syntax analysis, planning, transport, and execution.

Applicable Scenarios

Custom query engines, SQL governance, embedded analytics, and distributed execution experiments.

相关推荐
zhengfei6111 小时前
Go-fastdfs /reload 未授权访问: 有效PoC
数据库·sql
严肃小白兔2 小时前
Cloudflare Durable Objects 支持自动重试:分布式调用如何避免重复执行?
分布式
leo在掘金3 小时前
25.5k Star 的 DeepInfer 怎么扛住3万亿参数
后端·架构
大维3 小时前
DBX 实测:从 SQLite 查询到 MiniMax-M3 自然语言生成 SQL
数据库·sql·sqlite
Linye3 小时前
为什么让 AI 修个小 Bug 却把底层全重写了?聊聊 Coding Agent 的最小修改边界
人工智能·架构
王中阳Go3 小时前
你那条三跳链路的单跳超时,是按压测的 p95 定的,还是拍出来的?
人工智能·后端·架构
方方洛3 小时前
ray教程-27-附录F-RayClient与runtime_env与多语言
人工智能·分布式·机器学习
ting94520004 小时前
Databox MCP Connectors 技术深度解析:协议架构、集成原理与企业落地实践
人工智能·架构
景煜拾年5 小时前
InnoAI SQL 助手
运维·数据库·笔记·sql
微订校园外卖系统15 小时前
校园外卖多站点管理能做吗?三层权限与对账架构
架构·外卖系统·本地生活·微订