DBMS一种设计方案(原)

本文详细介绍了数据库管理系统中数据和索引的存储方式。数据表格采用数据集与索引集分离,主关键字确保数据文件内数据不重复。索引文件使用散列文件存储,关键索引按hash值分布在多个桶中,当桶内索引过多,会形成溢出记录存储在文件末尾。此外,讨论了桶的数量和索引记录长度的处理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件存储方式

一、 整体架构

一个数据表格采用数据集、索引集分开的存储方式,分别为数据文件和索引文件,有可能还需要一个关键字文件。

数据表格必须指定一个主关键字,主关键字在数据表内不允许重复。

数据表格还可以有若干索引,索引可以重复。只有第一个索引(主索引)能影响数据文件内的数据分布,所有相同主索引的数据会存放于同一个数据文件中。

如果相同主索引的数据太多,超过数据文件的大小限制,则也可以有多个数据文件存储同一个主索引的数据。

 

二、 索引文件

1.    关键字索引文件

关键字索引集采用散列文件存储,文件内每一条索引记录包含了对应的数据记录的关键字和在数据文件中的位置(具体可根据数据集的格式来设定)和索引链表(后详)。

索引记录按照关键字的hash值分布到若干的桶内,桶的数目:

a)         可以是固定的配置参数;

b)         按照一定的算法自动增长;

c)         初始大小通过指定,以后采用自动增长

每个桶内索引记录的个数有上限(参数可配),创建索引文件时会为每个桶预留出此上限值的索引记录空间。这要求每个索引记录的长度固定,所以如果关键字是变长字符串,则需要另外处理(后详)。

当某个桶内索引记录过多,超过上限的索引记录采用链表存储,加入文件末尾,并称之为“溢出记录”,如下图所示:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值