Cmu15445 实现单机数据库

Cmu15445 课程介绍
大纲
简单介绍下 cmu15445 的教学大纲,该课以 Database System Concepts 为辅助教材, 讲述了数据库管理系统(DBMS)设计和实现的方方面面,包括:
- 数据模型(关系型,文档型,键值型)
- 存储模型(n-ary,decomposition,可以理解为行式、列式)
- 查询语言(sql,存储过程 stored procedures)
- 存储结构(heaps,基于日志 log-structured)
- 索引设计(排序树,哈希表)
- 事务处理(ACID,并发控制)
- 数据恢复(日志、快照)
- 执行引擎(joins,排序,聚集,优化)
- 并发架构(多核,分布式)
可以看出,内容十分翔实,课程使用一个开源的商业数据库作为案例进行讲解,以深入探讨数据库设计时,在上述各个方面进行取舍的过程。代码实验。
计划
这次学习目标主要以实验为主,兼顾看点讲义和教科书。视频暂时就随缘了,不然战线会拉很长,导致最后都搞不完。一共有五个实验:
- 环境准备:C++ Primer
- 缓冲控制:Buffer Pool Manager
- B+ 树索引:B+Tree Index
- 查询引擎:Query Execution
- 并发控制:Concurrency Control
五个实验组成了一个用于教学的简单的关系型数据库 —— BusTub。 实验方式基本都是实现一些规定的接口,跑通写好的测试用例。需要说明的是,代码中给的测试用例十分简单,基本只测试了一些主干路径,因此跑过了测试用例并不一定说明你代码写的没问题,这就要求在实现的过程中务必理解实验各个接口的关系、可以进行取舍实现的要点。为了达到此目的,当自己做完并跑过测试用例后,可以在网上找一些前人实现的材料,对比学习。
初步打算,除了第一个环境准备外,每个实验做完之后写一篇总结,探讨一些实现中遇到的问题和有趣的地方。
资料
课程本身相关的资料都可以去课程网站上寻找,我计划做 fall2020 年的实验,但视频似乎只有 2019 年的。
在实现过程中如果遇到比较好的博客或者资料,我会逐渐补充到这里。