1、,Page 1,2018/5/5,第十二章,学习目标熟悉各类文件的特点,构造方法以及如何实现检索,插入和删除等操作。重点和难点重点:了解各种文件的结构特点及其适用场合。知识点顺序文件、索引文件、索引顺序文件、VSAM文件、散列文件、多关键字文件,Page 2,2018/5/5,12.1 有关文件的基本概念,文件(File)是由大量性质相同的记录组成的集合,一般放在外存上。记录是数据项的集合,是可存取的数据的基本单位。数据项由一个或多个位或字节组成,是不可分割的数据最小单位。定长记录文件文件中每个记录含有的信息长度相等。不定长文件文件中含有信息长度不等的不定长记录。,Page 3,2018/5/
2、5,单关键字文件文件中的记录只有一个唯一标识记录的主关键字。多关键字文件文件中的记录除了含有一个主关键字外,还含有若干个次关键字。记录的属性记录中所有非关键字的数据项。记录的逻辑结构记录在用户或应用程序员面前呈现的方式,是用户对数据的表示和存取方式。记录的物理结构数据在物理存储器上存储的方式,是数据的物理表示和组织。,Page 4,2018/5/5,物理记录计算机用一条I/0命令进行读写的基本数据单位(物理块)。物理记录和逻辑记录之间可能存在下列三种关系:一个物理记录存放一个逻辑记录;一个物理记录包含多个逻辑记录;多个物理记录表示一个逻辑记录。文件的检索方式顺序存取:存取下一个逻辑记录。直接存
3、取;存取第i个逻辑记录。按关键字存取: 简单查询、区域查询、函数查询、布尔查询,Page 5,2018/5/5,文件的修改记录的插入、删除、修改。文件的物理结构文件在外存上的组织方式。顺序组织随机组织链组织,Page 6,2018/5/5,12.2 顺序文件,顺序文件定义 记录按其在文件中的逻辑顺序依次进入存储介质而建立的,即物理记录和逻辑记录的顺序是一致的。分类连续(顺序)文件 次序相继的两个物理记录在存储介质上的存储位置是相邻的。串联(顺序)文件 物理记录之间的次序由指针相链表示。,Page 7,2018/5/5,特点存取第i个记录,必须先搜索在它之前的i-1个记录。新的记录只能加在文件末
4、尾。更新记录,必须将整个文件复制。优点 连续存取的速度快,主要用于只进行顺序存取、批量修改的情况。存取设备磁带 适合于文件的数据量大、平时记录变化少、只作批量修改的情况。磁盘,Page 8,2018/5/5,12.3 索引文件,引入原因对于按关键字存取得记录结构,顺序查找和折半查找的速度很慢。为了避免大量与外存打交道,可以保存一个索引表来指示关键字与记录地址之间的对应关系。索引文件包括数据区和索引表两部分。为按建立时,系统自动开辟索引区。按记录进入的顺序登记索引项。索引项指出该记录的物理地址。最后,索引表按关键字排序。只能存储在磁盘存储设备上。,Page 9,2018/5/5,Page 10,
5、2018/5/5,索引文件的检索将索引表读入内存(若一个物理块可容纳一个索引表,则仅一次读入,否则需要多次读入);查找索引表,确定记录的物理地址(索引表有序,可折半查找);根据物理地址,一次读取记录。索引文件的修改删除 仅删去相应的索引项。插入 记录进入数据区末尾,索引项插入索引表中(或重新排序)。更新 删除与插入的结合。,Page 11,2018/5/5,多级索引记录数目很大,导致一个物理块容纳不了索引表。此时,查找索引表需要多次访问内存。对索引表再建立一个索引。最高可以有四级索引,此时检索需要访问外存5次。,Page 12,2018/5/5,12.4 ISAM文件和VSAM文件,ISAM文
6、件(索引顺序存取法)是一种专为磁盘存取而设计的文件组织方式。由于磁盘是以盘组、柱面和磁道三级地址存取的设备,则可对磁盘上的数据文件建立盘组、柱面和磁道三级索引。文件的记录在同一盘组上存放时,应先集中放在一个柱面上,然后再顺序存放在相邻的柱面上,对同一柱面,则应按盘面的次序顺序存放。用这种方法建立起来的索引文件称为ISAM文件。包括:索引区、数据基本区、数据溢出区。,Page 13,2018/5/5,数据区,索引区,溢出区,Page 14,2018/5/5,ISAM文件的检索查主索引(驻内存),将相应柱面索引(在其柱面上)调用内存。查柱面索引,将磁道索引(一般放在第0道上)调入内存;查磁道索引,
7、将本磁道上的所有记录送入内存;顺序对这一组记录查找。ISAM文件的插入定位应插入的磁道;按关键字顺序插入新纪录,将同一磁道上最后一个记录移至溢出区;同时修改磁道索引项。,Page 15,2018/5/5,ISAM文件的删除找到待删除的记录,在其存储位置上作删除标记即可,而不需要移动记录或改变指针。ISAM文件的整理经过多次的增删后,文件的结构可能变得很不合理。此时,大量得记录进入溢出区,而基本区中又浪费很多空间。因此,通常需要周期地整理ISAM文件。把记录读入内存,重新排列,复制成一个新的ISAM文件,填满基本区而空出溢出区。,Page 16,2018/5/5,12.4.2 VSAM文件,VS
8、AM(虚拟存储存取方法)利用了操作系统的虚拟存储器的功能,给用户提供方便。对用户来说,存储记录时不需要考虑记录的具体存储位置,也不需要考虑何时执行对外存的读写命令。VSAM文件结构三部分组成:索引集、顺序集和数据集。,Page 17,2018/5/5,B+ 树,Page 18,2018/5/5,VSAM文件的检索在控制区间上存取一个记录时,需从控制区间两端出发,同时向中间扫描。VSAM文件的插入新记录插入到相应的控制区间内,移动其它记录,保持有序;控制区已满时,要进行控制区的分裂,即将一半的记录移入另一个控制区间,并修改顺序集中相应索引。VSAM文件的删除删除记录时,需将同一控制区间中记录关键
9、字较大的记录向前移动,把空间留给以后插入的新记录。控制区间变空时,则需修改顺序集中相应的索引项。,Page 19,2018/5/5,VSAM文件缺点占有较多的存储空间,一般只能保持约76%的存储空间利用率。VSAM文件优点动态地分配和释放存储空间,不需要对文件进行重组。能较快地对插入的记录进行查找,查找一个后插入的记录和查找一个原有记录的时间是相同的。,Page 20,2018/5/5,12.5 直接存取文件(散列文件),散列文件特点由记录的关键码“直接”得到记录在外存(磁盘)上的映象地址。类似哈希表,根据文件中关键码的特点设计一种“哈希函数”和“处理冲突的方法”,然后将记录散列到外存储设备上
10、,故称“散列文件”。桶散列文件的存储单位,以磁道或块为单位,由若干个记录组成。基桶一个桶能存放m个记录,表示这m个有相同哈希函数值的记录具有同一个桶地址,该桶称为“基桶” 。溢出桶当发生“溢出”时,需要将第m+1个同义词存放到另一个桶中。,Page 21,2018/5/5,溢出桶可以有多个,它们和基桶大小相同,相互之间用指针相链接。当在基桶中没有找到待查记录时,就顺指针所指到溢出桶中进行查找。因此,希望同一散列地址的溢出桶和基桶在磁盘上的物理位置不要相距太远,最好在同一柱面上。,Page 22,2018/5/5,12.6 多关键字文件,主关键字文件的特点在对文件进行检索操作时,不仅对主关键字进
11、行简单询问,还经常需要对次关键字进行其他类型的询问检索。因此,对多关键字文件,尚需建立一系列的次关键字索引。次关键字索引与主关键字索引所不同每个索引项应包含次关键字、具有同一次关键字的多个记录的主关键字或或物理记录号。多重表文件和倒排文件是两种多关键字文件的组织方法。,Page 23,2018/5/5,12.6.1 多重表文件,多重表文件(Multilist file)的特点记录按主关键字的顺序构成一个串联文件,建立主关键字的索引(称为主索引);对每个次关键字项建立次关键字索引(称为次索引),所有具有同一次关键字的记录构成一个链表。主索引为非稠密索引(一组记录建立一个索引项),次索引为稠密索引
12、(每个记录建立一个索引项)。每个索引包括次关键字、头指针和链表长度。在多重表中插入一个新记录是很容易的,只要修改指针,将记录插在链表的头指针之后。但是,要删去一个记录却很繁琐,需要在每个次关键字的链表中删去该记录。,Page 24,2018/5/5,Page 25,2018/5/5,12.6.2 倒排文件,倒排文件(Inverted file)和多重表文件的区别次关键字索引的结构不同。 倒排表倒排文件中的次关键字索引。 在倒排表的索引项中没有头指针和链表长度项,而直接用一项存放具有同一关键字的所有记录的物理记录号或主关键字。,Page 26,2018/5/5,Page 27,2018/5/5,
13、本章小结,顺序文件文件中记录的物理顺序和逻辑顺序一致。对顺序存储器上的顺序文件只能进行顺序存取;对直接存储器上的顺序文件还可按记录号或关键码进行随机存取;如果是定长记录的顺序有序文件,还可利用折半查找进行快速存取。插入记录可以插入在文件的末尾或先存入附加文件。删除记录仅在原地作标志。更新记录需对整个文件进行复制。更多情况下对顺序文件的操作是按批处理方式进行的。,Page 28,2018/5/5,索引文件对文件中的每个记录都建立一个由记录的关键码和存储地址构成的索引项。所有记录的索引项构成一个按关键码有序的索引表。索引表可以是顺序结构,也可以是查找树结构,对索引文件可以进行直接存取或按关键码存取
14、。按关键码存取时,首先在索引中进行查找,然后按索引项中指示的存储地址进行存取。插入记录时,记录本身可插入在主文件的末尾,同时将相应的索引项插入索引中恰当位置。删除记录仅需删除相应的索引项。更新记录时,可将更新后的记录插入在主文件的末尾,同时修改相应的索引项。,Page 29,2018/5/5,索引顺序文件记录按关键码有序,只需建立非稠密索引。VSAM 文件是目前大型索引顺序文件的一种标准组织方式,它由索引集、顺序集和数据集三部分构成,其中数据集为主文件,顺序集和索引集分别为B+树的叶子结点和非叶结点,构成文件的索引。对 VSAM 文件可进行按关键码存取,也可以进行顺序存取,插入或删除记录时则必须保持控制区间内的记录按关键码有序,需在控制区间内进行记录的移动。优点:动态地分配和释放存储空间,不必重组文件。缺点:占有存储空间较大。,Page 30,2018/5/5,散列文件按照设计的哈希函数和用链地址法处理冲突构建的文件。根据关键码的哈希函数值得到记录的桶地址,所有具有相同桶地址的记录彼此通过指针相链。优点:记录随机存放,不需要排序;插入删除方便,存取速度快;不需要建索引,节省存储空间。缺点:不能进行顺序存取,且在经过多次插入、删除操作之后需重组文件。多关键码文件按次索引的组织方法不同有倒排文件和多重表文件。,