Victor's Code Journey
Victor's Code Journey

系列 - Trino & Presto

从零开始读懂 Trino 的源码。

这个系列跟着一条真实查询的生命周期走:环境准备 → 架构总览 → Airlight 基础框架 → 服务启动 → 查询提交 → 语法树解析 → 执行计划生成 → 查询调度 → Task 执行 → 内存管理,最后是 SPI 扩展与自定义函数。

适合已经有分布式查询引擎基础的读者。每一篇都接着上一篇往下读,中间不跳步——Trino 的启动、编译和执行三条线是分头铺开又在执行计划处交汇的,单独看某篇容易断掉上下文。

第 13 篇《SPI & Plugin》尚未写完,先在目录里占个位。

#篇目这一篇讲什么
01Trino源码学习-准备工作读源码前的环境、分支与依赖准备
02Trino源码学习-架构Overview协调节点、Worker 与查询生命周期——Trino 的整体架构
03Trino源码学习-基础框架AirliftAirlift:用 Java 构建 REST 服务的轻量级框架
04Trino源码学习-Airlift源码分析Airlift 里如何用 Guice 做依赖注入与管理服务生命周期
05Trino源码学习-Trino启动从启动流程看 Trino 是怎么起来的
06Trino源码学习-查询提交查询从客户端提交到进入系统的完整链路
07Trino源码学习-Page数据结构查询执行过程中底层的数据结构长什么样
08Trino源码学习-执行计划生成逻辑执行计划是怎么构建出来的
09Trino源码学习-SQL语法树解析SQL 文本解析成语法树的两段式流程
10Trino源码学习-查询调度逻辑计划如何被切分、调度到各个 Worker
11Trino源码学习-TASK执行Task 在 Worker 侧的具体执行过程
12Trino源码学习-内存管理Trino 的两块内存管理机制
13Trino源码学习-SPI&Plugin(未完待续)用 SPI 与 Plugin 体系扩展 Trino 的扩展点
14Trino源码学习-自定义函数实现并注册一个自定义函数的完整过程
15Trino Sql优化:Removing redundant ORDER BY去掉不影响结果却拖慢查询的冗余 ORDER BY
16Presto/Trino 中 0.5 引发的精度谜团:Decimal 隐式类型推导与 MySQL 差异Decimal 字面量的隐式类型推导,让 bigint 运算走上另一条路