Cmu15445 课程介绍

小引

大学时,数据库学的不是很深,现在有印象的也就 SQL、ER 图、范式、事务等使用上的寥寥概念。对于其实现上一直没有过系统性的了解,但既然走上了存储这条路,数据库知识肯定要补一下。先前,知乎上很多地方看到大家推荐 cmu15445 这门课,也早就将课程主页收藏到了文件夹,但一直没得空来看。念念不忘,必有回响,到这个假期,恰逢换工作,才有点大块的时间开个头。

大纲

简单介绍下 cmu15445教学大纲,该课以 Database System Concepts 为辅助教材, 讲述了数据库管理系统(DBMS)设计和实现的方方面面,包括:

  1. 数据模型(关系型,文档型,键值型)
  2. 存储模型(n-ary,decomposition,可以理解为行式、列式)
  3. 查询语言(sql,存储过程 stored procedures)
  4. 存储结构(heaps,基于日志 log-structured)
  5. 索引设计(排序树,哈希表)
  6. 事务处理(ACID,并发控制)
  7. 数据恢复(日志、快照)
  8. 执行引擎(joins,排序,聚集,优化)
  9. 并发架构(多核,分布式)

可以看出,内容十分翔实,课程使用一个开源的商业数据库作为案例进行讲解,以深入探讨数据库设计时,在上述各个方面进行取舍的过程。本课程十分重视编程实践,设计了一系列前后勾连但又足够简洁的代码实验

作者:木鸟杂记 https://www.qtmuniao.com/2021/02/15/cmu15445-introduction/ , 转载请注明出处

计划

这次学习目标主要以实验为主,兼顾看点讲义和教科书。视频暂时就随缘了,不然战线会拉很长,导致最后都搞不完。一共有五个实验:

  1. 环境准备:C++ Primer
  2. 缓冲控制:Buffer Pool Manager
  3. B+ 树索引:B+Tree Index
  4. 查询引擎:Query Execution
  5. 并发控制:Concurrency Control

五个实验组成了一个用于教学的简单的关系型数据库 —— BusTub。 实验方式基本都是实现一些规定的接口,跑通写好的测试用例。需要说明的是,代码中给的测试用例十分简单,基本只测试了一些主干路径,因此跑过了测试用例并不一定说明你代码写的没问题,这就要求在实现的过程中务必理解实验各个接口的关系、可以进行取舍实现的要点。为了达到此目的,当自己做完并跑过测试用例后,可以在网上找一些前人实现的材料,对比学习。

初步打算,除了第一个环境准备外,每个实验做完之后写一篇总结,探讨一些实现中遇到的问题和有趣的地方。

资料

课程本身相关的资料都可以去课程网站上寻找,我计划做 fall2020 年的实验,但视频似乎只有 2019 年的。

在实现过程中如果遇到比较好的博客或者资料,我会逐渐补充到这里。

讲义解读

我将课程讲义逐章进行了翻译和解读,都放在了我的大规模数据系统专栏《系统日知录》,欢迎订阅

  • 【每天学点数据库】Lecture #12:执行模型
  • 【每天学点数据库】Lecture #11:Join 算法
  • 【每天学点数据库】Lecture #10: 排序和聚合算法
  • 【每天学点数据库】Lecture #09:索引的并发安全
  • 【每天学点数据库】Lecture #09:Locks 和 Latches
  • 【每天学点数据库】Lecture #08:B+ 树的权衡和优化
  • 【每天学点数据库】Lecture #07:哈希表概要
  • 【每天学点数据库】Lecture #07:哈希模式
  • 【每天学点数据库】Lecture #08:树型索引
  • 【每天学点数据库】Lecture #06:内存管理
  • 【每天学点数据库】Lecture #05:数据压缩
  • 【每天学点数据库】Lecture #05:负载类型和存储模型
  • 【每天学点数据库】Lecture #04:数据编码
  • 【每天学点数据库】Lecture #04:日志构型存储
  • 【每天学点数据库】Lecture #03:Data Layout
  • 【每天学点数据库】Lecture #03: Database and OS
  • 【每天学点数据库】Lecture #03:存储层次体系
  • 【每天学点数据库】Lecture #01:关系代数
  • 【每天学点数据库】Lecture #01:关系模型
  • 【每天学点数据库】Lecture #01:数据模型

我是青藤木鸟,一个喜欢摄影、专注大规模数据系统的程序员,欢迎关注我的公众号:“木鸟杂记”,有更多的分布式系统、存储和数据库相关的文章,欢迎关注。 关注公众号后,回复“资料”可以获取我总结一份分布式数据库学习资料。 回复“优惠券”可以获取我的大规模数据系统付费专栏《系统日知录》的八折优惠券。

我们还有相关的分布式系统和数据库的群,可以添加我的微信号:qtmuniao,我拉你入群。加我时记得备注:“分布式系统群”。 另外,如果你不想加群,还有一个分布式系统和数据库的论坛(点这里),欢迎来玩耍。

wx-distributed-system-s.jpg