CodePie

从零实现 SQL 数据库

从词法分析到查询执行,构建一个支持 SQL 语法的关系型数据库。涵盖 Lexer 词法分析、Parser 语法解析、执行引擎、B+ 树索引、事务与 WAL 等核心主题。

Go / Rust / Java / C++43 章中等难度2 章免费

章节目录

用最简单的 SQL 搭建数据库整体架构1-9
01

架构总览免费

了解 SQL 数据库的基础概念,从全局视角理解课程中实现的 SQL 数据库架构:SQL 文本 → Lexer → Parser → AST → 执行计划 → 存储引擎,了解各模块的职责与交互方式。

入门
02

环境搭建免费

安装 Go / Rust / Java / C++ 开发环境,获取课程代码仓库,熟悉项目结构和构建测试命令,为动手编码做好准备。

入门
03

解析器 Lexer 实现

实现 SQL 词法分析器,将 SQL 文本拆解为 Token 序列。识别关键字、标识符、数字、字符串、运算符等各类 Token,为后续语法解析打基础。

中等
04

解析器 Parser 实现

实现递归下降语法解析器,将 Token 序列转换为 AST。支持 SELECT、INSERT、CREATE TABLE 等语句的解析,构建结构化的语法树表示。

中等
05

Planner 实现

实现查询计划器,将 AST 转换为可执行的查询计划。设计逻辑计划节点,处理 SELECT、INSERT、CREATE TABLE 等语句的执行策略。

中等
06

执行器定义

定义执行引擎的核心接口和数据结构。设计 Executor trait/接口,实现基于迭代器模型的执行框架,为后续各类算子的实现打下基础。

中等
07

SQL 引擎定义

定义 SQL Engine 的整体架构,将 Lexer、Parser、Planner、Executor 串联为完整的执行链路,实现从 SQL 文本到查询结果的端到端流程。

中等
08

内存存储引擎

定义底层 KV 存储引擎抽象接口(set/get/delete/scan/scan_prefix),实现基于有序数据结构的内存存储引擎 MemoryEngine,支持范围扫描和前缀扫描。

中等
09

基础 SQL 运行

将各模块串联起来,实现 CREATE TABLE、INSERT、SELECT 等基础 SQL 语句的端到端执行。实现二进制编码、KVTransaction、Executor,完成从 SQL 文本到存储引擎的完整链路。

中等
磁盘存储引擎10-13
10

磁盘存储模型概述即将上线

介绍磁盘存储引擎的整体设计,理解页式存储、B+ 树索引等核心概念。

中等
11

存储引擎基础方法即将上线

实现磁盘存储引擎的基础读写方法,包括数据序列化、页面管理等。

中等
12

存储引擎启动、清理即将上线

实现存储引擎的启动恢复和数据清理逻辑,确保数据持久化的正确性。

中等
13

存储引擎迭代器、测试即将上线

实现存储引擎的迭代器接口,编写完整的单元测试验证存储引擎的正确性。

中等
MVCC 事务14-18
14

MVCC 事务概述即将上线

介绍多版本并发控制(MVCC)的基本原理,理解事务隔离级别与快照读。

进阶
15

开启事务、写数据即将上线

实现事务的开启逻辑和写入路径,支持事务内的数据修改。

进阶
16

事务提交、回滚,读数据即将上线

实现事务的提交与回滚机制,支持基于快照的数据读取。

进阶
17

事务 key 编码即将上线

设计并实现事务版本号与 Key 的编码方案,支持多版本数据的高效存储与检索。

进阶
18

事务迭代器、测试即将上线

实现事务感知的迭代器,编写事务相关的完整测试用例。

进阶
基础 SQL 完善19-21
19

Update 语句实现即将上线

实现 SQL UPDATE 语句的解析与执行,支持条件更新。

中等
20

Delete 语句实现即将上线

实现 SQL DELETE 语句的解析与执行,支持条件删除。

中等
21

基础 DML 测试即将上线

为 INSERT、UPDATE、DELETE 等 DML 语句编写完整的集成测试。

中等
交互式命令行22-27
22

Tokio 快速入门即将上线

学习 Rust 异步运行时 Tokio 的基础用法,为网络通信做准备。

中等
23

Server 端实现即将上线

基于 Tokio 实现数据库服务端,支持客户端连接和 SQL 请求处理。

中等
24

Client 端实现即将上线

实现数据库客户端,支持连接服务端并发送 SQL 语句。

中等
25

命令行完善即将上线

完善交互式命令行体验,支持历史记录、自动补全等功能。

入门
26

Table 命令完善即将上线

实现 SHOW TABLES、DESCRIBE 等表管理命令。

入门
27

事务命令完善即将上线

实现 BEGIN、COMMIT、ROLLBACK 等事务管理命令。

中等
进阶 SQL 完善28-43
28

Order By 排序语句即将上线

实现 ORDER BY 子句,支持单列和多列排序,升序与降序。

中等
29

Limit 和 Offset 语句即将上线

实现 LIMIT 和 OFFSET 子句,支持分页查询。

入门
30

Projection 投影即将上线

实现 SELECT 投影操作,支持列选择和表达式计算。

中等
31

Cross Join 语句即将上线

实现笛卡尔积 Cross Join,为后续各类 Join 打下基础。

中等
32

Inner 和 Outer Join即将上线

实现 Inner Join、Left/Right Outer Join,支持多表关联查询。

进阶
33

Agg 聚集函数即将上线

实现 COUNT、SUM、AVG、MIN、MAX 等聚集函数。

中等
34

Group By 语句即将上线

实现 GROUP BY 分组查询,配合聚集函数进行分组统计。

中等
35

Filter 过滤即将上线

实现 WHERE 和 HAVING 过滤条件,支持复杂的布尔表达式。

中等
36

索引支持即将上线

实现 CREATE INDEX 语句,为表添加 B+ 树索引支持。

进阶
37

查询索引优化即将上线

在查询计划中利用索引加速数据检索,优化全表扫描。

进阶
38

主键查询优化即将上线

针对主键查询进行专项优化,实现 O(1) 级别的点查。

中等
39

哈希 Join 优化即将上线

实现 Hash Join 算法,优化大表之间的等值连接性能。

进阶
40

SQL 执行计划即将上线

实现 EXPLAIN 语句,展示 SQL 的查询执行计划,辅助性能调优。

中等
41

删除表实现即将上线

实现 DROP TABLE 语句,支持表的完整删除与资源回收。

入门
42

表达式计算即将上线

完善 SQL 表达式求值引擎,支持算术运算、字符串操作、类型转换等。

中等
43

结语即将上线

课程总结与回顾,梳理整个 SQL 数据库的架构全貌,展望后续优化方向。

入门