CMU 15-445 2023-Spring lab记录合集

一、课程介绍

课程总体介绍:
转自课程介绍部分:CMU 15-445: Database Systems

这是一门质量极高,资源极齐全的 Database 入门课,这门课的 Faculty 和背后的 CMU Database Group 将课程对应的基础设施(Autograder, Discord) 和课程资料

(Lectures, Notes, Homework) 完全开源,让每一个愿意学习数据库的同学都可以享受到几乎等同于 CMU 本校学生的课程体验。

这门课的亮点在于 CMU Database Group 专门为此课开发了一个教学用的关系型数据库 bustub,并要求你对这个数据库的组成部分进行修改,实现上述部件的功能。

具体来说,在 15-445 中你需要在四个 Project 的推进中,实现一个面向磁盘的传统关系型数据库 Bustub 中的部分关键组件。

主要包括以下4块内容:

Buffer Pool Manager (内存管理),

B Plus Tree (存储引擎),

Query Executors & Query Optimizer (算子们 & 优化器),

Concurrency Control (并发控制),分别对应 Project #1Project #4

值得一提的是,同学们在实现的过程中可以通过 shell.cpp 编译出 bustub-shell 来实时地观测自己实现部件的正确与否,正反馈非常足。

此外 bustub 作为一个 C++ 编写的中小型项目涵盖了程序构建、代码规范、单元测试等众多要求,可以作为一个优秀的开源项目学习。

lab涉及到的核心知识点:C++11/17、数据结构与算法、操作系统、数据库内核、Linux开发等


二、课程资源

可利用的一些官方资源:

课程主页:Assignments | CMU 15-445/645 : Intro to Database Systems (Spring 2023)

官方仓库:cmu-db/bustub: The BusTub Relational Database Management System (Educational) (github.com)

课程介绍:CMU 15-445: Database Systems

课程交流答疑区:Discord社区

中文课程:【中文讲解视频 CMU-15445 数据库内核】

Bustub可视化工具:


三、实验过程记录

文章内容大体上是对于课程实验中一些知识点的理解+总结;

任务完成后总结一些解题的思路及注意点,不公开代码具体实现的部分。

主要是帮自己理清某些操作过程的逻辑和脉络,以便于自己加深学习理解。

下面是实验完成中记录的笔记内容,

共分为5个部分,(点击链接即可跳转)

【P0 C++ Primer】

【P1 Buffer Pool Manager】

【P2 B+Tree Index】

【P3 Query Execution】

【P4 Concurrency Control】


四、参考资料

这里我主要是参考一些博客帖子,主要是CSDN或知乎上的,根据前人的经验来完成。

一些相关的参考学习视频Moody老师姚军老师


五、其他

有关学术诚信: 【文章 代码抄袭:那些让985学生沉默,211学生流泪的真相 from jyy】

不要公开发表你的程序代码(尤其是那些及其有思维量的项目代码,以防止自己被抄hhh)

说一些自己对代码抄袭的看法,

对于计算机的同学来说,在课程作业及课程设计中仍能见到抄袭代做等不良现象,我是比较排斥的。

就拿OJ写题举例来说,自己动脑思考或者查阅资料完成一道AC题,是会很有成就感的,过程中难免有不理解或者缺乏的知识块,这都很正常;

只要你抱有一颗时刻谦虚学习的心态,主动去利用一些题解或者参考性的代码,去帮助自己更好地学习理解某些知识点和进而会做这类题;

这本就是学习过程中必不可少的环节,学会利用一些资源来帮助自己真正学到知识,而不是为了xx而xx,过程的产出往往是大于结果的。