文件存储方式
一、 整体架构
一个数据表格采用数据集、索引集分开的存储方式,分别为数据文件和索引文件,有可能还需要一个关键字文件。
数据表格必须指定一个主关键字,主关键字在数据表内不允许重复。
数据表格还可以有若干索引,索引可以重复。只有第一个索引(主索引)能影响数据文件内的数据分布,所有相同主索引的数据会存放于同一个数据文件中。
如果相同主索引的数据太多,超过数据文件的大小限制,则也可以有多个数据文件存储同一个主索引的数据。
二、 索引文件
1. 关键字索引文件
关键字索引集采用散列文件存储,文件内每一条索引记录包含了对应的数据记录的关键字和在数据文件中的位置(具体可根据数据集的格式来设定)和索引链表(后详)。
索引记录按照关键字的hash值分布到若干的桶内,桶的数目:
a) 可以是固定的配置参数;
b) 按照一定的算法自动增长;
c) 初始大小通过指定,以后采用自动增长
每个桶内索引记录的个数有上限(参数可配),创建索引文件时会为每个桶预留出此上限值的索引记录空间。这要求每个索引记录的长度固定,所以如果关键字是变长字符串,则需要另外处理(后详)。
当某个桶内索引记录过多,超过上限的索引记录采用链表存储,加入文件末尾,并称之为“溢出记录”,如下图所示: