文件组织和访问
-
文件组织
-
指文件中记录的逻辑结构,由用户访问记录的方式确定
所谓的逻辑结构,是指在用户看来,文件内部的数据应该是如何组织起来的
而物理结构是指在操作系统看来,文件的数据是如何存放在外存的
-
-
选择文件组织的5个重要原则
- 快速访问
- 易于修改
- 节约存储空间
- 维护简单
- 可靠性
原则的优先级取决于使用文件的应用程序
一、堆文件
- 最简单的文件组织形式
- 按照到达的顺序收集数据
- 每条记录由一串数据组成
- 目的是积累大量数据并保存
- 通过穷举查找方法检索记录
二、顺序文件
- 最常见的文件组织形式
- 记录有固定的格式;
- 所有记录的长度都相同:每个域的位置、长度等相同;
- 每个记录中有一个关键域,唯一标识这个记录
- 记录按照关键域存储和排序
- 通常用于批处理应用中
- 可以很容易地存储在磁盘和磁带
- 因为是定长,就和数组很像,可以顺序存取,但对于涉及更新、删除记录时,开销大
三、索引顺序文件
-
保留顺序文件的关键特征:记录按照关键域组织
-
增加了支持随机访问的索引和溢出文件
-
索引提供快速接近目标的查找能力
-
溢出文件类似日志文件,要往文件中插入记录时,可以将其放在溢出文件中,并由主文件中它(即所插入记录)的前一个记录通过指针指向;
理解溢出文件:
可以把它理解为一个附加的文件,在溢出文件中放入即将插入的记录,可以成批地对溢出文件里的记录进行更新到主文件中,提高了更新的效率
-
-
可按批处理方式合并溢出文件
-
索引可以有多级
四、索引文件
和索引顺序文件相比:
- 索引顺序文件:一组记录对应一个索引表项
- 索引文件:每个记录对应一个索引表项
-
只能通过索引访问记录
每个记录对应一个索引表项,可以提高查找速度。但因此索引表可能会很大,时间上去了但空间下来了
-
可以使用变长度记录
-
完全索引包含主文件中每条记录的索引项
-
部分索引只包含有感兴趣域的记录的索引项
-
主要用于信息及时性要求比较严格且很少对所有数据进行处理的应用程序
索引文件通常设计用于快速定位和访问特定数据
-
例子是航空公司订票系统和商品库存控制系统
五、直接或散列文件
速度最快的方式,通过哈希计算可以直接访问到
-
直接访问磁盘中任意一个地址已知的数据块
-
使用基于关键字的散列
-
典型应用场景:
- 快速访问
- 固定长度的记录
- 一次只访问一条记录
例子:
目录
价格表
调度
名字列表