




已阅读5页,还剩52页未读, 继续免费阅读
(计算机软件与理论专业论文)面向应用的嵌入式可裁减数据库管理系统.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
由向j 电用的嵌入式町托减数据库管巳巳系统;摘要 摘要 面向应用的可裁减数据库管理系统是针对嵌入式设备和嵌入式应 用的特殊情况和需求背景而提出的,其目的是实现灵活开放的数据库管 理系统,使它能够根据实际应用的需要自动订制所需的数据库功能模块, 从而以最少的系统内核为不同应用提供数据库支持 在本文中提出了基于组件的数据库管理系统,其基本思想是用多个 独立的组件分别实现数据库系统的不同功能,组件只在需要的时候才加 载到系统中本文首先介绍了系统的工作方式,即采用b r o k e r s e r v i c e s ( 代理服务) 型,组件是发出服务请求和执行服务的实体,他们之问通 过服务的请求和反馈实现相互问的通讯,组件根据e c a ( e v e n t - c o n d i t i o n - a c t i o n ) 规则来执行服务接着,本课题对整个d b m s 系统进行层次划分和子系统划分,描述了各个子系统的主要功能以及它 们提供的服务,在此基础上分析了子系统之间的相互关系,即子系统在 实现自身功能时可能会向其它子系统发出的服务请求为了使数据库系 统能够自动识别并加载应用所需的功能模块,本课题还分析了如何从实 际应用中提取出与数据库相关的特性,并根据这些数据库特性从系统的 组件库中选择最优的组合来形成一个完整的d b m s 在本文中还介绍了系统的一些辅助工具,如接口语言编译工具、应 用程序分析工具、系统配置工具等,以加快系统的合成 关键词:b r o k e r s e r v i c e s 数据库管理系统e c a 规则 曲向府用的嵌入武a r 托减数据库管理系统:a b s t r a c t a b s t r a c t a p p l i c a t i o n o r i e n t e dt a i l o r a b l ed a t a b a s em a n a g e rs y s t e m h u a n gy a n f a n g ( c o m p u t e rs o f t w a r ea n dt h e o r y ) d i r e c t e db yz h o n gx i c h a n g , z h a n gn i a p p l i c a t i o n - o r i e n t e dt a i l o r a b l em a n a g e rs y s t e mi sp r o v i d e dd u et ot h e s p e c i f i cf e a t u r e so fe m b e d d e dd e v i c e sa n di t sa p p l i c a t i o n t h eo b j e c t i v e i st or e a l i z eo p e na n df l e x i b l es y s t e m 。m a k ei tb es u b s c r i b e df u n o t i o n s b yd i f f e r e n ta p p l i c a t i o na u t o m a t i c a l l y ,a n dt h u s p r o v i d en e c e s s a r y d a t a b a s ef u n c t i o n sw i t hm i n i m u mk e r n e l i nt h i sp a p e r ,w ep r o p o s e dc o m p o n e n t b a s e dd b m s ,w h i c hu s ec o m p o n e n t s t or e a l i z ed i f f e r e n tf u n c t i o n sa n dc o m p o n e n t sc a nb ea d d e di n t ot h es y s t e m w h e nn e e d e d f i r s t ,t h ew o r k i n gm o d e lo ft h es y s t e mi si n t r o d u c e d ,n a m e l y , b r o k e r s e r v e r s c o m p o n e n t sa r et h ee n t i t i e so fs e n d i n gs e r v i c e r e q u i r e m e n to ri m p l e m e n t i n gs e r v i c e s c o m p o n e n t sc o m m u n i c a t eb ys e n d i n g o rr e p l ys e r v i c e sf r o me a c ho t h e ra n di m p l e m e n ts e r v i c e sa c c o r d i n gt h e d e f i n i t i o no fe c a ( e v e n t - c o n d i t i o n - a c t i o n ) t h e n ,w ed i v i d e dt h es y s t e m i n t ot w ol a y e r sa n ds e v e r a ls u b s y s t e m s w ed e s c r i b e de a c hs u b s y s t e m s f u n c t i o na n di t si n t e r f a c ea c c e s s e db yo t h e rc o m p o n e n t s :b e s i d e s w e a n a l y z e dt h ep r o b a b l ei n t e r a c t i v ea m o n gs u b s y s t e m s i no r d e rt om a k e s y s t e ma b l et oi d e n t i f ya n du p l o a dn e c e s s a r yc o m p o n e n t sr e q u i r e db ya c t u a l a p p l i c a t i o n ,w ea n a l y z e dt h ea p p l i c a t i o n sd a t a b a s ef e a t u r e sb ys c a n n i n g t h es o u r c ec o d e ,a c c o r d i n gt ot h e s ed a t a b a s ef e a t u r e sw es e l e c tt h e o p t i m a ls u b s y s t e m ss e t st oi n t e g r a t ea nu n i f o r md b m s t h e r ew e r es o m ea s s i s t a n tt o o lk i t si n t r o d u c e di nt h i sp a p e r ,s u c h a ss p e c i f i c a t i o nc o m p i l e r 、a p p l i c a t i o na n a l y z e r 、c o n f i g u r a t i o nt o o la n d s oo n ,w h i c hf a c i l i t a t et h ei n t e g r a t i o no fs y s t e n i k e y w o r d s :d b m sb r o k e r s e r v i c e se c a r u l e 声明 我声明本论文是我本人在导师指导下进行的研究工作及 取得的研究成果。尽我所知,除了文中特别加以标注和致谢的 地方外,本论文中不包含其他人已经发表或撰写过的研究成 果。与我一同工作的同志对本研究所做的任何贡献均已在论文 中作了明确的说明并表示了谢意。 作者签名:氇牺畸日期:沙f 牛 论文版权使用授权书 本人授权中国科学院计算技术研究所可以保留并向国家有 关部门或机构送交本论文的复印件和电子文档,允许本论文被 查阅和借阅,可以将本论文的全部或部分内容编入有关数据库 进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编 本论文。 ( 保密论文在解密后适用本授权书。) 作者签名:煎扭叼导师签名:匿鞫 险锡; k 蟹! 蔗嘲二j 日期:z o ;9 第一帝哼i 高 1 1 应用背景 第一章引言 近年来,嵌入式系统在工业控制、交通运输、通讯、医疗系统、金融行业等 领域得到了广泛的应用,随着待处理的数据量增多和数据处理的复杂度不断提 高,嵌入式数据库管理系统把数据存储和处理任务从嵌入式系统中分离出来,使 开发人员在设计、实现应用功能时可以忽略与数据管理相关的任务,从而使开发 任务大大减轻,同时也降低了软件维护和测试成本,因此嵌入式数据库管理系统 无论在研究领域还是在商业领域都得到了极大的关注日前存在着多种商业嵌入 式数据库系统,如p e r v a s i v es o l 、b e r k e l e yd b 、r d m 等,他们具有不同的特性, 如支持不同的数据模型、为用户提供不同类型的数据访问接口等,这些不同的数 据库系统有他们各自适用的领域和优势,以至于应用程序开发人员在选择合适的 数据库系统前,首先要了解它们的特点,并权衡利弊,这给实际工作带来了一定 的困难。如果这些不同的特性可以并存在一个数据库系统中,将会带来很大的便 利,这也是提出本课题的一个重要的商业背景。 此外,由于嵌入式系统内存容量少,c p u 处理能力低,嵌入式应用实现的功 能往往比较单一和具体,对数据的处理和维护能力要求不高,在这种情形下,一 个功能完备的数据库管理系统不仅没有必要,而且会使本来就有限的内存资源更 紧张如p d a 上的交通导航系统,用来方便用户查找出行路线、换乘车辆等,对 于这种应用只需要数据库提供基本的存储和检索功能,而其他的如事务管理、同 步控制等功能却根本没起作用事实上,很多嵌入式应用都只需要数据库的一部 分功能就能完成任务,而嵌入式数据库的应用领域非常广泛,无论在金融领域, 医疗系统,还是在工业控制中都起着重要作用,而他们对数据库的要求也存在着 很大的差异,有些要求同步控制,有些要求安全管理,为此,需要一个能够随实 际应用的需要实现功能调节的数据库系统,这样不仅能满足应用的需求,还可以 最大程度地利用系统资源。 针对前面提到的实际需要,我们无法通过现有的数据库管理系统来达到目 的。因为传统的数据库系统通常采用固定的结构体系,系统一旦形成后,很难改 变它的数据库特点或对它进行功能修改和扩充,否则就需要对底层的结构和实现 做很大的修改,按这种方式形成的系统灵活性很差。许多大型数据库供应商已经 意识到这个问题,纷纷寻求新的途径来扩充功能,如o r a c l e 和i n f o r m i x 在系统 之外增加了d a t ac a r t r i d g e 和d a t ab l a d e 组件,专门用来处理音频、图像等非 标准数据类型,以此增强数据库的数据处理能力但由于其系统底层的结构和实 现是固定不变的,对功能的扩充也只限于增加数据类型等边缘数据库功能,无法 做到对数据库其他功能的裁减和扩充为此,需要设计一种结构更加灵活、开放 的数据库管理系统,使它能够根据实际需要完成系统重组,最有效地为各种应用 由向f 、y 用的嵌入武a r 战减数据库管理系! 宽 提供数据库支持 1 2 课题内容 本课题研究的面向应用的可裁减数据库管理系统利用软件可重用原理,把不 同的数据库功能下放到多个组件中并加以实现,通过选择不同的组件来实现系统 功能的裁减,从而形成一个开放、灵活的数据库系统本文从基于组件的数据库 管理系统的实现原理、工作方式和基本结构模式对系统的整体框架和主要组成部 分进行阐述,说明了整个基于组件的数据库管理系统的形成过程此外,还分析 了如何根据实际应用的特征来选择满足其特定需要的数据库功能组件的方法途 径,使系统可以自动地完成这一过程,从而减轻了应用程序开发人员的负担 本文的创新点主要体现在;提出了基于组件的数据库管理系统的主要结构模 型和如何实现系统的自动识别并选择系统内的组件 1 3 文本安排 论文结构的安排如下:第二章是课题技术概述,第三章是关于数据库管理系 统实现的基本技术,第四章是重点,提出了可裁减数据库管理系统的体系结构和 实现原理,4 1 节主要介绍了基于组件的数据库管理系统的特点和工作模式,4 2 节介绍了系统的基本组成,4 3 节描述了整个系统的形成过程,第五章首先对整 个数据库系统进行功能划分,并在此基础上介绍了每个子系统的功能、提供的服 务以及实现方法,同时分析了各个子系统之间的相互联系,第六章分析了系统如 何根据具体应用的特点自动完成功能选择,最后在第七章中对课题内容进行了小 结,并指出了下一步研究的主要任务。 第一二帝搜题技术综述 第二章课题技术综述 本章将讨论课题研究所涉及技术领域的发展历史、研究技术,并对相关技 术进行简要介绍。 2 1 相关研究 新的网络计算环境带来了各种新的数据类型,如音频数据,图像数据地图 等,越来越多的应用要求数据库能够处理工程图表分子结构以及各种复杂的数 据类型,这些都不能依赖数据库的标准数据类型如v a r c h a r i n t e g e r 来表示 为了满足这些实际的需求,o r a c i e 和i n f o r m i x 公司在其原有数据库的基础上进 行功能扩充,即增加c a t r i d g e 和d a t a b l a d e 组件,专门用来处理复杂的数据类 型。 c a t r i d g e 和d a t a b l a d e 模块的主要功能是处理新的复杂的数据类型以 o r a c l e 的c a t r i d g e 为例说明:d a t ac a t r i d g e 提供了一系列数据库接口 一o r a c l ed a t ac a t r i d g ei n t e r f a c e s ( o d c r ) ,应用开发者可以借助这些接口自 定义数据类型,还可以查询和处理这些类型。图2 - 1 显示了这种扩展模块的结构 图2 1o r a c l e 的可扩展结构 通过加载这个模块,应用程序开发人员可以通过c e + + 、j a v a 、p l s q l 语言处理 各种类型的数据,d b m s 自动提供底层服务支持数据的输入输出不同的客户断 访问新的数据类型,在应用程序和数据库之问数据传输的优化措施等等。这样, o r a c l e 。可以支持对象数据类型( o b j e c tt y p e ) 集合数据类型( c o l l e c t i o n t y p e ) 大数据对象( l a r g eo b j e e t s ) ,模糊数据类型( o p a q u et y p e ) 等,进一 步扩充了应用范围,降低了应用开发的代价 i n f o r m i xd a t a b l a d e 模块在牺牲数据库的稳定性和可靠性的前提下有效地 面向府用的嵌入式口j 试减数据库管理系统 结合了传统数掘库的标准类型和新的类型,使数据库提供特殊的应用功能和具有 更高的性能成为可能d a t a b l a d e 提供了多种子模块,如d i g i t a lm e d i a d a t a b l a d e 可以方便地管理图形,语音和视频数据,而t e x td a t a b l a d e 模块可 以快速地把手册,报表电子邮件网页传真等发布到网上,此外,文件可以 直接存放在数据库中,避免了建立单独的文件系统,更重要的是同步控制数据 库恢复能力和事务控制得到了有效的支持 o r a c l e 和i n f o r m i x 并不是可裁减的数据库系统,称他们为可扩展数据库可 能更为合适,因为除了d a t ac a t r i g e 和d a t a b l a d e 模块可以自由加载外。d b m s 的底层实现部分仍然是固定、不可改变的但他们采用的组件技术、。即插即用 “的思想与可裁减数据库系统的实现原理是一致的 2 2 从面向对象编程到组件软件 2 2 1 面向对象编程 目前,面向对象编程是软件业广泛采用的方法,反映在面向对象的编程语言 ( 如j a v a 、c + + 等) 的大量流行上简单地讲,面向对象编程技术的目标并不是 用模仿计算机逻辑的程序方式以方便编程,而是让开发者按照现实世界里人们思 考问题的模式编写程序面向对象编程语言让开发者更好地用代码直接表达现实 中存在的对象,它的基本特点是: 封装( e n c a p s u l a t i o n ) 一隐藏对象的实现细节 继承( i n h e r i t a n c e ) 重用已有对象以创建新的、更专门对象的能 力 多态性( p o l y m o r p h i s m ) 一根据所使用的对象,展现多种不同行为的编码能 力 2 2 2 组件软件 将工程分解为逻辑组件是面向组件分析和设计的基础,这也是组件软件的 基础。组件软件由可重用的二进制形式的软件块组成,这些软件块可以用相当小 的精力插入到来自其他开发商的组件中认识到软件开发采用基于组件的方式而 不规定软件的结构是很重要的而且,它是一种使得二进制软件组件的编程、使 用和独立发展成为可能的模式 组件的最简单形式就是包含了可以在一些平台上执行的代码和用来访问组 件的接口组件通常被认为是一个黑匣子,其中隐藏了内部的实现细节,接口成 为外部访问组件的唯一途径组件的两个特性重要特性是:第一,组件之间可以 在二进制级别上进行集成和重用。第二,组件必须被独立地生产、获得和配置。 与环境和上下文无关是组件封装性的体现 第二章谍题技术综述 现在,在学术界和商业界已经出现了多种标准化的组件模型,包括m i c r o s o f t 的 c o m 组件对象模型、s u n 的j a v a b e a n s e j b 和o m g 的c o r b a c o m ( c o m p o n e n t o b j e c tm o d e l ) 是由m i c r o s o f t 公司定制的、用来表达软件组件之问互相沟通的架 构;e j b ( e n t e r p r i s ej a v ab e a n ) 是由s u n 公司研制的,在j a v a 编程环境中支持可 重用的组件,它是一种一般性的设计方法,适用于客户机或服务器机器上运行的 j a v a 程序;c o m b a ( c o m m o n0 b i c c tr e q u e s tb r o k e ra r c h i t e c t u r e ) 是由 o m g ( o b j e c tm a n a g e m e n tg r o u p ) 定制的组件模型,主要用于u n i x 操作系统平 台。这些商用组件在很多地方得到了应用,取得了很好的效果但是,由于嵌入 式设备特有的属性( 内存容量和c p u 处理能力十分有限) ,c o m 、c 0 r b a 、n e t 或e i b 等组件技术并不适合直接应用在嵌入式系统上 组件的特性包括封装性、可重用性、可移植性、与语言无关、可扩展性 2 2 3 基于组件的系统( c o m p o n e n t - b a s e ds y s t e m ) 在由组件构成的系统中,组件独立完成其中的一部分功能,组件之间通过 接口互相联系。 相比于传统的、固定的系统结构,基于组件系统的优势体现在: 独立扩展( i n d e p e n d e n te x t e n s i o n s ) :一般的软件体系缺少灵活性,难以 实现系统的扩展性。而组件体系结构能够确保功能独立地开发和设计,减少 了相互之间的依赖和交互,从而可以方便地实现功能扩展 降低开发和维护成本:基于组件的系统中已经定义了整个系统环境,可以直 接用以组件模型的设计和开发,极大地缩短了开发周期;同时,系统维护可 以简化为各个组件的维护,使维护工作更加简单明朗 提高产品质量:通常组件在使用前经过了反复的测试和验证,保证了单元模 块的质量,系统质量的保证集中在结构体系设计过程中,从而易于保证软件 的质量 2 3 可裁减数据库管理系统 传统的数据库管理系统为了满足绝大多数应用的需要,尽可能多地包含了数 据库功能,造成系统很庞大此外,传统的数据库系统的结构是固定的,因此很 难对它进行功能扩展或改进其底层的实现方法,否则需要大幅度地修改系统,有 时甚至需要彻底推翻原来的设计方案,重新设计随着数据库系统的应用范围越 来越广,新的应用层出不穷,不管哪一种数据库都无法保证能满足所有的应用, 而原有的体系结构却难以适应新的需要。 可裁减数据库管理系统正是在这种情形下提出的,它追求一种更加灵活、开放 的体系结构,来提高系统的可扩展性和可维护性。为了达到这个目标,可裁减数 血向i 却用的嵌入式町战减数据库管删系统 据库系统摈弃了原有数据库经常采用的层次结构,即数据库系统从上到下分为多 个层次,每个层次实现特定的功能;而是采用组件技术。由多个组件来实现数据 库系统中不同的功能每个组件是相对独立的,实现特定的数据库功能,系统支 持组件的上载和下载,组件的增加和删减不会影响系统运作 2 3 1 数据库管理系统( d b m s ) e e c o d d 提出的关系理论,在7 0 年代掀起了关于数据库理论研究的高潮,使 数据库理论逐渐走向成熟到了8 0 年代末,数据库理论在实际应用中取得了重 大突破,一些大型的数据库厂商,如o r a c l e 、s y b a s e 、i n f o r m i x 等纷纷推出了自 己的产品,并广泛应用在金融、企事业机构、交通运输业等领域,大大加快了现 代化的进程。 数据库系统负责数据的存储、查找、修改,同时保证数据的完整性和一致性, 确保系统的安全性和可维护性等 2 3 2 数据库系统功能概述 一般数据库管理系统采用分层体系结构,每一层实现一定的功能。系统要实 现的功能包括:数据存储、数据存取、缓存管理、同步控制、事务管理、恢复机 制、查询优化等,各个功能模块的说明如下: l 数据存储:管理各种数据对象,如表、视图、数据字典、索引等 2 数据存取:存储或获取数据信息 3 缓存管理:负责交换内外存页面,并管理缓存中的页面,从而能访问比内存大 得多的文件 4 事务管理:保证事务执行的串行化和数据的完整性和一致性 5 同步控制:确保多个事务同时访问数据库时不发生冲突,保证数据的一致性 6 恢复机制:使数据库在系统崩溃时能恢复到崩溃前的状态 7 查询优化:查询优化的主要目的是提高数据库的性能,加快执行速度。 2 3 3 数据库功能模块的划分 实现可裁减数据库管理系统,首先要把数据库系统的功能划分为几大模块, 分别用组件来实现这些功能。功能模块的划分是一个非常重要的一步工作,直接 影响了系统的整体设计和性能。功能划分太粗,会降低系统的灵活性和可裁减性; 功能划分太细,增加了系统实现的难度因此,在进行功能划分时。既要保证能 够顺利实现数据库系统,又要充分考虑系统的可维护性和可扩展性 6 籀一帝谍题技术综述 2 3 4 数据库各子系统之间的联系 在把整个数据库系统分割为多个子系统后,接下来的任务是明确子系统之间 的相互关系虽然数据库的子系统可以独立地实现某个特定的功能模块,但在组 成一个完整的系统时,它们之间必然会存在或多或少的互动在本课题中指出基 于组件的数据库管理系统采用b r o k e r s e r v i c e s 的工作模式,以事件驱动的方式 提出服务请求和服务反馈,以此来实现子系统问的通讯和合作此外,在本文中 还分析了每个子系统提供的服务以及在服务执行过程中向别的子系统发出的服 务请求,这是子系统设计和实现的前提条件,也是构成整个d b m s 的基础 2 4 特定应用的分析 面向应用的可裁减数据库管理系统的最终日的是使系统能够根据具体嵌 入式应用的需要提供功能模块,实现以最小的系统内核提供必需的功能支持,并 充分利用系统资源和发挥数据库系统的性能。 在通常情况下,应用程序开发人员并不了解数据库系统是如何实现的,也不 了解数据库系统应如何调整才能最大程度地适应实际应用,因此,系统功能裁减 这一过程应该由系统自动完成,对数据库使用者是透明的。为了达到这个目的, 首先要明确实际应用的需求,即它要数据库提供怎样的支持,其次要把这些需求 和数据库系统的功能模块联系起来,理清它们之间的对应关系,最后选择最佳的 模块组合,形成一个针对特定应用的数据库系统 应用程序源代码是获取应用任务的最直接途径,通过扫描源代码,提取其中 与数据库功能相关的语句并加以分析,得到有用的数据库特征集数据库特征集 反映了数据库功能的特性,也是模块加载的依据。在第六章中列举了常见的数据 库特征集,以及在源代码中与之相关的语句,此外还详细说明了数据库中模块与 数据库特征之间的对应关系,使系统有针对性地选择模块。 咖向脚用的嵌入式。r 找减数据库筲珲系镜 第三章数据库管理技术概述 本课题提出的面向应用的嵌入式可裁减数据库管理系统首先是一个数据库 系统,要完成数据的存储、检索和管理,因此,系统的一个重大任务是实现数据 库管理系统。这一章介绍数据库管理系统的主要功能模块及实现的算法策略。 3 1d b m s 系统结构 数据库管理系统( d b m s ) 一般包含以下几方面的内容: 数据库描述功能:定义数据库的全局逻辑结构,局部逻辑结构和其他各种数 据库对象; 数据库管理功能:包括系统配置与管理,数据存取与更新管理,数据完整性 管理和数据安全性管理; 数据库的查询和操纵功能:该功能包括数据库检索和修改; 数据库维护功能:包括数据引入引出管理,数据库结构维护,数据恢复功能 和性能监测。 在实现d b m s 时,通常把整个系统划分为不同的模块,每个模块完成整个系 统的一个功能,常用的系统结构如图3 一l 所示: l ii n t e r f a c ef ; i s o lc o a n dp r o c e s s o r + a c c e s sc o n t r o l i i b u f f e rm g r iit r s a c t i o ni ic o n c u r r e n c yii l o c k i 上 d a t am g r 土 匡习 l 二陋t aj 图3 - id b m s 系统结构 在上面显示的系统结构图中,把整个d b m s 分为s q l 语句解析、存取控制、 8 第三章数据】车技术概述 缓存管理,日志管理、同步控制和数据存储管理等功能模块下面介绍了各模块 的主要功能和其实现的主要算法策略 3 2s q l 语句解析 用户通常采用s q l 语句来访问和操作数据库,s q l 解析模块负责把s q l 语句 转化可以被系统识别的中问结构这一任务是由词法分析器和语法分析器来完成 的词法分析的任务是处理用户输入的字符串,从中提取出关键词和标识符,并 交给语法分析器对于从词法分析器中得到的关键词和标识符,语法分析器根据 其出现的上下文环境,赋予其特定的意义常用的语法分析器有y a c c b i s o n 和 l e m o n ,y a c c 是常用的词法分析器 3 3 存储管理 存储管理把现实世界中的对象实体表示成逻辑形式,并有效地安排它们在磁 盘上的组织和存放形式。几种常用的记录存储方法有: 定长表示方法 定长表示方法是最简单的存储记录的方法,也是最不灵活的表示方法每个 记录的字段数是固定的,每个字段的长度也是固定的,对于长度不一致的字 段取可能长度中的最大值作为字段的长度例如,在关系数据库中的表d e p t 的定义为d e p t ( i n ti d ,c h a r ( 2 0 ) n a m e ,i n tn u m b e r ) ,其中n a m e 字段规定 不能超过2 0 个字符 定长表示方法实现起来非常简单,但是存在缺点:一是浪费资源,每个字段 按最长的值定,而最大可能值出现的频率很低;二是不灵活,不能应付关系 属性的动态扩充。 变长表示法( 保留字符法) 变长表示法是将记录的各字段按固定顺序连接成一长串,各字段之间用一保 留字来隔开,例如,用。# ”作分隔符“ 1 0 0 1 0 # “黎明“# 2 3 # ”s t u d e n t ” 这种方法表示简单,不会造成资源浪费,缺点是可能找不到合适的保留字符 作为分隔符 字段长度法 字段长度法在每个记录的首部设置了一些额外字段,指明了每个字段开始的 偏移量。通过读取记录开头的字段值就可以得到每个字段的内容,如: 我们假定记录的偏移量值的范围为1 0 ,2 5 5 ,即用一个字节来表示。在上面所示 的关系中有三个字段值( 1 0 0 0 1 ,m a r y , s t u d e n t ) ,根据字段开头的内容得知, 第一个字段在第四个字节开始,长度为8 - 4 = 4 个字节,同理可以获得第二、第三 个字段在记录中的开始位置分别为第8 和第1 3 个字节处,长度分别为1 3 8 = 5 和 2 1 1 3 = 8 个字节。 9 曲向脚肘的嵌入式n r 战减数据库管胖系统 3 4 缓冲区管理 它负责将数据从磁盘上取到内存中,并决定哪些数据应被缓存在内存中数 据库中的缓冲区管理几乎和操作系统中的虚拟存储器管理器是一样的,目的在于 减少磁盘和存储器之问传输的数据块的数目,同时使数据库可以处理比内存更大 的数据。 当缓冲区无法容纳更多的数据时,需要把其中的一部分数据块置换到外存 中,再把新的数据块读到缓冲区中数据块替换策略的优劣直接影响系统的性能, 因为频繁的内外存数据交换增加了系统开销比较常用的替换策略是最近最少使 用( l r u ) 策略,它的主要思想是每次进行替换时把最近一段时间以来最不经常 使用的数据块淘汰出去,为新的数据块腾出空间。事实上,这种算法的依据是把 最近以前的时间当成最近以后的时间来逼近完美的演算法,即如果数据块在最近 这段时问很少使用,认为它在随后的一段时间内也很少会被使用 3 5 事务管理 在数据库的实际使用中,很多情况下用户希望一些操作成为一个整体而不 是一个个孤立单元如从顾客的角度来看,从支票账户到储蓄账户的资金转账是 一次单独操作,而在数据库系统中这是由几个操作组成的。很明显,这些操作要 么全都发生,要么由于出错全不发生,我们无法接受资金从支票账户支出而未转 入储蓄账户的情况 事务( t r a n s a c t i o n ) 是构成某一逻辑工作单元的操作集合。数据库系统必 须保证事务的正确执行一执行整个事务或者属于该事务的操作一个也不执行 事务具有四个特性: 原子性( a t o m i c i t y ) :事务的所有操作在数据库中要么全部正确反映要么全 部不反映 一致性( c o n s i s t e n c y ) :事务隔离执行时( 即在没有其他事务并发执行的情 况下) 保持数据库的一致性。 隔离性( i s o l a t i o n ) :尽管多个事务可以并发执行,但系统保证,对于任何 一对事务t 。和t j 。在t i 看来,t j 或者在t 。开始之前已经停止执行,或者在 t 。完成之后开始执行。这样,每个事务都感觉不到系统中有其他事务在并发 执行 持久性( d u r a b i l i t y ) :一个事务成功完成后,它对数据库的改变必须是永 久的,即使是系统出现故障时也是如此 事务的这些特性通常被称为a c i d 特性,这一缩写来自四条性质的第一个英 字母实现事务的四个特性需要数据库的恢复机制和同步控制机制共同来完成。 事务在执行过程中由于机器故障、数据溢出等原因而无法顺利完成任务,这 种事务称为中止事务,为了确保原子性,中止事务必须对数据库的状态不造成影 响。因此,中止事务对数据库所做的任何改变必须撤消,一旦中止事务造成的变 更被撤消,我们就说事务已回滚。 1 0 第三帝敏艟i 库技术概建 成功完成执行的事务称为已提交事务事务提交意味着数据库已完成更新, 进入一个新的一致状态,即使出现系统崩溃,这个状态也必须保持 3 6 并发控制 当数据库中有多个事务并发执行时,不一定能保证事务的隔离性为此,系 统必须对并发事务之间的相互作用加以控制,这是由称为并发控制机制的一些机 制来实现的常用的并发控制机制是锁机制、基于时问戳的协议和乐观方法 基于锁的并发机制 事务在访问数据项时要根据该数据项上的锁状态决定进一步的数据操作,从 而防止事务之间的冲突 最常见的锁是共享锁( s h a r e d - m o d el o c k ) 和排他锁( e x c l u s i v e - m o d el o c k ) 1 共享锁:如果事务t i 获得了数据项q 上的共享锁( 记为s ) ,则t 。可读但 不能写q 2 排他锁;如果事务t 。获得了数据项q 上的排他锁( 记为x ) ,则t i 既可读 也可写q 每个事务在对数据项操作前都要根据操作类型申请适当的锁。该请求发送给 并发控制管理器,只有在并发控制管理器授予请求的锁后,事务才能继续其操作。 对于一个给定的锁类型集合,我们定义它们之间的相容性:令a 与b 代表任意的 锁类型,假设事务t i 请求对数据项q 加 类型锁,而事务t j ( t i t j ) 当前在 数据项q 上拥有b 类型锁尽管数据项q 上存在b 类型锁,如果事务t i 可以立 即获得q 上的锁,则被认为 类型锁和b 类型锁相容;否则,则被认为是不相容 的上述提到的共享锁和排他锁的相容关系如表2 一l 所示: l sx i st r u ef a l s e xf a l s ef a l s e 表2 - 1 锁相容矩阵 共享锁和共享锁是相容的,而与排他锁不相容。在一个数据项上可同时有多 个共享锁,如果此时有事务申请排他锁,该请求要一直等到数据项持有的所有共 享锁被释放之后才会被处理。 在数据项上添加共享锁或排他锁,防止一个事务错误地读出正被另一个事务 修改的、尚未提交的数据,从而避免读到不正确的数据但有时也会造成写事务 被无止境地推延,这是因为共享锁和排他锁是不相容的,而共享锁和共享锁是相 容的,当数据项q 持有共享锁时,排他锁得不到申请,如果这时不断地有事务申 请共享锁,这些事务可以立即得到执行,但申请排他锁的事务需要一直等待,这 咖向脚用的嵌入式n f 找减数据库管理系统 样会造成写事务长时间地无法执行解决这一问题可以在锁集合中增加意向锁。 意向锁说明事务要获得共享锁和捧他锁的意向,意向锁又可以分为共享意向锁 i s 、独占意向锁i x 等,他们分别显示了要在内层节点实施的显式的读封锁和显 式的写封锁信息加入了共享意向锁和独占意向锁后,相容表如表2 2 所示; i s i xs x i st r u et r u et r u ef a l s e i xt r u et r u ef a l s ef a l s e st r u ef a l s ef a l s ef a l s e xf a l s e f a l s ef a l s e f a l s e 表2 2 共享意向锁和独占意向锁的相容表 i x 和i s 是相容的,i s 和s 也是相容的,而i x 指明要对某些内层节点进行 写封锁,故i x 要拒绝s 和x 封锁申请加入意向锁后,上面提到的写事务永远 等待的情况就不会发生了因为当数据项q 持有共享锁时,如果此时有事务要对 数据项q 进行写操作,申请i x 成功,阻止了随后的事务对数据项进行读操作, 这样当原有的读事务完成后,就可以执行写事务了,避免了写事务的无限制等待。 基于时间戳的协议 基于时问戳的协议的是把多个事务按其产生的时问进行排序,即时间戳排序 机制。 时间戳 对于系统中的每个事物t 。我们把一个唯一的时间戳和它联系起来,记作 t s ( t ) 该时问戳是在事务t 。开始执行前由数据库系统赋予的若事务t i 已被 赋予时间戳t s ( t 。) ,并且有一新事务t | 进入系统,则t s ( t 。) t s ( t ,) 。时间戳可 以有两种定义方法: 1 使用系统时钟作为时间戳,事务的时间戳等于该事务进入系统时的时钟 值 2 使用逻辑计数器每赋予一个时间戳,计数器增加一次;即事务的时间戳等 于该事务进入系统时的计数器值 在基于时间戳的并发控制中,读和写是不会冲突的,并保证每次读出的数据 都是当前系统中最新的数据。为实现这个机制,每个数据项要和两个时问戳值相 关联: w - t i m e s t a m p ( q ) 表示成功执行w r i t e ( o ) 的所有事务的最大时间戳 r - t i m e s t a m p ( q ) 表示成功执行r e a d ( q ) 的所有事务的最大时间戳 每当有新的r e a d ( q ) 和新的w r i t e ( q ) 指令执行时,这些时间戳就被更新。 时间戳排序协议 该协议的运作方式如下: 1 假设事务t l 发出r e a d ( q ) 第三常数据库技术慨墟 a 如果t s ( t 。) c o m m i t ( t i d ) 提交事务 r e p l y ( o k ,c o m m i t ) b r o k e r r u l c s r u l e l i n t e g r i t y _ b r o k e r b r o k e r :完整性检查 c h e c k1 a o nc h e c k i f d o r e p l y ( a g r e e ) 条件成立,允许提交 s e r v i c ec o m m i t p a r a m e t e r s :r i di n t r e p l i e s : o k ,r e f u s e e x c e p t i o ni l l e g a l _ t a s e r v i c ec h e c k : p a r a m e t e r s :t i di n t r e p l i e s :r e f u s e ,a g r e e 4 1 2 2 事件管理器和规则服务器 前面已经提到,在基于组件的数据库管理系统中,事件是系统内各 部件联系的主要方式,为此,系统必须提供一套产生事件、捕获事件、 处理事件的机制,来实现彼此问的合作。系统中用事件管理器和规则服 务器来完成上述任务每当系统中产生一个事件后,由事件管理器捕获 该事件,事件管理器接收到这一事件后,记录事件相关的属性,确定与 该事件相关的规则,如果需要触发规则,则发送一条触发消息给规则服 务器,消息中包含发送方、规则名称、事件名以及一些参数,如 n o t i f y ( o l d ,e v e n t n a m e ,r u l e n a m e ,a r g c ) ,这些参数为规则服务器进 行条件检测提供了依据规则服务器接收到这一消息后,对条件进行检 测,只有在条件满足时才执行a c t i o n 部分组件在执行完任务后,产生 一个回复消息,告诉事件请求者执行结果而请求者可以根据消息中的 信息判断此回复是否是针对自己先前的请求并获知结果。 在面向应用的可裁减数据库管理系统中,我们设立事件管理器和规 则服务器来处理与事件相关的任务,如检测事件的产生、触发与事件对 应的规则、条件判断和通知相关组件执行服务等,从而可以使系统和各 个子系统把工作集中在功能服务的实现上,不必考虑如何处理事件和规 咖向n 用的嵌入式口r 找减数据库管理系统 则这种方式简化了子系统的设计和实现,并降低了系统的冗余度事 件管理器和规则服务器作为系统中单独的对象而存在,可以独立地管理 其方法和属性,还可以根据需要增加新的特性,从而利于系统的升级和 维护 事件管理器 事件管理器主要用以捕捉监测事件的发生,触发跟事件对应的规 则,并通知规则服务器事件管理器的实现可以采用不同的方法,最有 效的方法是把事务管理器作为一个独立的类来实现,这样,事件可以拥 有自己特有的属性和状态,如事件发起者、事件产生事件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年设备仪器试卷附答案
- 韩汉互译考试题及答案解析
- 函授兽医考试题库及答案
- 2025年吉林省白山市公需课培训(专业技术人员继续教育)试题及答案
- 2025年电力行业安全生产考试题库(规范试题)试卷(含答案)
- 2025年成都市属事业单位《职业能力倾向测验》笔试试题含答案
- 建筑装饰工程安全隐患排查方案
- 建筑智能化无纸化办公方案
- 色纱生产线项施工方案
- 高效压缩空气储能装置选型方案
- 二零二五年度污水运输与污水处理厂合作运营合同
- 2025年上教版八年级地理上册月考试卷
- 贸易安全课件
- 中职对口高考-机械类专业综合模拟卷( 湖北适用) 第5卷(答案版)
- 小米公司介绍课件
- 部编六年级上册快乐读书吧《童年》测试题(3份)(有答案)
- 霍尼韦尔Honeywell温控器UDC2500中文手册
- 留置胃管课件
- 核反应堆热工分析课程设计
- ISO 56005-2020创新管理-知识产权管理的工具和方法-指南(中文版)
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
评论
0/150
提交评论