分布式系统,程序语言,算法设计

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 年的。

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


我是青藤木鸟,一个喜欢摄影的存储工程师,欢迎关注我的公众号:“木鸟杂记”。

wx-distributed-system-muniao-s.jpg