280 likes | 381 Views
第十二章 文件. 有关文件的基本概念 顺序文件 索引文件 ISAM 文件和 VSAM 文件 直接存取文件(散列文件) 多关键字文件. 有关文件的基本概念. 文件:是由大量性质相同的记录组成的集合 按记录类型不同分类:操作系统的文件和数据库文件 操作系统中的文件是一维的连续的字符序列,无结构,无解释。 数据库中的文件是带有结构的记录的集合。 文件还可按记录的另一特性分成定长记录文件和不定长记录文件。 若文件中每各记录含有的信息长度相同,为定长记录,由这类记录组成的文件称为定长记录文件. 若文件中含有信息长度不等的不定长记录,称为不定长 记录文件
E N D
第十二章 文件 • 有关文件的基本概念 • 顺序文件 • 索引文件 • ISAM文件和VSAM文件 • 直接存取文件(散列文件) • 多关键字文件
有关文件的基本概念 文件:是由大量性质相同的记录组成的集合 按记录类型不同分类:操作系统的文件和数据库文件 操作系统中的文件是一维的连续的字符序列,无结构,无解释。 数据库中的文件是带有结构的记录的集合。 文件还可按记录的另一特性分成定长记录文件和不定长记录文件。 若文件中每各记录含有的信息长度相同,为定长记录,由这类记录组成的文件称为定长记录文件
若文件中含有信息长度不等的不定长记录,称为不定长若文件中含有信息长度不等的不定长记录,称为不定长 记录文件 记录的逻辑结构:是指记录在用户或应用程序员面前呈现 的方式,是用户对数据的表示很存取方 式 记录的物理结构:是数据在物理存储器上存储的方式,是 数据的物理表示和组成 记录的逻辑结构着眼在用户使用方便,而记录的物理结 构则应考虑提高存储空间的利用率和减少存取记录的时 间,它根据不同的需要及设备本身的特征可以有多种方 式
物理记录和逻辑记录之间的关系: ⑴一个物理记录存放一个逻辑记录 ⑵一个物理记录包含多个逻辑记录 ⑶多个物理记录表示一个逻辑记录 文件的操作(运算):检索和修改 文件的检索有下列三种方式: ㈠顺序存取:存取下一个逻辑记录 ㈡直接存取:存取第i个逻辑记录 ㈢按关键子存取:给定一个值,查询一个或一批关键字与给定值相关的记录。对数据库文件可以有如下四种查询方式:
⑴简单询问:查询关键字等于给定值的记录 ⑵区域询问:查询关键字属某个区域内的记录 ⑶函数询问:给定关键字的某个函数 ⑷布尔询问:以上三种询问用布尔运算组合起来的询问 文件的修改三种操作: ㈠插入一个记录 ㈡删除一个记录 ㈢更新一个记录
顺序文件 顺序文件:是记录按其在文件中的逻辑顺序依次进入存 储介质而建立的,既顺序文件中物理记录的顺 序和逻辑记录的顺序是一致的 连续文件:次序相继的两个物理记录在存储介质上的存 储位置是相邻的 串联文件:物理记录之间的次序由指针相链表示 顺序文件特点: ⑴存取第i个记录,必须先搜索在它之前的i-1个记录 ⑵插入新的记录时只能加在文件的末尾 ⑶若要更新文件中的某个记录,则必须将整个文件复制
顺序文件优点:连续存取的速度快 磁带是一种典型的顺序存取设备,存储在磁带上的文件 是顺序文件。磁带文件适合于文件的数据量甚大,平时 记录变化少,只作批量修改的情况 磁带文件的批处理过程:待修改的原始文件为主文件,存放在一条磁带上,所有的修改请求集中构成一个文件,称做事务文件,存放在另一磁带上。主文件按关键字顺序有序,事务文件必须和主文件有相同的次序关系。首先对事务文件进行排序,然后将主文件与事务文件归并成一个新的主文件
索引文件 除了文件本身(称作数据区)之外,另建立一张指示逻辑记 录和物理记录之间—对应关系的表—索引表。这类包括 文件数据区和索引表两大部分的文件称为索引文件 例: 索引表示例
索引表的每一项称为索引项。不论主文件是否按关键字索引表的每一项称为索引项。不论主文件是否按关键字 有序,索引表中的索引项总是按关键字(或逻辑记录号)顺 序排列。 索引顺序文件:若数据区中的记录也按关键字顺序排列 索引非顺序文件:数据区中记录不按关键子顺序排列
ISAM文件和VSAM文件 • 索引顺序存取方法ISAM(Indexed Swguential Access Methed): 是一种专为磁盘存取设计的文件组织方式。 • 磁盘是以盘组,柱面和磁道三级地址存取设备,则可对磁盘上的数据文件建立盘组,柱面和磁道三级索引。 • 文件的记录在同一盘组上存放时,应先集中放在一个柱面上,然后再顺序存放在相邻的柱面上,对同一柱面,则应按盘面的次序顺序存放 • 每个柱面建立一个磁道索引,每个磁道索引项由两部分组成: 基本索引项和溢出索引项。如图:为存放在一个磁盘组上的ISAM文件
磁道索引 柱面索引 柱 面 C1 主索引 R164 柱 面 C2 柱 面 Cn
每一部分都包括关键字和指针两项,前者表示该磁道中最末一个记录的关键字,后者指示该磁道中第一个记录的位置,柱面索引的每一个索引项也由关键字和指针两部分组成,前者表示该柱面中最末一个记录的关键字,后者指示该柱面上的磁道索引位置每一部分都包括关键字和指针两项,前者表示该磁道中最末一个记录的关键字,后者指示该磁道中第一个记录的位置,柱面索引的每一个索引项也由关键字和指针两部分组成,前者表示该柱面中最末一个记录的关键字,后者指示该柱面上的磁道索引位置 如图: 溢出索引项 基本索引项
VSAM文件 • 虚拟存储存取方法VSAM(Virtual Storage Access Method): 这种存取方法利用了操作系统的虚拟存储器的功能,给用户提 供方便 • 用户在存取文件中的记录时,不需要考虑这个记录的当前位置是否在内存,也不需要考虑何时执行对外存进行“读/写”的指令 • VSAM文件的结构如图所示。由三部分组成:索引集,顺序集和数据集
索引集 B+树 .. 顺序集 .. .. 数据集 控制区域
文件的记录均存放在数据集中,数据集中的一个结点称文件的记录均存放在数据集中,数据集中的一个结点称 为控制区间,它是一个I/O操作的基本单位,它由一组 连 续的存储单元组成。控制区间的大小可随文件不同而不 同,但同一文件上控制区间的大小相同。每个控制区间 含有一个或多个按关键字递增排列的记录。顺序集和索 引集一起构成一棵B+树,为文件的索引部分。顺序集中 存放每个控制区间的索引项。每个控制区间的索引项由 两部分信息组成,既该控制区间中的最大关键字和指向 控制区间的指针。若干相邻控制区间的索引项形成顺序 集中一个结点,结点之间用指针相链结,而每个结点又 在其上一层的结点中建有索引,且逐层向上建立索引。
VSAM文件特点: • 在VSAM文件中,记录可以是不定长的 • VSAM文件中没有溢出区 • VSAM文件占有较多的存储空间 VSAM文件优点: • 动态的分配和释放存储,不需要对文件进行重组,并能较快的对插入记录进行查找,查找一个后插入记录的时间与查找一个原记录的时间是相同的
直接存取文件 直接存取文件指的是利用杂凑(Hash)法进行组织的文件。 和哈希表的异同点: • 类似与哈希表,既根据文件中关键字的特点设计一种哈希函数和处理冲突的方法将记录散列到存储设备上,故又称散列文件 • 与哈希表不同的是,对于文件来说,磁盘上的文件记录通常是成组存放的。若干个记录组成一个存储单位,在散列文件中,这个存储单位叫桶(Bucket)。假若一个桶能存放m个记录,即m个同义词的记录可以存放在同一地址的桶中,而当第m+1个同义词的记录可以存放在同一地址的桶中,而当第m+1个词出现时才发生“溢出”。处理溢出可采用哈希表中处理冲突的各种方法,但对散列文件,主要采用链地址法。
具体处理溢出方法: 当发生溢出时,需将第m+1个同义词存放到另一个桶中, 通常称此为“溢出桶”;相对地,称前m个同义词存放的桶 为“基桶”。溢出桶和基桶大小相同,相互之间用指针相链 接。当在基桶中没有找到待查记录时,就顺指针所指到 溢出桶中进行查找。 例:某一个文件有 18个记录,其关键字分别为 278,109,063,930,589,184,505,269,008,083,164,215,330,810, 620,110,384,355.桶的容量m=3,桶数b=7。用除留余法作 哈希函数H(key)=key MOD 7。由此得到的直接存取文件 如下图:
基桶 桶编号 溢出桶 0 1 2 3 4 5 6 直接存取文件示例
直接文件的查找: 首先根据给定值求得哈希地址(既基桶 号),将基桶的 记录读入内存进行顺序查找,若找到关键字等于给定值 的记录,则检索成功;否则,若基桶内没有填满记录或 指针域为空,则文件内不含有待查记录;否则根据指针 域的值的指示将溢出桶的记录读入内存继续进行顺序查 找,直至检索成功或不成功。 直接文件的删除: 和哈希表一样,仅需对被删记录作一标记既可。
直接存取文件的优点: 文件随机存放,记录不需进行排序;插入。删除方便,存取速度快,不需要索引区,节省存储空间。 直接存取文件的缺点: 不能进行顺序存取,只能按关键字随机存取,且询问方式限于简单询问,并且在经过多次的插入,删除之后,也可能造成文件结构不合理。
多关键字文件 多关键字文件的特点是,在对文件进行检索操作时,不 仅对主关键字进行简单询问,还经常对次关键字进行其 它类型的询问检索。 • 多重表文件 多重表文件的特点:记录按关键字的顺序构成一个串联 文件,并建立主关键字的索引;对每个次关键字项建立 次关键字索引,所有具有同一次关键字的记录构成一个 链表。
多重链表文件优点: 易于编程,也易于修改。如果不要求保持表的某种次 序,则插入新记录是容易的,此时可将记录插在链表的 头指针之后。 多重链表缺点: 删去一个记录繁琐,需在每个次关键字的链表中删去该记录 例:下图 (a)为一个多重链表文件。其中,学号为主关键 字,记录按学号顺序链接,为了查找方便,分成3个子链 表,其索引如图(b)所示,专业,已修学分和选修课目为 三个次关键字项,它们的索引如图(c)~(e)所示
物理 记录号 01 02 03 04 05 06 07 08 09 10 (a)
(c ) (b) (d) (e)
倒排文件 倒排文件和多重表的区别在于关键字索引的结构不同.通 常,倒排文件中的次关键字索引为倒排表,具有相同次关键 字的记录之间不设指针相链,而在倒排表中该次关键字的 一项中存放这些记录的物理记录号.例:上例文件的倒徘表 如下图所示:
(a)专业倒排表 (b)已修学分倒排表 (c )选修课目倒排表
倒排表索引的优点: 在于检索记录较快 倒排文件的缺点: 维护困难.在同一索引表中,不同的关键字其记录数不 同,各倒排表的长度不等,同一倒排表中各项长度也不等