正如在学习指南中所提及,本章讨论的是外存中"集合"结构的数据组织方法,学习本章的目的主要是了解各种文件的结构特点及其操作要点。 顺序文件的主要特点是,文件中记录的物理顺序和逻辑顺序一致,因此对顺序存储器上的顺序文件只能进行顺序存取,对直接存储器上的顺序文件还可按记录号或关键码进行随机存取,如果是定长记录的顺序有序文件,还可利用折半查找进行快速存取。插入记录可以插入在文件的末尾或先存入附加文件,删除记录仅在原地作标志,更新记录需对整个文件进行复制。因此更多情况下对顺序文件的操作是按批处理方式进行的。 索引文件的特点是对文件中的每个记录都建立一个由记录的关键码和存储地址构成的索引项。所有记录的索引项构成一个按关键码有序的索引表。索引表可以是顺序结构,也可以是查找树结构,对索引文件可以进行直接存取或按关键码存取。按关键码存取时,首先在索引中进行查找,然后按索引项中指示的存储地址进行存取。插入记录时,记录本身可插入在主文件的末尾,同时将相应的索引项插入索引中恰当位置;删除记录仅需删除相应的索引项;更新记录时,可将更新后的记录插入在主文件的末尾,同时修改相应的索引项。 索引顺序文件中记录按关键码有序,因此只需建立非稠密索引。VSAM 文件是目前大型索引顺序文件的一种标准组织方式,它由索引集、顺序集和数据集三部分构成,其中数据集为主文件,顺序集和索引集分别为B+树的叶子结点和非叶结点,构成文件的索引。对 VSAM 文件可进行按关键码存取,也可以进行顺序存取,插入或删除记录时则必须保持控制区间内的记录按关键码有序,需在控制区间内进行记录的移动。VSAM文件的优点是,动态地分配和释放存储空间,不必重组文件;缺点是占有存储空间较大。 散列文件是按照设计的哈希函数和用链地址法处理冲突构建的文件,根据关键码的哈希函数值得到记录的桶地址,所有具有相同桶地址的记录彼此通过指针相链。散列文件的优点是,记录随机存放,不需要排序;插入删除方便,存取速度快;不需要建索引,节省存储空间。其缺点是不能进行顺序存取,且在经过多次插入、删除操作之后需重组文件。 多关键码文件按次索引的组织方法不同有倒排文件和多重表文件。 最后说明一点,在程序级对文件进行具体操作时,要考虑具体的硬件设备特征和与此相配合的驱动程序和开发工具,因此单纯用伪码语言来描述文件组织过程会受到一定限制。另一方面,在具体的实际应用中,商用关系数据库的使用已很普遍,数据库中常用的库表就是一种具有结构的文件形式。对库表的操作是由数据库管理系统所提供的通用查询语言(SQL语言)来完成的。虽然在大多数情况下,读者直接从底层构建一个文件系统的机会不会很多,但从概念上了解文件结构及其特性,对进一步学习有关数据库的知识是大有裨益的。 | 【本章小结】 |