mirror of
https://github.com/PKUFlyingPig/cs-self-learning.git
synced 2026-06-24 02:16:58 +08:00
feat: Update CMU 15-445, improve overall format & update course relevant contents
This commit is contained in:
parent
c36feaca99
commit
202f9dabb3
1 changed files with 30 additions and 11 deletions
|
|
@ -3,33 +3,52 @@
|
|||
## 课程简介
|
||||
|
||||
- 所属大学:CMU
|
||||
- 先修要求:C++,数据结构与算法
|
||||
- 先修要求:C++,数据结构与算法,CMU 15-213 (A.K.A. CS:APP,这也是 CMU 内部对每年 Enroll 同学的先修要求)
|
||||
- 编程语言:C++
|
||||
- 课程难度:🌟🌟🌟🌟
|
||||
- 预计学时:100 小时
|
||||
|
||||
作为 CMU 数据库的入门课,这门课由数据库领域的大牛 Andy Pavlo 讲授(“这个世界上我只在乎两件事,一是我的老婆,二就是数据库”)。15-445 会自底向上地教你数据库系统的基本组成部分:存储、索引、查询,以及并发事务控制。
|
||||
这门课的亮点在于 CMU db 专门为此课开发了一个教学用的关系型数据库 [bustub](https://github.com/cmu-db/bustub),并要求你对这个数据库的组成部分进行修改,实现上述部件的功能。此外 bustub 作为一个 C++ 编写的中小型项目涵盖了程序构建、代码规范、单元测试等众多要求,可以作为一个优秀的开源项目学习。
|
||||
作为 CMU 数据库的入门课,这门课由数据库领域的大牛 Andy Pavlo 讲授(“这个世界上我只在乎两件事,一是我的老婆,二就是数据库”)。
|
||||
|
||||
这是一门质量极高,资源极齐全的 Database 入门课,这门课的 Faculty 和背后的 CMU Database Group 将课程对应的基础设施 (Autograder, Discord) 和课程资料 (Lectures, Notes, Homework) 完全开源,让每一个愿意学习数据库的同学都可以享受到几乎等同于 CMU 本校学生的课程体验。
|
||||
|
||||
这门课的亮点在于 CMU Database Group 专门为此课开发了一个教学用的关系型数据库 [bustub](https://github.com/cmu-db/bustub),并要求你对这个数据库的组成部分进行修改,实现上述部件的功能。
|
||||
|
||||
具体来说,在 15-445 中你需要在四个 Project 的推进中,实现一个面向磁盘的传统关系型数据库 Bustub 中的部分关键组件。
|
||||
|
||||
包括 Buffer Pool Manager (内存管理), B Plus Tree (存储引擎), Query Executors & Query Optimizer (算子们 & 优化器), Concurrency Control (并发控制),分别对应 `Project #1` 到 `Project #4`。
|
||||
|
||||
值得一提的是,同学们在实现的过程中可以通过 `shell.cpp` 编译出 `bustub-shell` 来实时地观测自己实现部件的正确与否,正反馈非常足。
|
||||
|
||||
此外 bustub 作为一个 C++ 编写的中小型项目涵盖了程序构建、代码规范、单元测试等众多要求,可以作为一个优秀的开源项目学习。
|
||||
|
||||
## 课程资源
|
||||
|
||||
- 课程网站:[Fall2019](https://15445.courses.cs.cmu.edu/fall2019/schedule.html), [Fall2020](https://15445.courses.cs.cmu.edu/fall2020/schedule.html), [Fall2021](https://15445.courses.cs.cmu.edu/fall2021/schedule.html), [Fall2022](https://15445.courses.cs.cmu.edu/fall2022/schedule.html)
|
||||
- 课程视频:课程网站免费观看
|
||||
- 课程网站:[Fall 2019](https://15445.courses.cs.cmu.edu/fall2019/schedule.html), [Fall 2020](https://15445.courses.cs.cmu.edu/fall2020/schedule.html), [Fall 2021](https://15445.courses.cs.cmu.edu/fall2021/schedule.html), [Fall 2022](https://15445.courses.cs.cmu.edu/fall2022/schedule.html), [Spring 2023](https://15445.courses.cs.cmu.edu/spring2023/schedule.html)
|
||||
- 课程视频:课程网站免费观看, Fall 2022 的 [Youtube 全开源 Lectures](https://www.youtube.com/playlist?list=PLSE8ODhjZXjaKScG3l0nuOiDTTqpfnWFf)
|
||||
- 课程教材:Database System Concepts
|
||||
- 课程作业:4 个 Project
|
||||
- 课程作业:5 个 Project 和 5 个 Homework
|
||||
|
||||
在 Fall2019 中,第二个 Project 是做哈希索引,第四个 Project 是做日志与恢复。
|
||||
在 Fall 2019 中,第二个 Project 是做哈希索引,第四个 Project 是做日志与恢复。
|
||||
|
||||
在 Fall2020 中,第二个 Project 是做 B 树,第四个 Project 是做并发控制。
|
||||
在 Fall 2020 中,第二个 Project 是做 B 树,第四个 Project 是做并发控制。
|
||||
|
||||
在 Fall2021 中,第一个 Project 是做缓存池管理,第二个 Project 是做哈希索引,第四个 Project 是做并发控制。
|
||||
在 Fall 2021 中,第一个 Project 是做缓存池管理,第二个 Project 是做哈希索引,第四个 Project 是做并发控制。
|
||||
|
||||
在 Fall2022 中,与 Fall2021 相比只有哈希索引换成了 B+ 树索引,其余都一样。
|
||||
在 Fall 2022 中,与 Fall2021 相比只有哈希索引换成了 B+ 树索引,其余都一样。
|
||||
|
||||
如果大家有精力的话可以都去尝试一下,或者在对书中内容理解不是很透彻的时候,尝试用代码写一个会加深你的理解。
|
||||
在 Spring 2023 中,大体内容和 Fall 2022 一样(缓存池,B+ 树索引,算子,并发控制),只不过 Project 0 换成了 Copy-On-Write 的 Trie,同时增加了很好玩的注册大小写函数的 Task,可以直接在编译出的 bustub-shell 中看到自己写的函数的实际效果,非常有成就感。
|
||||
|
||||
值得注意的是,现在 bustub 在 2020 年以前的 version 都已经停止维护,Fall 2019 的最后一个 Logging & Recovery 的 Project 已经 broken 了(在19年的 git head 上也许还可以跑,但尽管如此 Gradescope 应该也没有提供公共的版本,所以并不推荐大家去做,只看看代码和 Handout 就可以了),或许在 Fall 2023 的版本 Recovery 相关的功能会被修复,届时也可能有全新的 Recovery Project,让我们试目以待吧🤪
|
||||
|
||||
如果大家有精力的话可以都去尝试一下,或者在对书中内容理解不是很透彻的时候,尝试做一做对应的 Project 会加深你的理解(个人建议还是全部做完,相信一定对你有帮助)。
|
||||
|
||||
## 资源汇总
|
||||
|
||||
非官方的 [Discord](https://discord.com/invite/YF7dMCg) 是一个很好的交流平台,过往的聊天记录几乎记载了其他同学踩过的坑,你也可以提出你的问题,或者帮忙解答别人的问题,相信这是一份很好的参考。
|
||||
|
||||
关于 Spring 2023 的通关指北,可以参考 @xzhseh 的这篇[知乎文章](https://zhuanlan.zhihu.com/p/637960746),里面涵盖了全部你需要的通关道具,和通关指南,以及最重要的,我自己在做 Project 的过程中遇到的,看到的,和自己亲自踩过的坑。
|
||||
|
||||
@ysj1173886760 在学习这门课中用到的所有资源和作业实现都汇总在 [ysj1173886760/Learning: db - GitHub](https://github.com/ysj1173886760/Learning/tree/master/db) 中。
|
||||
|
||||
由于 Andy 的要求,仓库中没有 Project 的实现,只有 Homework 的 Solution。特别的,对于 Homework1,@ysj1173886760 还写了一个 Shell 脚本来帮大家执行自动判分。
|
||||
|
|
|
|||
Loading…
Reference in a new issue