前言
为了让更多的人快速入门数据内核研发,以实施tpch基准测试为入口,探索快速实现单机事务数据库内核的方法。 围绕这一目的,编写了较完整的数据内核系统,并完成tpch基准测试得出正确结果。 本文结合代码着重介绍数据库内核具体实现方案。而对数据库一般基本原理按需介绍。 整体含两部分内容:计算引擎,存储引擎。 计算引擎围绕生成plan和执行plan的主题,介绍了语义分析、优化器、执行器等具体实现方法。 存储引擎围绕读写数据的主题,介绍了内存数据组织、事务MVCC、索引、checkpoint等具体实施方案。 与其他数据库内核教学方案相比,有显著的优势:
- 单一任务。围绕tpch任务,实现内核方案。
- 目标具体。仅支持tpch 22条query 需要的数据类型、函数、算子等
- 选择关键算法的依据:清晰、直观、透明。不为追求极致性能,牺牲算法的易读性。
- 准工业化。参考duckdb的工业级方案,简化实现。
- 体系完整。涵盖计算引擎、存储引擎的经典内容。
- 实战性强。基于本文和代码,实现属于自己的数据库。
- 对于初级学习者。在数据库内核的完整性和需要的知识储备之间取得平衡。
- 对于进阶学习者。以此为基础进一步研读duckdb的生产级源码设计,甚至二次开发。
- 配套代码。 https://github.com/daviszhen/plan
目录 第一部分 计算引擎
bind TODO
子查询展开 TODO
生成plan TODO
优化plan TODO
chunk框架 TODO
执行plan TODO
第二部分 存储引擎
append数据 TODO
update数据 TODO
delete数据 TODO
读数据与MVCC TODO
索引 TODO
catalog TODO
stats TODO