330 likes | 470 Views
第十二章 文件. 主要内容. 文件的基本概念 顺序文件 索引文件 索引顺序文件 (ISAM 文件和 VSAM 文件 ) 直接存取文件 ( 散列文件 ) 多关键字文件. 文件的基本概念. 表 存储在 内存 中的大量记录的集合。 文件 存储在 外存 中的大量记录的集合。 不同的范畴中,文件代表不同的意义 操作系统中,文件是 命名的无结构的字节序列 ,其记录的格式依需要可以灵活划定。 文件管理系统或数据库系统中,文件是 命名的性质相同的逻辑记录的集合 ,每个记录由若干个数据项构成。文件被放置在外存上。 . 文件的基本概念.
E N D
主要内容 • 文件的基本概念 • 顺序文件 • 索引文件 • 索引顺序文件(ISAM文件和VSAM文件) • 直接存取文件(散列文件) • 多关键字文件
文件的基本概念 表 存储在内存中的大量记录的集合。 文件 存储在外存中的大量记录的集合。 不同的范畴中,文件代表不同的意义 • 操作系统中,文件是命名的无结构的字节序列,其记录的格式依需要可以灵活划定。 • 文件管理系统或数据库系统中,文件是命名的性质相同的逻辑记录的集合,每个记录由若干个数据项构成。文件被放置在外存上。
文件的基本概念 数据项(字段/属性)文件可使用的最小单位 主关键字项 其值能唯一标识一个记录的数据项或数据项的组合;该值称为主关键字。 次关键字项 其值不能唯一标识一个记录的数据项,称为次关键字。 单关键字文件 文件的记录只有主关键字 多关键字文件文件的记录除有主关键字,还含有若干个次关键字 定长记录文件每个记录含有信息的长度相同(所有数据项定长) 不定长记录文件 文件中每个记录含有的信息长度不一定相同
文件的逻辑结构及操作 [文件中记录之间的逻辑关系]一般看作是线性关系 [文件上的主要操作] (1)检索 • 顺序检索:存取下一个逻辑记录 • 直接检索:存取第i个逻辑记录 • 按关键字检索 简单询问:查询单个关键字等于给定值的记录 范围询问:查询单个关键字属于某个范围的所有记录 函数询问:规定单个关键字的某个函数,查询函数的值 布尔询问:以上三种询问用布尔运算(与、或、非)组 (2)修改 对记录的插入、删除,对记录某些数据项的更新等 [文件操作的处理方式] • 实时 • 批量
文件的存储结构(物理结构) [物理记录(页块)和逻辑结构之间可能存在的关系] • 一个物理记录存放一个逻辑记录 • 一个物理记录存放多个逻辑记录 • 多个物理记录存放一个逻辑记录 [文件的常用存储结构] • 顺序组织 • 索引组织 • 散列组织 • 链组织 文件操作实现的基本方法 内外存交换以物理记录为单位 块号 内存 外存 取 存
顺序文件 顺序文件的组织方式和特点 [组织方式] 记录在物理结构中的排列顺序与逻辑顺序一致。 • 连续文件:次序相继的两个物理记录的存储位置是相邻的 • 串联文件:物理记录之间次序由指针相链表示 [特点] 根据记录的序号或记录的相对位置进行存取。 顺序存取时效率较高。
顺序文件上的查找 [查找] • 顺序存取存储器(磁带)上的顺序文件 • 顺序查找 为提高效率,适合于批量检索。 • 直接存取存储器(磁盘)上的顺序文件 • 顺序查找 • 折半查找 适合于较小的有序定长记录文件的检索。查找很大的文件时(多个柱面),磁头频繁移动,降低时效。
批量处理方式:增删改 由于文件的记录不易于像内存空间的数据那样“移动”,通常采用批量处理方式。 事务文件 在一段时间内使用的记录 修改请求 排序 原始文件 (有序) 有序的事务文件 主文件 新主文件
索引文件 索引文件的组织方式 主文件 + 索引表(按主关键字有序) 索引项的结构: 关键字 物理块号 • 索引文件只能是磁盘文件 • 索引顺序文件:主文件中的记录按主关键字有序 • 索引非顺序文件:主文件中的记录按主关键字无序 • 稠密索引:主要用于索引非顺序文件 主文件中的每个记录对应一个索引项 • 稀疏索引:用于索引顺序文件 主文件的每个页块对应一个索引项
索引文件上的操作 前提:索引非顺序文件,稠密索引 [查找] 1)将外存上存放索引表的索引区页块读入内存,可采用顺序或折半查找来查找记录的物理记录号(块号) 2)再将外存上存放该记录的数据区页块读入内存进行查找 [修改] • 插入:将插入的记录置于数据区末尾,并在索引表中插入索引项 • 删除:删去相应的索引项 • 更新:若主关键字被修改,则需修改对应的索引表项
多级索引 当外存的一个页块不能容纳下索引表时,通常可以为索引表再建立一个索引,称为查找表;在此基础上还可以建立第二查找表、第三查找表、…… [例] 主文件 索引表 查找表 物理记录号 学号 姓名 其它 关键字 物理记录号 最大 物理 101 07 王得 15 04 103 关键字 块号 101 12 谢旺 07 101 12 15 103 04 陈明 12 101 44 16 103 44 胡建 16 22 104 104 37 刘流 37 104 104 22 郑辰 44 103
多级索引特点 • 为减少访问外存次数,应尽量减少索引表深度 • 各级索引均为顺序表,结构简单;但修改不便,每次更新操作,可能都要重组索引,因此多级索引适合于静态索引 • 当文件记录变动较多时,可采用适合于动态索引的树表结构,插入删除方便 • 平衡二叉树:内存可容纳整个索引表 • B-树:索引表很大时
索引顺序文件 索引顺序文件是常用的一种文件组织形式 • 主文件按关键字有序,可以有较高的检索效率 • 采用稀疏索引,索引占用空间较少 ISAM(索引顺序存取方法)文件 • 专为磁盘存取文件设计的文件组织方式 • 静态索引结构
ISAM文件的组织方式 多级主索引+柱面索引+磁道(盘面)索引+主文件 主索引 柱面索引 磁道索引 主文件 柱面C1 磁道索引 T1 T2 T8 T9 T10 R14 R21 R45 R50 450 79 C1T1 50 T2’1 60 T9’2 870 130 C2T1 R79 60 ^53 T9’1 溢出区 柱面C2 磁道索引 T1 T2 T8 T9 T10 R84 R88 R90 R91 R130 …… 溢出区 ……
ISAM文件上的操作 1.查找让主索引常驻内存 1)从主索引出发,确定相应的柱面索引 2)读入柱面索引,确定记录所在柱面的磁道索引地址 3)读入磁道索引,确定记录所在的磁道 4)在该磁道上查找 从磁道索引项的溢出索引项中得到溢出链表的头指针查找 2.插入 1) 利用查找确定记录应插入的柱面和磁道 2)该磁道不满,则插入该磁道的适当位置上,结束 3)该磁道已满,视插入记录的关键字 • 插入磁道,调整溢出链表和磁道索引 • 直接插入溢出链表,调整磁道索引
ISAM文件上的操作 3.删除 1) 查找待删除的记录 2)在基本区时,在其存储位置上作删除标记 在溢出区时,可从链表中取消 周期性地集中整理ISAM文件,以保证空间利用率和存取效率。
ISAM小结 [ISAM小结] • ISAM文件是一种多叉树形的索引顺序文件 • 叶结点存放数据记录,组成文件的数据区 • 非叶结点组成文件的索引区 • 文件在记录插入和删除时,索引结构不变,是静态索引结构 • 主索引和柱面索引在每次检索时都需查找,宜放在文件所占的几个柱面的居中的柱面上,使磁头平均移动距离最小。
VSAM(虚拟存储存取方法)文件 • 此存取方法利用虚拟内存系统访问存储设备 • B+树(B树的变型)动态索引结构 • 大型索引顺序文件 [VSAM文件的组织方式] root 59 97 B+ 树 索引集 15 44 59 72 97 10 15 20 37 44 51 59 63 72 85 91 97 顺序集 sqt 5 7 10 11 12 15 数据集 控制区间(道) 控制区域(面)
VSAM文件上的操作:查找和插入 1.查找 • 方法1:随机查找。 • 方法2:顺序查找。 2.插入 分为三种情况: • 所插入的控制区间未满 将待插记录插入合适的位置 • 所插入的控制区间已满,但其所在的控制区域有空闲控制区间 分裂该控制区间,将近乎一半的记录移到全空的控制区间,并修改顺序集中的相应索引 • 所插入的控制区域已满 分裂控制区域,一般控制区域较大,此情况很少
VSAM文件上的操作:删除 3.删除 在一个控制区间内,被删记录之后的记录前移。若该控制区间变空,回收为空闲区间,并删除顺序集中的相应索引
VSAM和ISAM文件相比的优点 • 能保持较高的查找效率 • 动态地分配和释放空间 • 不必随记录的变动对文件进行再组织
直接存取文件(散列文件) 散列文件的组织方式 • 类似于散列表 • 处理冲突主要采用拉链法 • 桶:一个存储单位(一块/多块),可以存放若干个记录 • 基桶 • 溢出桶 装载因子: =n/(bm) n:记录数 b:桶数 m:桶容量 基桶 溢出桶 桶号 0 063 184 ^ 1 589 008 505 2 ^ 3 014 ^ 4 930 011 384 320 ^ 007 123 089 ^
散列文件上的操作 [查找] 1)由散列函数求出基桶地址 2)将基桶读入内存顺序查找 3)若未查到,读入溢出桶继续查找 [插入] 1)由散列函数求出基桶地址 2)读入基桶,若基桶未满,直接插入 3)若基桶已满,但溢出桶有空,插入溢出桶 否则,指定溢出桶空间,插入 [删除] 在被删记录上作删除标记
散列文件的优缺点 [优点] • 文件记录不必排序 • 便于插入、删除记录 • 存取速度快 • 节省存储空间 [缺点] • 只能按关键字存取,询问方式限于简单询问 • 多次插入、删除记录会造成文件结构不合理,需重组文件
多关键字文件 [目的] 方便对次关键字的查询 [多关键字文件的概念] 包含有多个次关键字索引的文件 [两种主要的组织方式] • 多重表文件 • 倒排文件
多重表文件 [组织方式] 主文件(主关键字有序顺序文件,含有一个或多个次关键字链表) +主关键字非稠密索引+ 一个或多个次关键字索引表 [例]次关键字 头指针 链长 物理记录号 学号 姓名 成绩 性别 主关键字 头指针 100 01 78 ^ 男 101 03 100 101 02 86 102 男 103 06 103 102 03 89 ^ 女 104 09 106 103 04 72 100 男 106 成绩 性别 104 05 65 ^ 女 105 60 104 1 男 100 4 105 06 94 ^ 女 ^ 70 103 2 女 102 3 106 07 83 101 男 ^ 80 106 3 90 105 1
多重表文件操作 1.查找 • 根据次关键字的索引,得到次关键字表头指针 • 若多个次关键字的布尔“与”,应选较短的链表进行查找 2.插入 • 插入主文件,调整其中的次关键字链表 • 修改次关键字索引表 3.删除 • 在主文件删除记录,调整其中的次关键字链表 • 修改次关键字索引表 [优缺点] • 易于查找;且不要求保持链表的某种顺序时,插入方便 • 删除记录处理繁琐
倒排文件 [组织方式] 主文件 (主关键字有序顺序文件,含有一个或多个次关键字表) +主关键字非稠密索引+一个或多个次关键字倒排表(索引表) 次关键字 物理地址(或主关键字)序列 [例] 物理记录号 学号 姓名 成绩 性别 成绩倒排表 100 01 78 男 60 104 101 02 86 男 70 100,103 102 03 89 女 80 101,102,106 103 04 72 男 90 105 104 05 65 女 性别倒排表 105 06 94 女 男 100,101,103,106 106 07 83 男 女 102,104,105
倒排文件操作 1.查找 进行多关键字查询时,可在倒排表中完成查询条件的布尔运算,最后对记录进行存取。 2.修改 在主文件中插入/删除/更新记录,并修改倒排表 [优缺点] 查询快,但维护困难
作业 1. 设有一个 职工文件,其记录格式为(职工号、姓名、性别、职务、年龄、工资),其中职工号为关键字,并设该文件由如下五个记录组成: 地址 A 39 张三 男 程序员 25 3270 B 50 王二 女 分析员 31 5685 C 10 李四 男 程序员 28 3575 D 75 丁一 女 操作员 20 1650 E 18 赵五 男 分析员 33 6280 1)若该文件为顺序文件,写出文件的存储结构; 2)若该文件为索引文件,写出索引表; 3)若该文件为倒排文件,写出关于性别和职业的倒排索引。
2. 下图给出了ISAM文件的局部表示,其中记录用关键字代表。画出插入57、119再删除91的状态。 T1 62 T2,1 64 T5,1 83 T3,1 ^ 135 T4,1 ^ T2 33 35 36 48 5 1 62 T3 65 70 71 72 79 83 T4 91 102 110 111 120 135 T5 64 ^ T6 道索引 基本区 溢出区
3. 假设物理块(桶)大小为100,若要求对含有30000个记录的直接存取文件进行一次按关键字查询时,读外存次数的平均值不超过2,则该散列文件应设多少个散列项?