diff --git a/docs/好书推荐.md b/docs/好书推荐.md index 7b63033c..0937ab5e 100644 --- a/docs/好书推荐.md +++ b/docs/好书推荐.md @@ -69,6 +69,7 @@ - Database System Concepts - [Architecture of a Database System](https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf) +- [Readings in Database Systems, 5th Edition](http://www.redbook.io/) ## 计算机图形学 diff --git a/docs/数据库系统/CS122.md b/docs/数据库系统/CS122.md new file mode 100644 index 00000000..e0d12ec4 --- /dev/null +++ b/docs/数据库系统/CS122.md @@ -0,0 +1,38 @@ +# Caltech CS 122: Database System Implementation + +## 课程简介 + +- 所属大学:Caltech +- 先修要求:无 +- 编程语言:Java +- 课程难度:🌟🌟🌟🌟🌟 +- 预计学时:150 小时 + +加州理工的这门课,不同于没有提供 SQL 层功能的 CMU15-445 课程。CS122 课程 Lab 的侧重点在于 SQL 层的相关实现,涉及查询优化器的各个模块,比如SQL的解析,Translate,如何实现 Join,统计信息以及代价估计,子查询实现,Agg,Group By 的实现等。除此之外,还有 B+树,WAL 相关实验。本门课程适合在学完 CMU15-445 课程之后,对查询优化相关内容有兴趣的同学。 + +下面介绍一下这门课的前 3 个 Assignment 也就是实验 Lab 所要实现的功能: + +### Assignment1: +- 为 NanoDB 提供 delete,update 语句的支持。 +- 为 Buffer Pool Manager 添加合适的 pin/unpin 代码。 +- 提升 insert 语句的性能, 同时不使数据库文件大小过分膨胀。 + +### Assignment2: +- 实现一个简单的计划生成器,将各种已经 Parser 过的 SQL 语句转化为可执行的执行计划。 +- 使用 nested-loop join 算法,实现支持 inner- and outer-join 的 Join 计划节点。 +- 添加一些单元测试, 保证 inner- and outer-join 功能实现正确。 + +### Assignment3: +- 完成收集表的统计信息。 +- 完成各种计划节点的计划成本计算。 +- 计算可出现在执行计划中的各种谓词的选择性。 +- 根据谓词更新计划节点输出的元组统计信息。 + +剩余 Assignment 和 Challenges 可以查看课程介绍,推荐使用 IDEA 打开工程,Maven 构建,注意日志相关配置。 + +## 课程资源 + +- 课程网站: +- 课程代码: +- 课程教材:无 +- 课程作业:7 Assignments + 2 Challenges \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 65b07b6b..8a4f6170 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -141,6 +141,7 @@ nav: - 数据库系统: - "UCB CS186: Introduction to Database System": "数据库系统/CS186.md" - "CMU 15-445: Database Systems": "数据库系统/15445.md" + - "Caltech CS122: Database System Implementation": "数据库系统/CS122.md" - 编译原理: - "Stanford CS143: Compilers": "编译原理/CS143.md" - 计算机图形学: