从词法分析到查询执行,构建一个支持 SQL 语法的关系型数据库。涵盖 Lexer 词法分析、Parser 语法解析、执行引擎、B+ 树索引、事务与 WAL 等核心主题。
了解 SQL 数据库的基础概念,从全局视角理解课程中实现的 SQL 数据库架构:SQL 文本 → Lexer → Parser → AST → 执行计划 → 存储引擎,了解各模块的职责与交互方式。
安装 Go / Rust / Java / C++ 开发环境,获取课程代码仓库,熟悉项目结构和构建测试命令,为动手编码做好准备。
实现 SQL 词法分析器,将 SQL 文本拆解为 Token 序列。识别关键字、标识符、数字、字符串、运算符等各类 Token,为后续语法解析打基础。
实现递归下降语法解析器,将 Token 序列转换为 AST。支持 SELECT、INSERT、CREATE TABLE 等语句的解析,构建结构化的语法树表示。
实现查询计划器,将 AST 转换为可执行的查询计划。设计逻辑计划节点,处理 SELECT、INSERT、CREATE TABLE 等语句的执行策略。
定义执行引擎的核心接口和数据结构。设计 Executor trait/接口,实现基于迭代器模型的执行框架,为后续各类算子的实现打下基础。
定义 SQL Engine 的整体架构,将 Lexer、Parser、Planner、Executor 串联为完整的执行链路,实现从 SQL 文本到查询结果的端到端流程。
定义底层 KV 存储引擎抽象接口(set/get/delete/scan/scan_prefix),实现基于有序数据结构的内存存储引擎 MemoryEngine,支持范围扫描和前缀扫描。
将各模块串联起来,实现 CREATE TABLE、INSERT、SELECT 等基础 SQL 语句的端到端执行。实现二进制编码、KVTransaction、Executor,完成从 SQL 文本到存储引擎的完整链路。
介绍磁盘存储引擎的整体设计,理解页式存储、B+ 树索引等核心概念。
实现磁盘存储引擎的基础读写方法,包括数据序列化、页面管理等。
实现存储引擎的启动恢复和数据清理逻辑,确保数据持久化的正确性。
实现存储引擎的迭代器接口,编写完整的单元测试验证存储引擎的正确性。
介绍多版本并发控制(MVCC)的基本原理,理解事务隔离级别与快照读。
实现事务的开启逻辑和写入路径,支持事务内的数据修改。
实现事务的提交与回滚机制,支持基于快照的数据读取。
设计并实现事务版本号与 Key 的编码方案,支持多版本数据的高效存储与检索。
实现事务感知的迭代器,编写事务相关的完整测试用例。
实现 SQL UPDATE 语句的解析与执行,支持条件更新。
实现 SQL DELETE 语句的解析与执行,支持条件删除。
为 INSERT、UPDATE、DELETE 等 DML 语句编写完整的集成测试。
学习 Rust 异步运行时 Tokio 的基础用法,为网络通信做准备。
基于 Tokio 实现数据库服务端,支持客户端连接和 SQL 请求处理。
实现数据库客户端,支持连接服务端并发送 SQL 语句。
完善交互式命令行体验,支持历史记录、自动补全等功能。
实现 SHOW TABLES、DESCRIBE 等表管理命令。
实现 BEGIN、COMMIT、ROLLBACK 等事务管理命令。
实现 ORDER BY 子句,支持单列和多列排序,升序与降序。
实现 LIMIT 和 OFFSET 子句,支持分页查询。
实现 SELECT 投影操作,支持列选择和表达式计算。
实现笛卡尔积 Cross Join,为后续各类 Join 打下基础。
实现 Inner Join、Left/Right Outer Join,支持多表关联查询。
实现 COUNT、SUM、AVG、MIN、MAX 等聚集函数。
实现 GROUP BY 分组查询,配合聚集函数进行分组统计。
实现 WHERE 和 HAVING 过滤条件,支持复杂的布尔表达式。
实现 CREATE INDEX 语句,为表添加 B+ 树索引支持。
在查询计划中利用索引加速数据检索,优化全表扫描。
针对主键查询进行专项优化,实现 O(1) 级别的点查。
实现 Hash Join 算法,优化大表之间的等值连接性能。
实现 EXPLAIN 语句,展示 SQL 的查询执行计划,辅助性能调优。
实现 DROP TABLE 语句,支持表的完整删除与资源回收。
完善 SQL 表达式求值引擎,支持算术运算、字符串操作、类型转换等。
课程总结与回顾,梳理整个 SQL 数据库的架构全貌,展望后续优化方向。