数据结构——文件
3、ISAM 文件的插入和删除
➢插入新纪录时,首先找到它应插入的磁道,若该磁道不满,则将 新纪录插入该磁道的适当位置上即可;若该磁道已满,则新纪录 或插在该磁道上,或直接插入到该磁道的溢出链表上。插入后, 可能要修改磁道索引中的基本索引项和溢出索引项。
➢删除记录时,只要找到待删除的记录,在其存储位置上作删除标 记即可,而不需要移动记录或改变指针。
3、文件基本操作2
(2)文件更新
数据库文件的维护操作可以分为文件更新、故障恢复、安全性保护 和完整性约束等基本情形。 文件更新操作类型: ● 插入记录 在给定文件中插入给定的数据记录。此时是针对整条数据记 录的操作。 ● 删除记录 在给定文件中删除其中一条或多条记录,此时也是针对整条 记录的操作。 ● 修改记录 在给定文件中修改其中一条记录的某个或多个数据项,此时 是针对记录中部分数据项的操作。
顺
85
序 集
4 8 15 17 22 25 30 32 36 39 42 47 55 59 61 67 70 85
数 据
9
24
33 37 40 44
57
65
73
集
控制区域
控制区间
2、VSAM 文件的插入和删除
➢ VSAM文件中没有溢出区,解决插入的方法是在初建文件时留出空 间:一是每个控制区间内不填满记录,在最后一个记录和控制信 息之间留有空隙;二是在每个控制区域中有一些完全空的控制区 间,并在顺序集的索引中指明这些空区间。当插入新纪录时,大 多数的新纪录能插入到相应的控制区间内,但要注意保持区间记 录的关键字从小至大有序。
➢ 按文件实际用途可以分为操作系统文件和数据库文件: ① 操作系统文件 无严格意义下的数据结构,只是作为记录的集合
,主要表现为一维无结构连续字符序列,记录之间既没有结构的 解释也没有特性的解释;相应文件操作只有“整体”操作即打开 或关闭文件、删除文件或复制文件等;以及“字节”操作即从文 件读取一个字节或将一个字节写到文件当中。 ② 数据库文件 各项记录之间具有严格的逻辑结构(例如基本的线 性表结构、关系文件和面向对象文件结构等),同时每个记录也 有相应结构,即数据库记录由若干数据项构成。
…
住址 长沙 广州 …
➢ 按只有主关键字还是同时具有主关键字和次关键字而分为单关键 字文件或多关键字文件:
●单关键字文件:记录中只有一个惟一标识记录的主关键字。 ●多关键字文件:记录中除了含有一个主关键字外还含有若干个次
关键字。
1、文件逻辑结构
➢ 作为存储在外存中的数据,文件是具有相同性质的记录集合, 其逻辑结构应当为集合。但在实际操作过程中,文件中各个记 录至少都是“顺次”进入计算机的,即其至少具有“工作”顺 序,在这种意义下,通常将文件看作一种线性表,或者说,文 件就是外存中的线性表。
进行“顺序存取”和“成批处理”。 ➢磁带是一种典型的顺序存储设备。 ➢磁带适合于存放文件数据量大、文件中的记录平时变化少、只作批量修改
的情况。 ➢存储在磁带上的顺序文件只能采用顺序查找法,即顺序扫描文件,按记录
的主关键字逐个查找。 ➢优点:连续存取时速度快,例如,如果文件中的第i个记录刚被存取过,
而下一个要存取的记录就是第i+1个记录,则此次存取将会很快完成。批 处理效率高,节省存储空间。 ➢缺点:实时性差,特别是更新操作要复制整个文件,所以一般不做随机处 理,如删除记录时只做标记处理。
10.2.2 基于磁带/磁盘的顺序存储2
2、基于直接存储器的顺序文件 ➢顺序文件也可以存放在直接存取设备上,磁盘就是一个直接存
取的存储设备。 ➢存放于磁盘上的文件,既可以是顺序文件,也可以是索引结构
或其它结构类型的文件。 ➢对存储在这类设备上的顺序文件不仅可以进行顺序存取,还可
进行分块查找、二分查找等查找方法。 ➢对磁盘等直接存取设备,还可以对顺序文件进行插值查找和跳
➢数据库文件: 例:下图是一个学生学籍文件,每个学生情况形成一个记录。每个 记录由学号、姓名、性别、籍贯、出生年月和住址6个数据项组成。 定义“学号”是主关键字,“姓名”、“性别”等是次关键字。
学号 101 102 …
姓名 张宏 李焯
…
性别 男 男 …
籍贯 湖南 广东
…
出生年月 1990.12 1991.5
✓ 和ISAM文件相比,给基于B+树的VSAM文件有如下优点:能保持较高的查
(a)主索引项结构 该柱面最大关键字 该柱面磁道索引起始地址
(b)柱面索引项结构
该 道 最 大 关 键 该道起始地址
字 (c)磁道索引项结构
该道溢出链表最大关键字
该道溢出链表头指针
C0T0 300 560 …
C0T1 ~C0Tn 70 150 … 300 375 … 56
10.2.1 顺序文件存储结构
➢ 顺序文件在存储介质中可以有两种不同的存储结构:连续结构 和链式结构。
➢ 连续结构是指逻辑上相邻的记录其存储位置是相邻的; 连续顺序文件
➢ 链式结构是指物理记录之间的次序由指针链来表示。 链接顺序文件
10.2.2 基于磁带/磁盘的顺序存储
1、基于顺序存储器的顺序文件 ➢存储在顺序存储器(如磁带)上的文件,只能是顺序文件,这种文件只能
3、文件基本操作
(1)文件检索 文件检索就是在文件中查找满足给定条件的数据记录,实现途径可以是按
照记录进入外存的时间顺序(逻辑序号)查找,也可以是按照记录的关键字 大小查找。 ① 顺序检索 通过逐次读取所有序号小于i的记录,定位所需要的第i号记录。 ② 直接检索 不通过逐次读取所有序号小于i的记录而直接定位第i号记录。直 接检索也称为随机检索。 ③ 按关键字检索 定位关键字与给定关键字相同或相关的数据记录。 ● 简单检索:询问单个关键字等于给定值的记录。 ● 范围检索:询问单个关键字属于某个范围内的所有记录。 ● 函数检索:规定单个关键字的某个函数,询问该函数的某个值。 ● 布尔检索:以上三种询问用布尔运算(与、或、非)组合起来的询问。例如查 询某成绩表中,查找表中(数学成绩>90)and(性别=“女”)的记录。
➢ 索引表的基本特征是其中索引项必须按关键字(或逻辑记录号)有序排列 而无论主文件是否按关键字有序。
➢ 如果主文件本身按照主关键字有序,就称相应索引文件为索引顺序文件; ➢ 如果主文件不是按照关键字有序,则称相应索引文件为索引非顺序文件。
10.3.1 索引概念及操作2
➢ 索引顺序文件通常有ISAM(Indexed Sequential Access Method) 文件和VSAM(Virtual Storage Access Method)文件两种类型。
➢在经过多次的增删后,文件的结构可能变得很不合理。因此,通 常需要周期性地整理ISAM文件,把记录读入内存重新排列,复制 成一个新的ISAM文件,填满基本区而空出溢出区。
VSAM(Virtual Storage Access Method)即“虚拟存储存 取方法”也是一种索引顺序文件的组织方式,采用B+树作为动态 索引结构。
步查找。
10.3.1 索引概念及操作
➢ 索引结构是当文件信息存放在若干不连续物理块中时,系统为该文件建立 一个专用数据结构即索引表,需要存储的文件(主文件)和索引表构成的 二元组就是索引文件。
➢ 作为文件信息所在逻辑块号和与相应物理块号之间的对照表,索引表中每 一个记录称作索引项。索引项由主关键字(或逻辑记录号)和该关键字所 属文件记录的物理块号组成。
➢ 文件的应用背景,数据结构范畴的文件概念。 ➢ 基于检索的文件的基本形式与特点。 ➢ 常用的文件方式和关键技术实现要点。
10.1.1 文件
文件(file) 文件是性质相同、逻辑上相关的数据记录集合。
➢ 按数据记录的长度是否确定而分为定长文件和不定长文件: ●定长文件:文件中所有记录含有的数据项个数相同。 ●不定长文件:文件中记录含有的数据项个数不等。
➢ 在VSAM文件中删除记录时,需将同一控制区间中比删除记录关键 字大的记录向前移动,把空间留给以后插入的新纪录。若整个控 制区间变空,则将其回收用作空闲区间,且需删除顺序集中相应 的索引项。
3、ISAM和VSAM比较
✓ ISAM是一种专为磁盘存取设计的文件组织形式,采用静态索引结构,对
磁盘上的数据文件建立盘组、柱面、磁道三级索引。ISAM文件中的记录 按关键字顺序存放。经过多次插入和删除记录后,文件结构变得不合理 ,需定时整理ISAM文件。
3、文件基本操作
(1)文件检索2 按操作的处理方式,可分为实时与批量处理两种不同的方式: 实时处理:响应时间要求严格,要求在接受询问后几秒种内完成检索和
更新。 批量处理:响应时间要求宽松一些,不同的文件系统有不同的要求。
例如一个银行的账户系统,需要满足实时检索要求, 也可进行批量更新,即可以将一天的存款和提款记录在一个 事务文件上,在一天的营业之后再进行批量处理。
➢ 索引非顺序文件通常有B-树和B+树等方式。
10.3.1 索引概念及操作3
➢ 索引文件操作主要是查找和修改两种情形。 ● 索引文件查找 一般分为直接存取和按关键字存取,检索可以分成
两步进行:首先在索引表容量合适的情况下,将索引表读入内存; 然后根据关键字或逻辑记录号通过二分查找方法在索引表中查找记 录是否存在。此时在查找记录成功情况下至少需要访问外存两次。 ● 索引文件修改 插入记录时,记录插入在主文件的末尾,同时在索 引表中合适的位置插入索引项,而删除记录时,在索引表中删除相 应的索引项。由于索引表具有顺序存储结构,插入和删除后应当保 持新的索引表的顺序结构,因此可能需要移动大量的索引记录。更 新记录时,将更新后的记录插入在主文件的末尾,同时修改相应的 索引项。
ISAM (Indexed Sequential Access Method) 即“索引顺序存取 方法”是一种专为磁盘存取文件设计的文件组织方式,采用静态索引 结构。