Introduction
本章节博客是 CMU 15-445 2023 Fall 的课程笔记,一些学习资源:
也有关于课程项目 BUSTUB 的一些编写思路。一些参考:
关于 BUSTUB
这个课程实验用的是 C++17,需要一些 C++ 基础才能做。我写的是 2023 Fall 这一期的:
-
Project 0 -- C++Primer:它是检验我们 C++17 语法水平的,要写一个 Copy-Write 的 KV 存储字典树。
-
Project 1 -- Buffer Pool:一个 Buffer Pool Manager,管理整个 DB 的页面,对于并发控制,优化了锁的粒度,使用 2PL 协议,并且以相同顺序申请锁避免死锁。对于 I/O,实现了多线程写优化。最终 Leaderboard 排名 48。
-
Project 2 -- Extensible Hash Index:实现一个可扩展哈希索引,使用 RAII 来管理哈希表的页面释放,这部分主要是优化了锁的粒度,其他只要实现大差不差,性能差别主要还是在 buffer pool,最终 Leaderboard 排名 34。
-
Project 3 -- Query Execution:基于 Iterator Model 实现查询层的算子,包括SeqScan、IndexScan、Insert、Update、Delete、HashJoin,Aggregation和Windowfunction。以及一些 Heuristics 的优化,包括:SeqScan to IndexScan、NestedLoopJoin to HashJoin、Top-N Optimization。
-
Project#4 -- Concurrency Control:实现 MV + OCC 的并发控制协议,实现了 Snapshot level 的隔离,支持 read-write、write-read、read-read 的并行执行。
下面是整个项目的整体结构:
论文
-
Are You Sure You Want to Use MMAP in Your Database Management System?:mmap 映射文件引发的一些问题。
-
Exploiting Directly-Attached NVMe Arrays in DBMS:现代 SSD 替代传统 HDD 的优势。