Bustub项目结构(持续更新)

发布于 作者: Ethan

引言

CMU 15445 数据库课程项目(Bustub)个人实现项目结构

课程整体结构(待持续确认)

course structure

项目整体结构

project structure

项目1:缓冲池管理器 Buffer Pool Manager

bpm

项目2:B+树 B+ Tree

项目2总览

overall

bpt

一、点查(READ_ONLY)

readonly

二、迭代扫描(Iterator ++)

iter

三、乐观插入(OPTIMISTIC_INSERT)与回退常规插入(REGULAR_INSERT)

optins

四、乐观删除(OPTIMISTIC_DELETE)与回退常规删除(REGULAR_DELETE)

optdel

访问整体策略

access

项目3:查询执行器

项目3总览

p3-struct

表达式

expression

Part 1:基础执行器/优化器

执行器:Update(Insert、Delete类似)

update

执行器:Sequential Scan

seq scan

执行器:Index Scan

index scan

优化器:顺序扫描优化至索引扫描

seqscan as indscan

Part 2: 聚合与连接执行器

聚合

agg class agg fsm

连接

嵌套循环连接

nlj class nlj fsm

嵌套索引连接

idx join class idx join fsm

Part 3: HashJoin 执行器和优化

中间结果存储页

int page

哈希连接

hash join class hash join fsm

NLJ至HashJoin优化

优化器识别 NLJ 并尝试重写为 Hash Join

nlj2hash

Part 4: 外部归并排序 + Limit 执行器 + 窗口函数

外部归并排序

ems class ems fsm

Limit执行器

limit class limit fsm

窗口函数执行器

wf class wf fsm

结果

P1

bpm_result

P2

bpt result

QPS(无优化) bpt qps

P3

qexec result