文件的逻辑结构总结
@(OS)
逻辑结构:从用户观点出发看到的文件的组织形式,是用户可以直接处理的数据及其结构。独立于文件的物理特性。也称为文件组织。
物理结构:从实现的角度出发,OS看到的文件的存储结构。是文件在外存上的存储组织形式。不仅与存储介质的存储性能有关,也与所采用的外存分配方式有关。
无论是文件的逻辑结构还是物理结构都会影响文件的检索速度。
这里首先关注逻辑结构:实际上讲的就是在文件的内部,逻辑上数据是如何被组织起来的。
根据逻辑结构,文件可以分为两个大类:无结构文件和有结构文件。
无结构文件
最简单的文件组织形式。将数据按照顺序组织成记录(记录指的是一组相关数据项的集合)并积累保存,是有序相关信息项的集合。以字节为单位。对记录的搜索只能是穷举搜索。适用于存储源代码,目标代码等。
有结构文件
也可称之为记录式文件。分为顺序文件和索引文件。记录可以定长也可以变长。可以顺序存储也可以链表离散存储。
顺序文件
通常是定长记录,但也可以是变长记录。
这个类别下也分为两个子类。串结构和顺序结构。
串结构:记录之间的顺序与关键字(选取的特别的数据项标识记录)无关。通常由时间决定。
顺序结构:文件中的所有记录按照关键字顺序排列。
对记录进行批量操作时,即每次需要读or写一大批记录,对顺序文件的效率最高。
索引文件
主要是针对变长记录的文件。为什么呢。首先,如果记录式定长的,则可以通过:
Ai=i×L,i是记录编号,L是记录占据的长度,Ai是地址
这种计算本身并不耗时,因此,不必特别加以索引。那么就该问,变长的记录为何要用索引呢?
答案是,变长的记录无法通过上面的计算推导。只能顺序查找,所以系统开销极大。
所以建立索引表就势在必行了。
索引表本身是定长记录的文件。
每一个索引项指明了该记录的长度。
索引顺序文件
顺序和索引两种组织的结合。即:用索引的方式索引顺序文件。 这是被我忽略了的。可以这么理解:顺序文件通常是定长记录,索引针对的是变长记录。如果结合起来会有什么好处呢?
具体实施是:并非为每个记录建立一个索引,这样太浪费了,而是为一组记录中的第一个记录设置一个表项。
索引文件由逻辑文件和索引表组成。
分析:文件的逻辑结构和物理结构都有索引的概念。逻辑索引的目的是加快文件数据的定位,从用户角度出发。物理索引的主要目的是为了管理不连续的物理块,从系统管理的角度出发。
对索引文件存取,必须查找索引表。索引表项包含每个记录的长度和在逻辑文件中的起始位置。每个记录都有一个索引项,提高了存储的代价。
文件由N个记录,则顺序文件下平均查找N2次,索引顺序文件下最好的平均查找次数是N‾‾√次。
分析:顺序文件自然不必说,就是求一个期望,严格来说是N+12, 索引文件对索引项也是顺序查找,对分组的记录也是顺序查找。为什么一组记录数是N‾‾√最好,这就要根据2ab≥a2+b2,当且仅当a=b时取得极值。这里也是一样。共N‾‾√组,平均查找N√2次,找到组后,再平均查找次数是N√2,共N‾‾√次。
20161223 update :
简单来说索引文件就是对基本的每个逻辑记录添加索引项,像目录一样,可以查找目录进行随机访问。虽然不同于顺序存储的方式,但本质都是可以通过数学计算得到。顺序文件很常见,就是按照顺序分配存储即可。而索引顺序文件呢是对用索引的方式操作顺序文件,对每一组进行索引。
一般说顺序文件,在定长记录时才能够随机访问,索引不受这个限制。
也说明了,顺序文件可以存储非定长记录。
原文链接:http://blog.csdn.net/u011240016/article/details/52833398