[源码和文档分享]基于C++的数据库可扩容哈希
一、项目介绍
主要涉及可扩展哈希在数据库中的应用。
读入由 tpc-h 生成的 lineitem.tbl,以 L_ORDERKEY 属性作为键值将记录放入合适的哈希桶内。读入测试文件 testinput.in 内的数据,数据中包含多个需要查询的键值。将通过键值查询得到的所有记录都输出到 testoutput.out 文件中。算法实现分为两大部分,第一部分是建立索引,第二部分是查询。建立索引是将输入的每一条记录根据指定的键值放入合适的哈希桶内,当哈希桶已满时,需要进行分裂。查询是根据输入的键值返回具有相同键值的记录,返回的记录可能有不止一条。
二、项目环境
-
系统:Windows 8.1 专业版 64 位
-
处理器:Intel® Core(TM) i3 CPU M 350 @ 2.27GHz 2.27 GHz
-
内存:2 GB 金士顿 DDR3 1333MHZ
-
硬盘:希捷 ST9320 320GB 7200 转/分
-
语言:C++
-
编辑器:Visual Studio 2013
三、项目架构
本项目共有7 个文件:
-
main.cpp:主文件,程序的入口
-
Manager.h (.cpp):主控程序,实现功能的主体
-
Buffer.h (.cpp):缓存池,管理内存中各缓存页
-
Index.h (.cpp):目录页,存储哈希值和桶号的对应关系
-
Page.h (.cpp):页的基本类,实现一个页的基本功能
-
Function.h (.cpp):项目中要用到的通用函数,如取哈希值,取键值等
-
option.h:程序的如最大使用页数,哈希方式等参数的定义文件
无论最大使用页数和哈希方式,项目运行时目录页占用 1 页,读写文件缓冲用占用一页,其他页都用来存储记录桶。
参考文档和完整的文档和源码下载地址: