CMU15445 fall 2022/spring 2023 项目环境搭建+选择合适的版本

前言

CMU15445是一门关于数据库管理系统(DBMS)的设计和实现的优秀课程。由数据库领域大佬Andy主讲,同时还有迟策大佬所设计和维护的BusTub,其名声在外之处更是有着极高质量的作业(HOMEWORKS)和项目(PROJECTS)。总的来说,15445共有五个项目,最终会实现一个面向磁盘的传统关系型数据库 Bustub 中的部分关键组件,包括 Buffer Pool Manager (内存管理), B Plus Tree (存储引擎), Query Executors & Query Optimizer (算子和优化器), Concurrency Control(并发控制),分别对应Project 1 到Project 4,而Project 0(C++ Primer)是检测学生是否有能力完成该课程的C++测试,要求实现一个支持并发操作的键值Trie(spring 2023增加了copy on write),文档中也提到如果你不能满分通过这一关,那还是推荐你退掉(drop)这门课 ┭┮﹏┭┮。

好了,话不多说,让我们开始美妙的学习之旅吧。


参考资料

ButTub Github
CMU15445 fall 2022 FAQ
clang报错


环境配置(Linux/Mac yes,WSL not guaranteed work)

Cloning this Repository

1.首先你要创建一个Github仓库(repository),请务必设为私有(Private) ,并且不要公开你的代码。

2.clone 一个bare仓库,该仓库为公共存储仓库
git clone --bare git@github.com:cmu-db/bustub.git bustub-public

3.进入bustub-public,将项目push到第1步创建的远程私有仓库中,这一步相当于进行了duplicating a repository以后就可以在我们创建的仓库中修改、提交代码了。

复制代码
cd bustub-public
git push git@github.com:guoruiqi01/test_for_15445.git # 你自己的远程仓库

现在远程私有仓库已经有内容了,我们可以将第2步clone下来的公共仓库内容删掉。

复制代码
cd ..
rm -rf bustub-public

4.将远程私有仓库clone到本地
git clone git@github.com:guoruiqi01/test_for_15445.git

5.(这一步我没搞懂什么意思,但还是照着做了)添加公共 BusTub 存储库作为第二个远程存储库。这允许我们从 CMU-DB 存储库检索更改,并将它们与整个学期的解决方案合并:
git remote add public https://github.com/cmu-db/bustub.git

检查是否添加成功:
git remove -v

复制代码
origin	https://github.com/guoruiqi01/test_for_15445.git (fetch)
origin	https://github.com/guoruiqi01/test_for_15445.git (push)
public	https://github.com/cmu-db/bustub.git (fetch)
public	https://github.com/cmu-db/bustub.git (push)

Build

1.使用脚本配置软件包
sudo build_support/packages.sh

2.由于我们做的是2022 fall,而现在官网是给本学期的学生使用的,因此我们要找到2022年的版本,最后一次布置的作业是在Nov 17, 2022发布的,我们需要在commits里找到该日期附近的版本号(5e0b917ca00af46ebca8a1eea218c219c1b55aa1),并git checkout过去,如果你做最新版本不需要做这一步。

git checkout 5e0b917ca00af46ebca8a1eea218c219c1b55aa1

3.接下来构建项目,创建build生成目录

复制代码
mkdir build
cd build
cmake ..
make

这里可能会报一个warning:
WARNING "!! We recommend that you use clang-12 for developing BusTub. You're using GNUxxx, which is not clang."

从我们的参考链接中得知,项目需要用到clang-12作为编译器,而编译时用了其他的。

你可以先查看机器上是否安装了clang-12

复制代码
where is clang-12
where is clang++-12

如果没有你可以安装它,并将选择使用的默认版本:

复制代码
# 安装
sudo apt install clang-12
sudo apt install clang++-12

# 使用默认版本
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-12 100
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-12 100

然后将安装路径加到CMakeLists.txt中即可解决。

接下来再构建项目应该就没有warning了。


Gradescope在线测评

作为non-CMU的学生,我们也可以将写好的项目上传进行自动测试和排名,2022 fall的邀请码(Entry Code) 是PXWVR5。FAQ里我们能找到链接:

我们注册一个帐号,并选择Student。

学校要填Carnegie Mellon University,ID可以不填。

这就完成了注册:

相关推荐
一 乐15 分钟前
个人健康系统|健康管理|基于java+Android+微信小程序的个人健康系统设计与实现(源码+数据库+文档)
android·java·数据库·vue.js·spring boot·生活
q***239222 分钟前
【SQL技术】不同数据库引擎 SQL 优化方案剖析
数据库·sql
老华带你飞1 小时前
医疗保健|医疗养老|基于Java+vue的医疗保健系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·医疗保健
Leon-Ning Liu1 小时前
Oracle 19C 数据字典 DBA_HIST_SEG_STAT 详细说明
数据库·oracle·dba
⑩-2 小时前
苍穹外卖Day(1)
java·数据库·spring boot·spring·java-ee·mybatis
朝新_2 小时前
【统一功能处理】从入门到源码:拦截器学习指南(含适配器模式深度解读)
数据库·后端·mybatis·适配器模式·javaee
我要升天!2 小时前
QT-- 理解项目文件
开发语言·数据库·qt
冉冰学姐3 小时前
SSM基于WEB的教学质量评价系统的设计与实现p9ak6(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·教学质量评价·多角色管理、
liliangcsdn3 小时前
sql中left join和inner join的区别
数据库·sql
l1t3 小时前
DeepSeek辅助编写转换DuckDB json格式执行计划到PostgreSQL格式的Python程序
数据库·python·postgresql·json·执行计划