使用extmem库模拟数据库的磁盘读写,并在此基础上完成以下任务:
- 随机生成数据
- 读取并显示数据
- 磁盘7路归并排序
- 磁盘数据线性搜索算法
- 磁盘数据二元搜索算法
- 磁盘数据hash索引
- 集合的并、交、差运算
- nested loop join
- sort merge jion
- hash join
磁盘上存储两个关系R和S,其中,二者满足如下要求:
关系R具有两个属性A和B,其中A和B的属性值均为int型(4个字节),A的值域为[1,40],B的值域为[1,1000]。
关系S具有两个属性C和D,其中C和D的属性值均为int型(4个字节)。C的值域为[20,60],D的值域为[1,1000]。
使用Exemem程序存储以上两个关系:
关系的物理存储形式为磁盘块序列B1,B2,…,Bn,其中Bi的最后4个字节存放Bi+1的地址。R和S的每个元组为8个字节,块的大小设置为64个字节,缓冲区大小设置为512+8=520个字节。这样,每块可存放7个元组和1个后继磁盘块地址,缓冲区内可最多存放8个块。本程序中R中包含16* 7 = 112个元组,S中包含32* 7 = 224个元组。
git clone https://github.com/dongchangzhang/dboperation-sim
cd dboperation-sim
make clean
make
./main