# CMU 15-445: Database Systems ## 课程简介 - 所属大学:CMU - 先修要求:C++,数据结构与算法 - 编程语言:C++ - 课程难度:🌟🌟🌟🌟 - 预计学时:100小时 作为CMU数据库的入门课,这门课由数据库领域的大牛 Andy Pavlo讲授(“这个世界上我只在乎两件事,一是我的老婆,二就是数据库”)。15-445会自底向上地教你数据库系统的基本组成部分:存储、索引、查询,以及并发事务控制。 这门课的亮点在于CMU db专门为此课开发了一个教学用的关系型数据库[bustub](https://github.com/cmu-db/bustub),并要求你对这个数据库的组成部分进行修改,实现上述部件的功能。此外 bustub作为一个C++编写的中小型项目涵盖了程序构建、代码规范、单元测试等众多要求,可以作为一个优秀的开源项目学习。 ## 课程资源 - [课程网站(Fall2019)](https://15445.courses.cs.cmu.edu/fall2019/schedule.html), [课程网站(Fall2020)](https://15445.courses.cs.cmu.edu/fall2020/schedule.html#) - 课程视频:课程网站免费观看 - 课程教材:Database System Concepts - 课程作业:4个Project 在Fall2019中,第二个project是做哈希索引,第四个project是做日志与恢复 在Fall2020中,第二个project是做B树,第四个project是做并发控制 如果大家有精力的话可以都去尝试一下,或者在对书中内容理解不是很透彻的时候,尝试用代码写一个会加深你的理解。 我在学习这门课中用到的所有资源和作业实现都汇总在[这个Github仓库](https://github.com/ysj1173886760/Learning/tree/master/db)中。 由于Andy的要求,仓库中没有project的实现,只有homework的solution。特别的,对于homework1,我还写了一个shell脚本来帮大家执行自动判分 另外在课程结束后,我十分推荐阅读一篇论文[Architecture Of a Database System](https://github.com/ysj1173886760/paper_notes/tree/master/db),对应的中文版我上传到了链接中的仓库。论文里综述了数据库系统的整体架构,让大家可以对数据库有一个更加全面的视野。 ## 后续课程 [CMU15-721](https://15721.courses.cs.cmu.edu/spring2020/) 主要讲主存数据库有关的内容,每节课都有对应的paper要读,推荐给希望进阶数据库的小伙伴 我目前也在跟进这门课,完成后会在这里提PR以提供进阶的指导