截屏2023-05-31 18.50.35.png

UCB CS186: Introduction to Database System

课程简介

  • 所属大学:UC Berkeley
  • 先修要求:CS61A, CS61B, CS61C
  • 编程语言:Java

如何编写 SQL 查询?SQL 命令是如何被一步步拆解、优化、转变为一个个磁盘查询指令的?如何实现高并发的数据库?如何实现数据库的故障恢复?什么又是非关系型数据库?这门课会带你深入理解关系型数据库的内部细节,并在掌握理论知识之后,动手用 Java 实现一个支持 SQL 并发查询、B+ 树 Index 和故障恢复的关系型数据库。

从实用角度来说,这门课还会在编程作业中锻炼你编写 SQL 查询以及 NoSQL 查询的能力,对于构建一些全栈的工程项目很有帮助。

课程资源

CMU 15-445: Database Systems

课程简介

  • 所属大学:CMU
  • 先修要求:C++,数据结构与算法
  • 编程语言:C++

作为 CMU 数据库的入门课,这门课由数据库领域的大牛 Andy Pavlo 讲授(“这个世界上我只在乎两件事,一是我的老婆,二就是数据库”)。15-445 会自底向上地教你数据库系统的基本组成部分:存储、索引、查询,以及并发事务控制。 这门课的亮点在于 CMU db 专门为此课开发了一个教学用的关系型数据库 bustub,并要求你对这个数据库的组成部分进行修改,实现上述部件的功能。此外 bustub 作为一个 C++ 编写的中小型项目涵盖了程序构建、代码规范、单元测试等众多要求,可以作为一个优秀的开源项目学习。

课程资源

在 Fall2019 中,第二个 Project 是做哈希索引,第四个 Project 是做日志与恢复。

在 Fall2020 中,第二个 Project 是做 B 树,第四个 Project 是做并发控制。

在 Fall2021 中,第一个 Project 是做缓存池管理,第二个 Project 是做哈希索引,第四个 Project 是做并发控制。

在 Fall2022 中,与 Fall2021 相比只有哈希索引换成了 B+ 树索引,其余都一样。

如果大家有精力的话可以都去尝试一下,或者在对书中内容理解不是很透彻的时候,尝试用代码写一个会加深你的理解。

Caltech CS 122: Database System Implementation

课程简介

  • 所属大学:Caltech
  • 先修要求:无
  • 编程语言:Java

加州理工的这门课,不同于没有提供 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 构建,注意日志相关配置。

课程资源

Stanford CS 346: Database System Implementation

课程简介

  • 所属大学:Stanford
  • 先修要求:无
  • 编程语言:C++

RedBase 是 cs346 的一个项目,实现了一个简易的数据库系统,项目是高度结构化的。整个项目能够被分为以下几个部分(同时也是 4 个需要完善的 lab):

  1. The record management component:记录管理组件。
  2. The index component:B+ 索引管理。
  3. The System Management Component:ddl语句、命令行工具、数据加载命令、元数据管理。
  4. The Query Language Component:在这个部分需要实现 RQL Redbase 查询语言。RQL 要实现 select、insert、delete、update 语句。
  5. Extension Component:除了上述数据库系统的基本功能组件,还需要实现一个扩展组件,可以是 Blob 类型、 网络模块、连接算法、CBO 优化器、OLAP、事务等。

RedBase 适合在学完 CMU-15445 后继续学习数据库系统中的其他组件,因为其代码量不多,可以方便的根据需要扩展代码。同时代码完全由 C++ 编写,也可以用于练习 C++ 编程技巧。

课程资源

CMU 15-799: Special Topics in Database Systems

课程简介

  • 所属大学:CMU
  • 先修要求:CMU 15-445
  • 编程语言:C++

这门课目前只开了两次:fall2013 和 spring2022,讨论了数据库领域的一些前沿主题。fall2013 讨论了 Streaming、Graph DB、NVM 等,spring2022 主要讨论 Self-Driving DBMS,都提供有相关论文。

spring2022 版课程任务:

任务一:基于 PostgreSQL 进行手动性能调优;

任务二:基于 NoisePage Pilot 改进 Self-Driving DBMS,不限特性。

授课更贴近讲座的形式,编程任务较少。对一般同学可以开拓一下视野,对专精数据库的同学可能帮助较大。

课程资源

标签: cs, cs自学, cs自学指南, 自学cs, cs自学路线, cs自学计划, cs自学教程, cs自学资源, cs自学技能, cs自学教程入门, cs自学教程进阶, cs课程, cs基础课程, cs核心课程, cs进阶课程, cs高级课程, cs课程推荐, cs交流, cs技术, cs专业介绍, cs学习资源