第二章数据库的存储结构

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第2章数据库的存储结构

本章学习目标

本章主要介绍了基本的文件组织方式及各自的特点,并在此基础上介绍了D

BMS系统所采用的倒排表、索引链接文件与多重链表文件索引、B+树等快速文

件查找处理方法。通过本章学习,读者应该掌握以下内容:

●●顺序文件、链表文件、随机存取文件、索引组织文件等文件组织方

式的特点

●●倒排表的操作

●●B+树的组织结构与基本操作

在数据库系统设计时必须考虑如何在机器上实现的问题,要求能将各种数据存储在机器内,而且要能反映各种数据之间的联系;要求存储、维护尽可能方便高效;要求检索、使用数据操作简单,运行效率高。为此要讨论各种存储组织结构和各类索引结构。

数据库是利用文件系统来完成数据的存取的,数据及相关联系可在一个文件中存放,也可分别存放;文件有顺序文件,随机文件等不同类型;顺序文件又有按某个码排序的文件及按记录录入先后次序存放的文件等不同。

2.1基本文件组织

2.1.1顺序文件组织

在顺序文件中,记录被物理地按地址次序排列,排列顺序为按某一码值的升或降序,也可为记录录入的先后次序。

按码值排序时,其顺序还与存储方式有关。有按二进制数和ASCII码存储两种形式,如按前者,根据码值数值大小排序。如按后者,可视为字符串,对二个字符串比较时,从左边第一个字符起进行比较,直到对应字符不相同为止,此时该二字符的ASCII码值较大者对应的字符串较大。。例如“ABCDEF”和“ABZ”二个串,第三个字符对应不相同,其左边各字符对应都相同,则因“ABZ”的第三个字符的ASCII码值较大,这个串的值也就较大。采用这类排序文件,优点是在查找时可利用二分法,插值算法和分区算法等方法加快查找速度,缺点是在进行数据录入,修改、删除时要花费大量时间用于排序,非常耗时。而且,对于数据库数据的检索要求将是多方面的,例如按姓名查找某个人,或者按专业来查找一批人,或者按姓名与专业来查找一批人等,不可能按每一种检索要求生成一个排序文件,因为

那样做占据空间太多,维护也无法进行。因此一般维护工作量大或检索内容较多的系统,都采取按记录录入先后次序安排记录的方式顺序存放数据。再利用索引文件加快查找速度。VFP数据表文件就采用顺序文件组织方式,同时提供多种索引方式以利于数据查找和使用。

2.1.2 链表结构文件组织

链表结构组织的文件的基本特点是数据在物理上可以任意存放,利用指针表现数据间的逻辑关系。指针又分为单链表,环链表,双向链表等不同形式。在数据库中,这种结构的优点是记录的增删容易实现,其主要问题在于只能按指针顺序检索,速度较慢。

IMS数据库中记录不等长,采用链表结构组织数据,检索时一般从根片段值开始,根据根片段值的关键字大小进行查找。利用顺序文件和其他结构文件相结合进行存储,例如采用顺序文件ISAM和溢出顺序文件OSAM或顺序文件ISAM和虚拟存储文件VSAM两个文件来存放数据,将所有记录开始部分划分成等长的一段,在ISAM中按顺序方式存放;每条记录剩余部分按先后次序存放于第二个文件中,第一个文件中数据通过指针与第二个文件相联系。由于在第一个文件中每个记录取出部分均等长,因此可较容易计算欲检索内容的大致存放位置,从而大大加快检索速度。例如图1.4 数据存储结构如图2.1所示。

这类结构可以实现从头开始循链表查询上述问题,这是层次数据库组织数据的方法之一。

在关系数据库VFP中,设计有备注字段(M)和通用字段(G)两种数据类型,前者用于存放如履历、文件内容、使用说明等这样一些数据。后者用于存放如相片、图片、数值文件

等内容,各条记录中这类数据内容可有可无,长度相差甚远,如用等长方式存储,则占用存储空间太多,许多是空的,不便管理也影响效率。在VFP中采用DBF、FPT、TBK三种文件分别存放一般数据、备份字段数据、通用字段数据,在DBF文件中,相应的备注(M)型和通用(G)型数据单元中只存放指针,指向相应在FPT和TBK文件中的内容。

