CMU15445-Lab2
2023.5.1完成这个为期接近3个月的DB实验,收获还是很多的。今日,对lab2-B+树实现细节回顾,**请不要将实现代码公开,尊重 Andy 和 TAs 的劳动成果!**需要代码的可以联系我~
B+树页面结构
在Lab1中,我们说到page的数据结构
1 | /** The actual data that is stored within a page. */ |
图片取自:做个数据库:2022 CMU15-445 Project2 B+Tree Index
BPlusTreePage是另外BPlusTreeLeafPage和BPlusTreeInternalPage的父类
BPlusTreePage
格式
1 | /** |
数据结构
1 | // member variable, attributes that both internal and leaf page share |
图片取自:做个数据库:2022 CMU15-445 Project2 B+Tree Index
B_PLUS_TREE_INTERNAL_PAGE
格式
1 | /** |
数据结构
1 |
|
图片取自:做个数据库:2022 CMU15-445 Project2 B+Tree Index
internal page的首个位置没有key
BPlusTreeLeafPage
leaf page 和 internal page 的内存布局基本一样,只是 leaf page 多了一个成员变量 next_page_id
,指向下一个 leaf page(用于 range scan)。因此 leaf page 的 header 大小为 28 Byte。
格式
1 |
|
数据结构
1 | page_id_t next_page_id_; |
每一个页面的key和value数量
树上操作
搜索
评论