# 手写数据库(CPP) | 代码随想录知识星球
知识星球再添 CPP专栏项目, 手写一个数据库,关于数据库项目,最知名的就是cmu15445
将这门课程做完,不仅实现一个独立项目,还可以很好的结合数据库八股文知识,做到学以致用。
授课 cmu15445 的教授明确要求不让学生上传代码到Github,尊重课程的规定,所以本项目不提供代码。
但本项目文档可以帮助大家速成cmu15445,【学习指引】【项目架构】【项目难点】【简历写法】【面试问题】以及【拓展和可以深挖的点】都给大家安排上了。
如果大家想找代码,建议在github上搜 2022版cmu15445的课程,相对资料比较多。
# 学哪一个学期的版本?
每一个学期基本上是4个lab
, 从存储、索引、事务等逐级向应用层靠拢, 具体区别为
学期 | lab1 | lab2 | lab3 | lab4 |
---|---|---|---|---|
Fall 2019 | 缓存池(时钟更换) | 哈希索引 | 查询计划 | 日志和恢复(日志+Checkpoint ) |
Fall 2020 | 缓存池(LRU) | B+树索引 | 查询计划 | 并发控制(锁管理器+死锁检测) |
Fall 2021 | 缓存池(LRU+并发多缓存池) | 哈希索引 | 查询计划 | 并发控制(锁管理器+死锁检测) |
Fall 2022 | 缓存池(LRU-K+可扩展哈希) | B+树索引 | 查询计划 | 并发控制(锁管理器+死锁检测) |
Fall 2023 | 缓存池(LRU-K+磁盘调度) | 哈希索引 | 查询计划 | 并发控制(MVCC +Serializable 隔离级别) |
这个主推秋季学期的版本, 因为春季学期可能不是
Andy
上课 2024最新版还在更新中, 但参考资料肯定是最少的, 自学能力强的同学可以上24fall!
可以看出,bustub
是不断被完善的, 2023版甚至有MVCC
和Serializable
隔离级别非常地Amazing
, 但目前建议做B+树
索引版本的2022版, 一方面是因为资料比较多, 另一方面还是因为面试时关注数据结构的主要索引就是B+树
, 学有余力的同学可以做2023的lab4
# 参考资料
这里查看所有学期的官方主页: https://15445.courses.cs.cmu.edu/
# 项目专栏目录
- 技术栈
- 相关学习资料
- 学哪一个学期的版本?
- 课程视频
- 环境搭建
- Lab指南
- lab1
- lab2
- lab3
- lab4
- 项目架构
- 代码梳理
- 项目难点
- 简历写法
- 相关面试问题
- raft 相关
- 数据库相关
- 拓展&&可以深挖的点
- 为什么现在更多的
KV
数据库采用LSM Tree
而抛弃了B+树
?
- 为什么现在更多的
# 简历写法
很多录友做完项目不知道该怎么写到简历上,本项目专栏直接把简历写法写好了,大家可以直接用:
(具体项目亮点在公众号上做打码处理,避免过于重复)
# 本项目常见问题
专栏里都给出明确的例子,帮助大家面试准备:
# 项目亮点以及项目细节
为了更好的掌握这个项目,亮点和细节都给大家讲清楚:
# 项目难点
很多录友做完项目,不知道项目难点是什么,文档都给大家列出来。
面试中,面试官最喜欢问的就是项目难点,以及这个难点你是如何解决的。
# 项目拓展出的基础知识
在做做项目的时候,最好的方式就是 理论基础知识和项目实战相结合。
面试官也喜欢在 项目中问基础知识(八股文),本专栏也给出可以拓展哪些基础知识
# 项目专栏部分截图
# 突击来用
如果大家面试在即,实在没时间做项目了,可以直接按照专栏给出的【简历写法】,写到简历上,然后把项目专栏里的面试问题,都认真背一背就好了,基本覆盖 绝大多数 项目问题。
# 获取本项目专栏
本文档仅为星球内部专享,大家可以加入知识星球里获取,在星球置顶一:
加入星球后可以获取全部项目文档和八股资料!。
这里给出10元代金券,领代金券加入,代码随想录知识星球支持三天内(72h)可以全额退款。
加入知识星球后,记得加如下微信,拉你到星球交流群:
← 手写网络库(C++) 缓存系统(C++) →