1、11.1 文件的基本概念 11.2 文件的组织方式 11.2.1 顺序文件 11.2.2 索引文件 11.2.3 索引顺序文件ISAM文件 VSAM文件 11.2.4 散列文件 11.2.5 多关键字文件多重表文件倒排文件,第十一章 文件,主要内容,一、知识点 1、文件基本概念,文件分类,记录的逻辑和物理结构。 2、顺序文件,索引文件(ISAM和VSAM),直接存取文件(散列文件)。 3、多关键字文件:多重表文件和倒排文件。 二、学习重点各类文件的特点,构造方法及如何实现检索、插入和删除等操作。,11.1 基本概念,文件(File):性质相同的记录的集合。 文件的数据量通常很大,它被放置在外存
2、上。记录集合存储在内存叫查找表,存储在外存上叫文件。 记录:文件中可存取的基本单位。,基本概念,文件分类(按用途): 1. 操作系统文件:是一维的连续的字符序列,无结构、无解释。 2. 数据库文件:组成数据库文件的记录带有结构。记录由若干数据项组成。数据项是最基本的不可分的数据单位,也是文件中可使用的数据的最小单位。,基本概念,文件的逻辑结构 :文件的逻辑结构是呈现在用户或程序员面前的数据组织形式,是用户对数据的表示和存取方式。 文件的物理结构 :文件在外存上的存储方式或组织方式,是数据的物理表示和组织。,基本概念,文件的基本操作:检索、修改和排序。 文件的检索:顺序访问:访问下一个逻辑记录。
3、直接访问:访问第k个记录。 按关键字访问:给定一个值,查询一个或一批关键字与给定值相关的记录。 文件的修改:插入或者删除一个或多个记录;更新每个记录的属性; 文件的排序: 外排序,11.2 文件的组织方式,文件的组织方式(文件的物理结构): 顺序文件、索引文件、散列文件、多关键字文件。,11.2.1 顺序文件,顺序文件(Sequential File):记录按其在文件中的逻辑顺序依次进入存储介质而建立的,即顺序文件中的物理记录的顺序和逻辑记录的顺序是一致的。 顺序文件的组织形式:连续文件:次序相邻的两个物理记录其物理位置也相邻。串联文件:物理记录之间的顺序由指针相链接 特点: 存取第i个记录,
4、必须先存取前面的第i-1个记录; 插入的新记录只能加在文件的末尾; 若要更新文件中的某个记录,必需将整个文件进行复制; 若要删除某个记录,只做标记;,顺序文件批处理,通常情况下,顺序文件的插入、删除、更新等操作都采用批处理的方式进行。,磁带文件批处理示意图,顺序文件,所有的操作包括插入、删除和更新等,批处理:即把两个文件合为一个文件,11.2.2 索引文件,索引文件:具有索引结构的文件。索引文件包括文件数据区和索引表两大部分。 索引文件的种类: 在索引文件中,若主文件按关键字有序,则称为索引顺序文件(Indexed Sequential File),否则称为索引非顺序文件(Indexed No
5、n-Sequential File)。,索引非顺序文件,文件数据区,输入过程中建立的索引表,索引表,索引表按照关键字有序,索引文件的结构特点,1. 索引文件由主文件和索引(多级)组成; 2. 索引中的每个记录由“关键字”和“指针”组成; 3. 一般情况下:主文件是无序文件,而索引是按关键字有序的有序文件; 4. 索引是在输入数据建立文件时由系统自动生成的。索引可以由静态索引和动态索引;,索引文件的操作,1. 检索方式可以有:直接存取和按关键字存取两种方式。存取时先查索引后根据索引查记录;(访问外存两次:读索引和读记录各一次) 2. 在索引文件中插入记录时把记录插入在主文件的末尾,但是相应的索引
6、项必须插入在索引的合适位置上。所以:建立索引表时最好留有一定的“空位”; 3. 删除记录时不需要删除主文件中的相应记录,仅需把索引表中的相应索引项删除即可; 4. 更新记录时,应将更新后的记录插入在主文件的末尾,同时修改相应的索引项。,索引类型,1. 多级静态索引 2. 动态索引,记录特别多,索引表很大内存放不下时,数据文件的记录变动比较多时,多级静态索引,此时的索引文件结构为:,为索引表建立的索引,多级静态索引中的各级索引都是顺序结构 优点是:结构简单。缺点是:修改很不方便,此时最多5次访问外存,动态索引,数据文件在使用过程中记录变动较多时,采用动态索引结构,即索引表本身采用查找树表或哈希表
7、。 优点: 1. 树表本身就是层次结构,无需建立多级索引; 2. 建立索引时不需要排序,因为建立索引表的过程就是排序的过程; 3. 插入或删除记录时,修改索引方便;,动态索引,索引树表本身比较小,可放在内存时用二叉排序树或平衡二叉树; 如果树表本身很大,需要放在外存,则采用m叉的B-树做索引表;(m的选择取决于索引项的多少和缓冲区的大小) 某些特殊类型的关键字的索引表,用键树;,B-树是一种平衡、有序、多路、动态的查找树,它是磁盘文件系统中索引技术常用的一种数据结构形式,如磁盘管理系统中的目录管理以及数据文件中的索引机构大多采用B-树,B-树,B-树示例,一棵5阶B-树,关键字为058的记录,
8、B-树是一棵多叉树,最下层的非叶子结点,叶子结点,B-树是一棵查找树,B-树是一棵平衡树,动态索引,用查找树表B-树做索引时,查找索引本身所需访问外存的次数的最大值为查找树的深度。,稠密索引和非稠密索引,稠密索引:由于数据文件中的记录没有按关键字顺序排列,所以必须对每个记录建立一个索引项,如此建立的索引表称之为“稠密索引”。其优点是:可以进行某些“预查找”。其缺点是:索引表占用的存储空间大;(用于索引非顺序文件) 非稠密索引:数据文件中的记录按关键字顺序排列,则可对一组记录建立一个索引项。(用于索引顺序文件),11.2.3 索引顺序文件,数据区(主文件)中的记录也是按照关键字有序的; 可以对一
9、组记录建立一个索引,即建立非稠密索引;,索引顺序文件,典型的索引顺序文件有两大类: 1. ISAM(Indexed Sequential Access Methed)(即索引顺序存取方法):一种专门为磁盘存取设计的文件组织方法; 2. VSAM(Virtual Storage Access Methed)(虚拟存储存取方法):利用OS提供的虚拟存储器的功能组织文件。,ISAM文件,磁盘以盘组、柱面、磁道三级地址进行存取,ISAM文件结构示意图,ISAM文件的各种索引格式,a. 主索引项,b. 柱面索引项,c. 磁道索引项,ISAM文件的检索方式,两种方式: 1. 顺序存取:按照关键字从小至大的
10、顺序存取; 2. 按关键字存取:从主索引开始到柱面索引再到磁道索引共三级索引,最后访问到记录,先后共访问外存四次;,ISAM文件的插入和溢出处理,磁道索引,a. 插入前,b. 插入R65时记录移动的情形,采用顺序结构,采用链式结构,ISAM文件的插入和溢出处理,c. 插入R65后,d. 先插入R95再插入R83后录移动的情形,ISAM文件的插入和溢出处理,将记录插入到某个磁道的合适的位置上,同时将该磁道上的最大关键字移到本柱面的溢出区,然后修改磁道索引项。,ISAM文件的删除和重组,删除:在删除的位置做标记即可; 重组:需要(如溢出区满,但是基本区删除了很多记录);,VSAM文件,VSAM(V
11、irtual Storage Access Methed)文件是利用OS提供的虚拟存储器的功能组织的一种文件。给用户提供了一种透明的方法。用户不必要知道读写的记录是否在内存,也不需要知道何时对外存执行读写的指令。对用户而言:文件只有控制区间、控制区域等逻辑存储单位。 由三部分构成:索引集、顺序集、数据集,VSAM文件的结构示意图,一个数据集中的控制区间是一个I/O操作的单位,可视为一个逻辑柱面,可视为一个逻辑磁道,B+树,所有的关键字都在叶结点上,所有叶结点都没有子树,所有的叶结点构成了一个单链表,VSAM文件的检索,两种方式: 顺序存取和按关键字存取;,VSAM文件的插入和删除,VSAM文件
12、无溢出区; 插入:初建文件时留有空间:每个控制区间不填满记录;在每个控制区域中留一些完全空的控制区间; 删除:必须真实的删除记录。将同一控制区中较删除记录关键字大的记录向前移动,把空间留给以后插入的新记录。,VSAM文件的优缺点,VSAM文件通常作为大型的索引顺序文件的标准组织方式; 优点:动态的分配和释放空间,不需要重组文件,并能够较快地对后插入的记录进行查找,查找新旧记录的时间是相同的; 缺点:占用较多的存储空间,存储空间的利用率大约为75;,插入和删除操作决定了其缺点,散列文件,散列文件 在外存储上利用散列方式组织的文件。散列文件又称直接存取文件,因为散列文件是每个记录按照关键字直接转换
13、成外存的地址后存取的,没有像其它文件那样需要一个关键字的比较过程;无索引; 桶是指把若干数量的存储单元作为一个组并以同样的地址加以标识的存储区(在外存),每个桶中可以放若干条(成组)记录。,与哈希表是不同的,与哈希表是相同的,桶散列文件示例,一个文件有15个记录,其关键字值分为:05,231,502,412,78,24,20,56,23,129,40,154,80,424,219,设桶的容量m=3,桶的数量b=5,并采用除留余数法构造散列函数,散列函数为H(key)=k MOD 5,哈希地址是桶号,基桶,溢出桶,散列文件的操作,检索:只能进行按关键字的查找,先求出哈希地址(桶号),然后把基桶的
14、记录读入内存顺序查找,找不到再到溢出桶找; 插入:查找不成功时插入在相应的基桶或者溢出桶内; 删除:同哈希表,做特殊标记,散列文件的优缺点,优点:随机存取,不需要排序;插入和删除方便,存取速度快;无索引,节省空间; 缺点:不能进行顺序存取,只能按关键字随机存取;仍然需要重组文件(或许基桶空了,溢出桶满或者多个溢出桶);,多关键字文件,多关键字文件 多关键字文件在对文件进行检索时,除了可以对主关键字进行简单询问,还可以对次关键字进行其它类型的询问检索。 常用的多关键字文件有:多重表文件;倒排文件;,多重表文件,多重表文件(Multilist File): 一般来说,多重表文件的主文件是一个顺序文
15、件。 它是将索引方法和链接方法相结合的一种组织方式。 具有相同次关键字的记录链接在同一链表中。该链表的头指针即为次索引项中“指针域”的值;,多重表文件示例,a. 数据文件,b. 主关键字索引,c. “专业”索引,d. “已修学分”索引,d. “选修课目”索引,多重表文件,优点:多重表文件易于构造,易于修改;易于插入记录; 缺点:删除记录繁琐,每个次关键字的链表中都要删除该记录;,倒排文件,倒排文件:次关键字索引的结构与多重表文件的结构不同; 倒排文件中的次关键字索引被称为倒排表; 相同次关键字的记录之间不用指针相链接,而是把所有具有相同次关键字的记录构成一个次索引顺序表;在倒排表中该次关键字的一项中存放这些记录的物理记录号;,到排文件索引示例,a. 专业倒排表,b. 已修学分倒排表,c. 选修课目倒排表,由次关键字找记录,索引叫到排表,倒排表的结构,倒排表本身的结构比较灵活,可以是顺序表,也可以是树表或者哈希表,依次关键字的特性而决定。,倒排文件,优点: 检索记录快,甚至不用读取记录便可得到解答; 缺点:倒排文件的维护较困难;,