[源码和文档分享]基于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 页,读写文件缓冲用占用一页,其他页都用来存储记录桶。

 


参考文档和完整的文档和源码下载地址:

https://www.write-bug.com/article/142.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值