TL;DR
CMU 15-445/645 是 Andy Pavlo 教授主讲的数据库系统课程,覆盖缓冲池、索引(B+Tree)、查询优化、MVCC、分布式事务等核心主题。本文梳理完整学习路径。
课程概况
| 项目 | 说明 |
|---|---|
| 课程主页 | 15445.courses.cs.cmu.edu |
| 视频 | YouTube “CMU Database Group” 频道 |
| 教授 | Andy Pavlo |
| 难度 | 研究生级别,适合有操作系统基础 |
核心模块
1. 存储引擎(Lectures 3-6)
- 缓冲池管理:Clock 算法 vs LRU-K
- 页面布局:Slotted Pages、日志结构存储
- Project #1:实现一个 Buffer Pool Manager
2. 索引(Lectures 7-10)
- B+Tree:插入、删除、合并、分裂
- Hash 索引:Extendible Hashing、Linear Hashing
- Project #2:实现 B+Tree 索引
3. 查询引擎(Lectures 11-14)
- 查询优化:RBO → CBO,Selinger 优化器
- 执行模型:火山模型、向量化、JIT
- Project #3:实现查询执行器(Join、Aggregation)
4. 事务与并发(Lectures 15-18)
- MVCC:时间戳排序、OCC
- 两阶段锁:死锁检测、层次锁
- Project #4:实现两阶段锁和 MVCC
学习建议
- 先看 Lecture 1-2 了解课程全景和 C++ 前置
- 每个模块:看视频 → 读对应论文 → 做 Project
- 不要跳过论文:课程引用大量经典论文(ARIES、Raft、Spanner)
- 做 Project 时参考 BusTub 测试,不要只看功能描述
配套资源
| 资源 | 链接 |
|---|---|
| BusTub 源码 | github.com/cmu-db/bustub |
| 课件 PDF | 课程主页下载 |
| 中文笔记 | GitHub 上多个中文笔记仓库 |
| Discord | CMU Database Group Discord |
推荐进阶课程
完成 15-445 后可继续:
- CMU 15-721:高级数据库系统(列存、JIT 编译、HTAP)
- CMU 15-826:多媒体数据库与数据挖掘
总结
CMU 15-445 是数据库内核学习的标杆课程。跟着做完全部 4 个 Project,你将写出一个完整的磁盘型关系数据库引擎。