Skip to content

Latest commit

 

History

History
56 lines (35 loc) · 1.88 KB

快速实现数据库内核.md

File metadata and controls

56 lines (35 loc) · 1.88 KB

前言

为了让更多的人快速入门数据内核研发,以实施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