在DBTG网状数据库中,“系”结构采用了双向链表和环链表结构两种指针结构。使用单向链表从系主查找成员比较方便,但要查找每个结点的前趋结点则困难。使用双向链表,每条记录有一个指针指向按顺序它的下一个结点,同时又有一个指针指向其前趋结点,这样就可解决上述二个问题,删除操作也将变得容易。环链表是一个首尾相接的线性表,查找时可以从任意一个单元开始直至遍历整个环,也易于从一个环进入到另一个环。

DBTG网状数据库还采用了指针阵列,指向系主记录的物主指针等结构。

2.1.3随机存取文件组织(Hash文件组织)

这类文件组织利用散列(Hash)函数Y=F(X)把码值映射成记录存储地址,直接存取。其中X为码值,y为地址。知道码值立即可算出地址,一般说来查找效率很高。影响这类存储方法效率的关键在于冲突发生的频率,所谓冲突,是指多个记录计算后取得的存储地址相同,必须采用一定的算法处理其存储位置。采用这类文件组织需要设计恰当的Hash函数,以求尽可能减少冲突并设计发生冲突时的算法。

为减小冲突,常利用“桶”作为编址的基本单位。把若干存储单元作为一组并以同样的地址加以标识。例如图2.2所示,一个有N个桶的Hash文件,每个桶可装K条记录,当桶已装满后按溢出处理方式处理。

上述存储结构也是IMS采用的一种存储结构。

2.2索引文件组织

记录按录入先后次序存储,数据维护比较方便,但检索速度较慢。其原因之一是因为数据库的数据量比较大,在对它处理时,一般需经过多次内外存数据交换,多次访问磁盘与寻道的速度远较机内数据传送和CPU处理速度要慢得多,检索速度一般决定于读写盘次数,访问次数越多,检索速度就越慢。每次读写盘交换的最大数据存储区称为块,在块内数据检索时间常可忽略不计。其二,是因为对检索内容未予排序,只能采用顺序查找方式。若供查询记录数为N时,平均查找到一条记录约需N/2次比较。

采用排序文件在数据库系统中一般不具实用性,因为排序文件与原文件规模相同,不可能对各类检索――生成排序文件。为此数据库常采用索引文件组织,目的在于提高检索效率。

2.2.1 索引文件

用户检索要求总是针对某一个属性或某几个属性进行。例如查找姓名为王平的记录是针对姓名检索;求年龄大于25的学生记录是针对年龄检索;求姓王且年龄大于25的学生记录是针对姓名和年龄检索。我们称查找针对的属性或属性组为查找字。

索引项由查找字值和指针组成,结构为:(查找字值,指针)。由索引项构成、并按查找字排序的文件称索引文件。对每条记录生成一个索引项的索引文件又称稠密索引。由于索引项远小于一般记录长度,因此索引文件规模远小于原文件。如果内外存交换数据的单位为块,一个索引文件的大小大于块的大小,不能一次将索引文件调入内存,可再建立高一层索引,可以将原索引文件分段,取每段最末一个索引项的查找字值及其在索引文件中的地址指针构成该级索引项,这样构成的索引文件称稀疏索引。可以一级级建下去直到索引文件的大小不超过块大小为止。在检索时,首先从最高层索引查起,找到欲查记录在下一级索引的哪一块中,再一级级查下去,直到查到欲查记录(或证实文件中无欲查记录),从原文件中取出检索结果。这样将使内外存互访次数降至最小,读盘次数借助直接存取技术可小到等于索引级数加1。

索引文件规模小,容易维护,在VFP中有二类索引文件,独立索引文件(.IDX文件)和复合结构索引文件(.CDX文件)。使用独立索引文件前要求先打开索引文件。如在打开索引的情况下,对原表进行录入、修改、删除等操作,索引文件均会自动更新。如在对数据维护之前未打开索引文件,则在数据维护完成后必须重建索引或更新索引。

在VFP中可将多个索引保存在一个文件中,其文件名与表名相同,后缀为CDX,称为复合结构索引文件,在使用表时,该文件中索引将被自动打开。复合结构索引文件在建库或修改库结构时建立。

VFP中索引有四种类型:

相关文档
最新文档