数据库系统实现技术大作业 这是CMU 15-445 2022fall 的配套项目 bustub 2022fall,也是《数据库系统实现技术》这门选修课的大作业。这里简单记录一下作业的思路。
Project #0 - C++ Primer 这个项目是做一个简单的Trie树,不属于bustub的主体部分,实现起来也很简单。核心数据结构就是TrieNode, 表示树中的一个顶点,is_end_成员表示该单词是否结束。整体没啥难的。
class TrieNode{ protected: char key_char_; /** whether this node marks the end of a key */ bool is_end_{false}; /** A map of all child nodes of this trie node, which can be accessed by each * child node's key char. */ std::unordered_map<char, std::unique_ptr<TrieNode>> children_; } 主要是熟悉C++以及bustub的编码风格,以及一些工具的使用,包括用CMake\Make构建项目、用Clang-tidy来优化编码风格、用GDB来debug、用第三方库GoogleTest来进行单例测试等。
Project #1 - Buffer Pool 从这个部分开始,就进入Bustub的主体部分了。目标就是实现一个Buffer Pool Manager, 分成了3个小任务。
Task #1 Extendible Hash Table 这一部分是实现一个可扩展哈希表, 所谓可扩展,就是避免传统哈希表的rehash的开销(rehash就是传统的不可扩展的哈希表的加载因子比较高的时候,会进行扩容+rehash来减少冲突,开销很大)。