cs-self-learning/docs/数据库系统/CS122.md

41 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Caltech CS 122: Database System Implementation
## 课程简介
- 所属大学Caltech
- 先修要求:无
- 编程语言Java
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时150 小时
加州理工的这门课,不同于没有提供 SQL 层功能的 CMU15-445 课程。CS122 课程 Lab 的侧重点在于 SQL 层的相关实现涉及查询优化器的各个模块比如SQL的解析Translate如何实现 Join统计信息以及代价估计子查询实现AggGroup By 的实现等。除此之外,还有 B+树WAL 相关实验。本门课程适合在学完 CMU15-445 课程之后,对查询优化相关内容有兴趣的同学。
下面介绍一下这门课的前 3 个 Assignment 也就是实验 Lab 所要实现的功能:
### Assignment1
- 为 NanoDB 提供 deleteupdate 语句的支持。
- 为 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 构建,注意日志相关配置。
## 课程资源
- 课程网站:<http://courses.cms.caltech.edu/cs122/>
- 课程代码:<https://gitlab.caltech.edu/cs122-19wi>
- 课程教材:无
- 课程作业7 Assignments + 2 Challenges