




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华中科技大学硕士学位论文 摘要 随着应用需求的不断变化,传统关系数据库管理系统不支持用户定义类型的弱 点几益暴露山来。通过加入用户定义类型的机制,国产达梦数据库管理系统d m 3 能更好地满足新型应用处理多种数据类型的需求。 在d m 3 中扩展用户定义类型机制的总体策略是:对常规的对象型数据的处理请 求,通过在d m 3 核心外加包装层的方式将其映射成关系型请求;对通过包装层不易 实现的功能,如支持用户定义函数等,则通过修改系统核心直接实现。 用户定义类型机制的设计和实现包括数据和操作两个部分。在数据部分,实现 了单值类型、具有嵌套和继承能力的结构化类型和对类型的, - 3 i 用的功能。通过在d m 3 的字典中增加相应的系统表,记录类型的组成以及继承和嵌套关系的逻辑信息,然 后将使用到这些信息的表映射成关系的存储方式,达到了保持原有数据存储方式不 变的目的;通过组合表号和元组号支持对类型的引用。由于加入用户定义类型的信 息后字典规模可能变得很大,为避免字典数据长期占有缓冲区而导致系统效率f 降, 提出了种基于内容的l r u 缓冲区管理算法处理此问题。 在操作部分,提出了支持c 和j a v a 的用户定义函数的设计方案。c 函数被置于 和服务器相隔离的进程中,然后提供必要的工具,来保持其安全和易用性;j a v a 函 数则运行于b - - 系统集成的j a v a 虚拟机上,依靠语言本身的特性来处理安全和易用性 等问题。为了确保用户定义函数功能的实用性,提出了基于代价的函数分辨算法来 处理函数重载问题。 关键词:对象关系数据库管理系统,用户定义类型,用户定义函数 华中科技大学硕士学位论文 a b s tr a c t w i t ht h ec h a n g eo fa p p l i c a t i o n ,t h ed i s a d v a n t a g eo ft h et r a d i t i o n a lr d b m s w h jc hc a n ls u p p o r tu s e rd e f i n e dc y p e ( u d t ) h a sb e c o m em o r ea n dm o t eo b v j o u s t om e e tt h en e e d ,t h ef u n c t i o no fu d tisa d d e dl od m 3w h ic hjsl h e p r a t i c a l d a t a b a s es y s t e mr e s e a r c h e da n dd e v e l o p e db yo u r s e l v e s i os u p p o r tt h eu d t ,w ea d o p tt w ow a y st od e s i g nt h em o d u e a st h er e s u lt o ft h et w os t r a t e g i e si n t e g r a t e d ,o no n eh a n d ,o n ep a c k a g i n g l a y e rp u to n t h ek e r n e l0 fd b m ss e r v e ri su s e dt od e a lw it ht h eu s u a lo b j e cld a t a o nt h e o t h e rh a n d ,s o m es p e e i a lf u n c t i o n ss u c ha su s e rd e f i n e df u n c t i o n ( u d f ) a r e i m p le m e n t e db ye x t e n d i n gt h ek e r n e l 0 fs y s t e m t h eu d tir l c l u d en o to n l yd a t ab u ta ls oo p e r a t i o no nt h ed a t a o nt h es i d e 0 fd a t a w ei m d l e m e n tt h es i n g l eu d tb a s e do nt h ep r e d e f jn e dd a t at y p ea n d t h es t r u c t u r e du d t ,e v e nt h er e f e r e n c et ot h eu d t ,a n dt h es t r u c t u r e du d t c a nb ei n h e r jt e do rn e st e d b y t h eo t h e rs t r u c t u r e du d t t h e 1 0 9 i c a l i n f o r m a t i o n0 fu d tisi n s e r t e di n t ot h en e wd i c t i o n a r yt a b l e ,a n dt h eo b j e c t id e n t if i e rm a k eu po fi d e n t i f i e ro fo n et a b lea n di d e nl i f je ro fo n ei t e m b e c a u s et h es i z eo fd i c t i o n a r yisd i s t i o c t l ye n l a r g e d ,w ea l s oi n t r o d u c et h e n e wa l g o t it h mn a m e dl r ur e l a t e dw i t hc o n t e n tt ok e e pt h es y s t e mp e r f o r m a e c e o nt h es i d eo fo p e r a t i o r l ,t h ef u n c t jo nd e v e l o p e db yj a v ao rcl a n g u a g ec a n r u f i nt h en e ws e r v e ro fd m 3 1 oe n s u r et h e s e c u r it yo ft h es e r v e r t h ec f u n c t i o nr u n s o nt h es e p a r a t ep r o c e s sf r o mt h es e r v e r t h ej a v af u n cl io n u t i1iz et h em e c h a n i s mo fj v mt os o lv et h es a m ep r o b l e m d u r i n ge x t e n d in gl h e d m 3s e r v e r w ea 1s op u tf o r w a r dt h ea l g o r it h i nw h i c hi su s e dl or e c o g n i z e d i f f e r e n tf u c n t i o n so fs a m en a m e k e yw o r d s :o r d b m s ,u d t ,u d f i i 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他 个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体, 均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名:而君卓 日期:2 f 叫年年月2 9a 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校 有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅 和借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数 据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密口,在年解密后适用本授权书。 本论文属于 不保密囱。 ( 请在以上方框内打“”) 学位沦文作者签名:游君平 日期:2 d 0 年耳月2 9 日 指导教师签名:谚磐斗 日期:伽。争年年月谚e l 华中科技大学硕士学位论文 1 1 问题的提出 1 绪论 经过多年的发展,关系型的数据库管理系统( d b m s ) 在各方面都已经非常完善 了。它有强大的管理功能和可操纵性。关系模型具有峰实的数学基础,有集合论和 天系代数的理论支持“。此外,它有比较好的标准化工作,制定了统一的国际标准 ( s q l 8 9 、s q l 9 2 ) ,有成熟的商用化的系统如d b 2 、o r a c l e 、i n g r e s s 、s y b a s e 、s q l s e r v e r 等。 关系系统在处理具有结构统一、面向记录、数据项小、原子字段等特点的传统 应用时确实表现出强大的能力”。然而,近年来,数据库技术已经被应用到一些新 的领域,这些领域中的应用至少在某一个方面不具备上面所列举的特征。面对这些 新的应用需求,关系数据库系统的弱点和不足也日益暴露出来。3 。 首先,就s o l 而言,它是一种非过程化的面向集合的语言,虽然用起来非常简 单,但由于以解释的方式实现,效率尚不尽如人意。许多应用是由高级程序设计语 言( 如c ) 来实现的,但是高级程序设计语言是过程化的,而且是面向单个数据的, 这使得s q l 与它之间存在着不匹配,这种不匹配被称为“阻抗失配”。1 。不论你是 用嵌入式s q l 还是命令行式的$ q l ,都需要花很多工夫去完成两种语言之间的相互 转换。 其次,关系系统的数据表示方式比较贫乏“1 ,如只能定义原子数据类型的表。 新型应用( w e b 、g i s 、y u l t i m e d i a 和s p e i o t e i p o r a l ) 要求支持复杂对象“3 , 如设计对象、文档、物理系统等,要求支持多种数据类型,如文本、图像、音频、 视频等”1 。 此外,现代应用要求更好的查询界面、更多的可视化和自适应特性,关系数据 库系统也难以很好地适应这些要求。 为了解除关系数据库系统面临的上述困境,满足新的需求,人们将面向对象的 思想引入到关系数据库领域,提出了所谓的对象关系数据库系统的概念以及适应应 用需要的新的国际标准s q l 3 。”3 。对象关系数据库系统对关系数据库系统的扩充主 华中科技大学硕士学位论文 要包括三个方面。 1 结合数据表示和数据操作,提出抽象数据类型( a b s t r a c ld a t | 1 l 、vr ) 9 ,a d 1 、) 。 2 使用户能定义数据结构和操作( 复杂的值对象模型和过程函数) 。 3 区分抽象数据类型和它的实现:抽象数据类型的内部表示和方法的代码单独 定义,便于修改,数据只能通过相关的操作来访问( 安全) ”。 国产数据库管理系统d m 3 是我国具有自主知识产权的较为成熟的关系数据库管 理系统,按照s q i ,3 的要求对d m 3 进行扩展,使之具有面向对象方面的某些特点,当 务之急是要为它增加对用户定义类型( i i s e rf ) 。n e d iy p e ,u d q 、) 的支持。本课题 来源于国家8 6 3 计划数据库重大专项的要求。其目的是通过研究对象关系数据库管 理系统的基本理论和实现机制,在现有的d m 3 数据库管理系统上进行相应扩展,使 其支持s q l 3 标准规定的用户定义类型,具有一定的面向对象的特点,更好地适应当 前和今后的应用需求。 1 2 国内外研究概况 为了支持用户定义类型,既可以重新构建面向对象的数据库管理系统,又可以 在关系数据库系统的基础上开发所谓的对象关系数据库管理系统“。可以认为,用 户定义类型和用户定义函数( j s e i d o n e df u r i c li o i ,l _ _ d f ) 是对象关系数据库系 统的基本和主要特征之一“”。下面介绍相关领域的国内外研究概况。 12 1 对象关系系统的研究概况 在支持抽象数据类型方面,人们从面向对象的方法学出发,提出了面向对象数 据库的概念“。面向对象是当前计算机科学与技术界普遍流行的一个术语,它具有 广泛的背景和长久的历史,最早可以追溯到2 0 世纪6 0 年代和7 0 年代初,进入8 0 年代后引起人们的普遍关注。它最先起源于程序设计语占,但很快被引入计算机科 学和技术的其它领域,如数据库、操作系统、软件方法与软件工程乃至整个系统结 构。面向对象实际是一种方法学,它将所考虑的现实世界或系统看成是一个对象的 集合,每一个对象都具有特性和行为,也就是一组数据和该数据上的一组操作。面 向对象的基本概念有对象、对象标识( o b j e c ti d e n i f e r ,o i d ) 、类、继承和封装。 面向对象的数据库强调高级程序设计语言与数据库的无缝连接。它能够支持非常复 华中科技大学硕士学位论文 杂的数据模型,从而特别适用于工程设计领域”“。此外,面向对象数据库还吸收r 面向对象程序设计语言的思想,如支持类、方法、继承等概念“”1 。 虽然面向对象数据库有许多优势,但要设计一个完备的面向对象的数据库管理 系统,一般来说涉及到如下几个方面:抽象数据类型、重载、动态联编、对象永久 性、外存管理、事务管理、对象保护等,有很多新的技术有待研究“2 。面向对象 数据库系统的数据模型复杂,缺乏像关系数据库那样,m 格的数学基础,也不具备s q l 处理集合数据的强大能力”| 。2 “。正因如此,同前国外的对象关系系统多是嗤试验 性的产品,真正占市场主流的仍然是关系数据库管理系统。当然这些实验性的产品 和原型对于我们的研究有很好的参考价值。 面向对象的数据库系统可以满足新的需求,但有很多理论问题有待研究,实现 复杂,开发难度极大,难以实用化“。很自然地,将关系数据库和面向对象的数据 库结合起来,充分利用关系数据库中的成熟技术,同时又引入面向对象数据库技术 的一些概念和思想,取长补短,扩充关系数据库系统的能力以适应新的需求,这便 成为一个重要的研究思路。 剥象关系数据库系统是关系数据库系统和面向对象数据库系统两方面特征的 结合”j 。它除了原来关系数据库的各种特点外,还提供扩充数据类型、复杂对象 和继承、通用的规则系统等新的特性“。 1 扩充数据类型 目前商品化的关系d b m s 只支持某固定的类型集,不能依据某一应用所需的特 定数据类型来扩展其类型集。对象关系数据库系统则允许用户根据应用需求定义自 己的数据类型、函数和操作符;而且一经定义,这些新的数据类型、函数和操作符 将存放在数据库管理系统核心中,可供所有用户共享,如同基本数据类型一样”。 2 支持复杂对象 能够在s q l 中支持复杂对象。 类型构成的对象。 3 支持继承的概念 能够支持子类和超类的概念, 多重继承,支持函数重载。2 “。 4 提供通用的规则系统 复杂对象是指由多种基本数据类型或用户自定义 包括属性的继承及操作的继承,支持单继承甚至 能够提供强大而通用的规则系统,并且与其它对象关系能力集成为一体“。 华中科技大学硕士学位论文 如前所述,为满足不断出现的新应用的需求,应将关系系统向对象关系系统方 面转变,从而实现对用户定义类型和其他对象关系功能的支持。 要实现对象关系数据库管理系统,当前有多种技术策略。首先是重新改写一个 关系型的数据库引擎,这种策略优点显而易见。然而,重写系统开发周期长,投资 风险大,在性能和可靠性方面缺乏保证,并且也面临着与已有系统兼容的问题。 其二是采用增量式演变的方式,就是把一个已存在的关系型d b i s 从它的当前 状态演变为对象关系型的引擎。这种方式开发风险较小,可以保持原有的关系系统 的投资,较好地保持系统的兼容性,但有较长的开发周期和较大的工作量。 其三是写一个包装层,也就是在传统的关系型引擎上增加一个模拟层,将用户 提交的对象关系型查询映像成关系型查询,然后在关系型引擎上执行,其结构如图 1 1 所示。这种策略可以充分利用原有引擎迅速地实现对象关系的功能,避免改动 成熟的底层系统所带来的风险,但是由于对任何客户的请求都要经过包装层的转换, 在某些应用中效率很低,并且对u d t 的支持也很有局限“。 图1 1 包装层在对象关系系统中的位置示意图 也可以将现有的关系型d b m s 与其它厂商的对象关系型d b m s 连接在一起,使现 有的关系型d b m s 直接而迅速地具有对象关系的特征,例如使用网关技术将关系型 d b m s 与其它厂商的对象关系型d b m s 连接;或者将对象关系型引擎与关系型存储管 理器结合起来,即以关系型d b m s 作为系统的最底层,具有兼容的存储管理器的对象 关系型系统作为上层。 另外,还可以将现有的面向对象型d b m s 直接与其它厂商的关系型d b m s 连接在 一起,使现有的面向对象型d b m s 直接而迅速地具有对象关系的特征。即以面向对象 的d b m s 作为系统的最底层,具有兼容的持久语言系统的对象关系系统作为上层“。 最后种方式就是扩充现有的面向对象的d b m s ,使之成为对象关系型d b m s 。 我们的课题是将关系数据库管理系统d m 3 向对象关系型系统扩展的一个主要方 面:对u d t 的支持。u d t 包含数据和操作两个部分。数据部分既包括了用户定义单 值数据类型,也包括了结构化类型和对类型的引用;操作部分实际就是关联于u d t 华中科技大学硕士学位论文 的用户定义函数。下面主要介绍当前u d t 的相关标准和基本实现技术的研究情况。 1 2 2 实现用户定义类型的相关技术 通过增量式演变的方法在关系系统上实现对u d t 的支持,使其向对象关系系统 的方向演变,涉及到很多基本的技术。 1 在应用标准方面,面对抽象数据类型,传统的结构化查询语言标准s o l 8 9 利s q l 9 2 已经不能适应新的应用需求。为此,经过多年努力,新的查询语言标准s q l 3 被提了出来。在s o l 3 中,要求d b m s 支持扩充的数据类型( 抽象数据类型) 、对象和 对象标识符、封装、继承和触发器等”2 。在面向对象方面,s q l 3 支持两种数据类 型:预定义类型和抽象数据类型( 也就是用户定义类型) 。在s q l 9 2 中,有一个原了 数据类型的集合,在s q l 3 下,这些数据类型作为预定义数据类型使用。抽象数据类 型是面向对象的术语,它允许用户通过现存的预定义类型或者已经定义的抽象数据 类型来构造新的抽象数据类型。子类和超类的概念也被纳入$ q l 3 中,它们源于面向 对象概念中的继承。在s q l 3 中,可以用一个抽象数据类型描述符指出它是另一抽象 数据类型的子类型。任何被定义为子类型的抽象数据类型继承其超类型的属性和行 为,一个子类型的任一实例是它的所有超类型的一个实例。 2 由于要求支持用户定义类型和用户定义函数,原有的s o l 语法分析器必须加 以改写。新的分析器一般采用表驱动的方式,以确保新加入的用户定义类型和用户 定义函数得到正确的解析。同时,原有的查询优化器也要采用基于字典表驱动的方 式来实现”“,由于用户定义函数的出现,对代价高昂的函数应该进行优化,此外优 化器也应该考虑遇到继承与复杂对象时的情况”2 。 3 u d t 实现过程中一个关键的问题是对u d f 的支持”,这要求改写执行器以 支持动态链接的安全的u d f ,在系统中加入对户定义函数的支持后,要保证系统的 安全性、效率、函数的易用性和可复用性。为了满足这些要求,有几种主要的技术。 其足让函数在客户端运行,这虽然能够解决安全问题,但是中间结果在服务器利 客户端的传输会给网络带来巨大的压力,严重影响其效率。其二是在服务器端运行 u d f ,保证一定安全性的方法之一是让u d f 与服务器的核心处在不同的进程中,但是 这引入了远程过程调用的开销,对系统效率有一定影响。其三是采用所谓的“防火 墙”技术,这可以解决部分安全问题,而且比分离的服务器地址空间运行的函数代 价要小得多,但仍然有潜在的不安全因素,而且这种技术实现起来工作量大,需要 华中科技大学硕士学位论文 = = ;= = = = = = = = = = = = = = = = = = = = = = = = = = = = 一: 大量的投入;对于客户端来说,用服务器本地语言但不访问其编译器和环境,丌发 一个u d f 可能有难度。最后也可以在语言级别上实现代码的安全,但这只适合解释 性语言如j a v a ,并且在效率方面尚不尽如人意( 后而章节将详细分析这些技术) 。 当前,各商用系统一般根据本身的特点,对不同语占编写的函数采用不同的执行策 略1 。 此外,在通过增量开发以使系统支持u d t 的过程巾,系统原有的一些基本数据结 构需要修改,数据字典要增加一些系统表,并发控制子系统和片j 户权限管理子系统 都要加入处理u d i 的部分。 1 2 3 商用系统中的用户定义类型 采用上面介绍的一些技术思路,当前主流商用系统基本实现y x , ju d t 的支持, 其中o r a c l e 和d b f i 采用对原有的关系系统加以扩充的方式“,p o s t ,g r e g q l 由于历 史原因,设计之初对u d t 就有较好的支持,这里分别予以介绍。 1 0 r a c l e o r a c l e 是著名的对象关系型d b m s ,它提供了很多将面向对象的数据模型结构 引入关系数据库设计的途径以供选择,提供了抽象数据类型、引用表列指针的能力、 一定的多态性和继承支持,并可以通过c 、j a v a 和p l s q l 开发用户定义函数,这些 函数可以作为u d t 的方法”。”1 。 o r a c l e 的对象关系特性允许扩展数据库中可用的数据类型集,以超越简单的 n u m b e r 、d a t e 和s t r i n g 等基本类型。o r a c l e 的用户定义类型包括一个或多个属性, 每一属性都可能是标量类型,或是一组其他对象数据类型,换言之,o r a c l e 支持 u d t 的嵌套。 o r a c l e 支持u d t 中数据和行为耦合。面向对象的一个重要方面是对象行为和对 象本身的紧密耦合。在o r a c l e 中,成员方法可以在o r a c l e 对象上创建,所有的对 对象的操作被封装在o r a c l e 的数据字典中,这别于所有o r a c l e 系统的开发有很大 的实用性。通过使用成员方法,o r a c l e 数据库的所有接口用已知接口的预定义的方 法来实现。这样可以对u d t 实现一个或多个操纵数据类型的方法、一个或多个静态 方法以及用于分类和进行比较的任选的比较法”“。 o r a c l e 在存储基表时,如果该基表含有u d t 的字段,也将u d t 的成员存入表中, 同时字典中记录对应表字段的属性仍为该u d t 。这种方法使用标量对象类型( 不是 华中科技大学硕士学位论文 嵌套表) 是非常简单的。在o r a c l e 当前对象的实现过程中,对象类型的全部数据都 是可见的数据。o r a c l e 并不对u d t 数据进行封装,而是通过“除非授予用户在浚程 序包上的e x e c u t e 权限,否则没有人可以存取p l s q l 程序包中的数据”的方式”, 实现一定的数据保护。o r a c l e 用户定义函数既可以通过它特有的解释性浯言p l s q i 。 实现,也可以通过c 和j a v a 实现,这些用户定义函数都在服务器端运行。 要在o r a c l e 上使用基于c 的用户定义函数,必须配置一个监听器,建立 t n s n a m e s o r a 文件,并运行一个独立的进程”。从而把函数的非法行为限制在一定 的地址空间,较好地保证了服务器的安全,同时由于外部例程可以并且可能丢失 它们的状态( “静态”或“全局”变量的当前值) ,o r a c l e 提供了一种在c 程序中建 立并保持状态的机制。o r a c l e 提供了相应的工具以便在要求“远程调试”时生成必 要的跟踪文件”“。此外,对c 外部函数参数设置的要求和通用错误处理,o r a c l e 也 提供了相应的机制。通过这些方式,o r a c l e 较好地保证了c 语言用户定义函数的安 全性、易用性和效率。 o r a c l e 在服务器端集成了自己维护的j a v a 虚拟机( j a v av i r t u a lm a c h i n e , j v m ) ,对于j a v a 函数而言,它可以在o r a c l e 的j v m 上运行。这样,剥于状态管理, 只需要在j a v a 类中声明变量就可解决。对于简单的跟踪要求,由于j v m 的存在,也 可以通过打印语句来实现。此外,可以调用r a i s e _ a p p l i c a t i o n e r r o r 的p l s q l 函数维护通用错误处理。也可以使用d b m s j a v a 程序包将其重定向输出到s q l * p i u s 屏幕,以避免在调试程序时使用跟踪文件。与基于c 的用户定义函数相比,j a v a 彳i 需要在服务器上专门设置,不需要外部编译程序。 2 d b 2 d b 2 通用数据库管理系统是i b m 公司研制的世界上最先进的数据库管理系统, 它能被很多系统平台所支持,拥有极好的兼容性、可用性和健壮性o “。 在面向对象方面,最新的d b 2 系统对u d t 有很好的支持。每一个存储在d b 2 通 用数据库中的数值都具有特定的数据类型,这些数据类型用于确定如何存储这个值 以及可以对它进行哪些操作。除了内建数据类型外,d b 2 支持用户定义类型。d b 2 也为用户提供了定义新函数的方法,这些函数可以将现有功能扩展到用户定义数据 类型,也可以为整个数据库加入新的功能”。 d b 2 中的用户自定义类型主要包括单值数据类型( d b 2 中称为特有类型) 和结构 化数据类型。特有类型支持强类型检测,这意味着不能够直接将一个特有类型的实 华中科技大学硕士学位论文 例与这个类型以外的任何实例进行比较,避免语义上无意义的操作。强类型检测可 以确保特有类型合理地使用,它保汪了只有特有类型上定义的函数才能够应用于特 有类型的实例。特有类型不能够自动请求源类型的函数和操作,因为逻辑上它是一 种新的类型。 在d b 2 中,u d t 支持继承的概念。结构化数据类型也可以作为另一个结构数据 类型的子类型。在这种情况下,子类型继承超类型的所有属性,并司以选择地加入 自己的附加属性。创建单值和结构化数据类型时,系统自动地为它们创建六个比较 函数和两个强制转换函数。比较函数用于比较结构化数据类型的引用,而彳i 是比较 它们的数据类型值”。同样,两个强制转换函数用于在结构化数据类型所生成的引 用类型和结构化数据类型使用的基本类型( 作为一个引用类型) 之间的转换。 d b 2 中的用户定义函数中可以分为有源函数和外部函数两种类型。一个有源函 数是另一个函数( 即源函数) 语义的重复;外部函数是用户用宿主程序设汁语言编 写的函数,d b 2 中的外部函数可以用c 或者j a v a 编写”3 “3 。 d b 2 支持函数的重载,这意味着多个用户定义函数,即使在相同的模式下也可 能有同样的名字。d b 2 中不需要完全限定名字就可以分辨出数据类型,这种机制称 为函数路径,它是所要查找的库模式名序列,当遇到无限定( 缺少库模式名) 的数 据类型和函数名时用它。一个无限定名的数据类型的分辨结果,就是在路径中找到 的第一个相匹配的数据类型。分辨一个无限定函数名的处理要复杂一些,因为它是 分辨函数的符号,即它的参数的数据类型”。 在安全方面,用户定义函数总是在指定数据库上建立,仅在数据库上使用。在 它们的数据库内,系统生成的和用户定义的函数可以像内部函数一样使用,可为全 部数据库的用户使用,而不需要任何指定特权。d b 2 中由管理员把函数注册为是否 同内部资源相隔离”“。 3 p o s t g r e s q l p o s t g r e s q l 对象关系型数据库管理系统是由美国加州大学伯克利分校的 p o s t g r e s 软件包演变而来的。经过几十年的发展,p o s t g r e s q l 已成为成为世界上可 自由获得的、先进的开放源码数据库管理系统。6 删。 p o s t g r e s q l 通过两个机制来支持关系模型中的对象管理。p o s t g r e s q l 允许用户 实现新的数据类型,它可以作为列类型用在数据库的任何关系中,而且,通过写程 序,对新类型的操作可以包含在查询语言中,这个能力对于在工程应用中建立的对 华中科技大学硕士学位论文 象非常有用。 p o s t g r e s q l 系统的每一个抽象数据类型有一个关联的从外部到内部的转换例 程。 对于用户定义函数,p o s t g r e s q l 支持注册过程的概念。过程能用在查询语言命 令中,它有两种不同的过程数据类型。通过包含指定的信息,一个在通用编程语言 巾的过程可以注册到p o s t g r e s q l ”。在注册后,过程被p o s t g r e s q l 异步地编译, 然后在查询语言中,在函数可以使用的任何地方都可以使用它。在容纳注册过程的 系统关系中,还有一个附加标识用于声明一个过程是否安全,如果是的话, p o s t g r e s q l 将调用该过程的编译版本( 把过程的代码链接到p o s t g r e s q l 地址空间 并执行本地过程调用) ,这个调用是不受保护的,并且,错误或者恶意的程序可能造 成p o s t g r e s q l 崩溃,但不会损失系统性能。另一方面,当通过生成一个进程并把过 程装入进程,然后执行远程过程调用,这种保护方式会显著地增加开销。 p o s t g r e s q l 超级用户能够更新安全标识来使过程被信任。 1 3 课题主要研究工作 d m 3 是华中科技大学计算机学院数据库与多媒体研究所开发的具有完全自主知 识产权的数据库管理系统。本课题的工作是在此基础上进行的,因此不可避免的受 到d m 3 已有的体系结构、存储管理方案、索引机制等核心部分的限制。 131 d m 3 中用户定义类型的研究思路 本课题要求在国产数据库管理系统d m 3 上实现对用户定义类型和函数的支持。 基本的研究思路是:在d m 3 已有技术架构的基础上,以国内外成功的商用系统为参 照,综合考虑系统执行效率、安全性和兼容性,基本按照s q l 3 关于u d t 的要求,通 过系统增量式扩充和外部包装并举的方法,实现对u d t 的支持,同时在此基础上对 诸如u d f 等难点问题进行研究。 1 3 。2 主要工作 本文的主要1 :作是在国产关系数据库管理系统向对象关系系统扩展过程中,实 现列u d t 的支持,保持系统的向前兼容,保持系统的原有安全特性,保证u d t 应丹j 的效率和性能。具体分为如下几点: 华中科技大学硕士学位论文 1 分析各关系系统上实现u d t 的相关技术,提出在d m 3 中实现u d t 的技术方 案; 2 依据既定的技术方案,通过修改d m 3 的字典表,加入一些核心结构,实现 s q l 3 关于u d t 的基本功能要求,既包括u d t 的几种基本形式的初步支持,也包括i j d t 的继承、嵌套能力; 3 研究在d m 3 上实现u i ) f 的相关技术和关键问题,提u 在i ) m 3 上支持不同类 ,艘语言的u i ) f 的设计方案; 4 实现支持u d t 的s q l , 解释器,并对新型查询优化、缓冲区管理策略等进行 研究。 华中科技大学硕士学位论文 2 用户定义类型的需求分析 本章首先分析在d m 3 上实现对用户定义类型支持的基本需求,讨论些关键问 题和技术方案,然后据此提出相应的扩展策略,并按照这一策略给出扩展后系统的 总体结构。 2 1 用户定义类型的基本需求 在d b t 3 中实现对u d t 的支持,不但包括功能方面的基本要求,也包括安全特征 上的要求,同时系统的整体性能和效率、u d t ( 包括与之密切相关的u d f ) 的易用性 和效率也应该被考虑。下面对这几个方面分别予以分析。 2 1 1 基本功能需求 u d i 、的基本功能需求,既包括数据部分,又包括函数部分。 1 数据部分的需求 在d m 3 中已经实现了对二进制大对象( b i n g = i r y 【e r g eo b j e c t ,b l o b ) 的支持, 这种存储“自然数据”的能力,其实质是为了存储图像、声音等大数据刑象,在o m 3 中b l o b 的最大长度是2 g b 。因此,现阶段要使d m 3 支持u d t 实际只需要支持两种形 式。第一是要支持单值数据类型,即可以将任何系统预定义类型定义为新类型。单 值用户定义类型一旦被定义,就会被当作单独的类型处理,这样,如果类型u 是基 f 类型t 的特殊类型不经过类型转换,就不能比较这两种对象。译值用户定义类 型通过提供类型检查获得很有价值的应用。例如,在提供单值用户定义类型之前, 用户可以把某个人的年龄和邮编定义为整型,此时它们的比较尽管不合理,但是数 据库系统不会报错,通过定义为新的单值类型,两者的不合理比较就很容易被发现。 对u d t 支持的第二种形式是支持结构化用户定义类型,为了使得结构化类型有 实用价值,也要求支持继承和嵌套语义。封装用于使程序不能通过与对象关联的方 法和用户定义函数以外的其他语法途径来访问对象中的数据的情形,在s o l 3 中,并 末要求u d t 支持封装原则,当前主流的系统也如此,因此,d m 3 也不需要支持类型 的封装。 华中科技大学硕士学位论文 2 函数部分的需求 洲3 中u d t 的另一个基本功能需求就是支持与之密切相关的用户定义函数,当 用户定义函数关联于u d t 的时候被称为用户定义方法。 在d m 3 中,实现通用语言的u d f ,不但是u d t 系统的一部分,也会大大增强系统 的功能和性能。首先,u d f 提供更好的代码复用性。如果操作或任务可以被其他用 户或应用程序使用,那么用户定义函数使这些用户或应用程序无需编写重复的代码 就可以用于不同的数据类型。 其次,u d f 也可提高d m 3 的实用性。如果应用程序中嵌入了操作或任务,那么 仅有该应用程序的用户可以执行这些操作和任务,换句话说,交互用户( 例如1 s q l 工具用户) 就不能利用这个功能。然而,如果一个操作或任务是以用户定义函数的 形式存储在数据库中的,那么交互用户和应用程序用户都可以执行这个操作或任务。 支持u d f 也可以提高d m 3 在某些应用中的性能。直接从数据库引擎中执行用户 定义函数将比从应用程序中执行获得更多的性能优势,尤其是当函数可能用于对以 后处理的数据进行验证的时候。用户定义函数能够提高性能的一个例子就是对类型 为8 l o b 的数据执行操作的时候,如果有一个函数,它的功能是从b l o b 值中抽取部 分信息那么就可以在数据库服务器上执行这个抽取操作,然后仅仅把抽取的值返 回给应用程序。这种处理方法比向应用程序传送整个b l o b 值,再执行抽取操作更加 高效。 d m 3 已经通过自己维护一个简单的虚拟机的方式实现了存储过程,但是用户定 义函数的要求与此有较大差别。u d f 一般使用外部语言如5 a v a 、c 等丌发。在实现 以后,已经编译的代码必须放入一个数据库服务器可以访问的文件中,然后外部函数 通过服务器用“创建函数”语句登记,这个语句提供函数名、参数、返回值等信息。 函数的重载对于函数的实用性有很大的影响,因此在d m 3 中应该支持。 2 1 2 安全需求 d m 3 是国产安全数据库管理系统,对新增的u d t 部分,除了上述的基本功能需 求外,在安全方面显然有一定的要求。实际上,u d t 的安全问题可以分两个层次。 首先是d m 3 本身具有身份验证、自主存取控制、强制存取控制和审计机制等一系列 安全机制,这些机制应该在u d t 的实现中得到应用;另外,由于u d f 的代码是客户 端编写的,这也会涉及到安全问题。 华中科技大学硕士学位论文 1 用户定义类型的安全机制 在安全管理机制方面,d m 3 把系统管理员分为数据库管理员d b a ,数据库安仝管 理员s s o ,数据库审计员a u d i t o r 三类。数据库管理员主要负责数据库的建立、维 护以及自主存取控制;数据库安全员主要负责强制存取控制;数据库审计员负责数 据库的审计活动。在d m 3 所采用的安全管理措施中,自主存取控制负责系统级、表 级等权限的授予和回收,这就要求在u d t 的设计过程中,给创建u d t , t j g , j 建u d f 的 用户授予定的权限,或者规定只有定级别的用户才有相应的使用权限;在强制 存取控制方面,d m 3 要求满足向下读、向上写的原则,这就要求u d t 和u d f 的创建、 修改和删除必须符合相应的要求;在审计方面,d m 3 审计机制能从数据库系统本身、 主体和客体三个方面设置审计,记录审计对象的活动过程,这就要求系统能够提供 用户使用l i d 、和u d f 等活动的审计信息。 2 函数安全问题 如果u d f 在客户端运行,一般不存在太大的安全问题,然而,第三章的讨论将 表明,d m 3 的u d f 应该在服务器端运行,因此函数安全的问题出现了。 首先,对于用户自己定义的函数,它们有可能在读写数据库的数据时偶然地( 或 有意地) 造成安全上的漏洞。如果有个函数没有完全调试好,执行了一条非法指令 或跳转到个彳i 存在的地址,那么就会导致该函数所在的进程垮掉。如果此时i d f 在客户端运行,则客户进程会垮掉,虽然恼人但还是可以接受;但如果u d f 在服务 器端运行,d b m s 进程就会垮掉,这可能会危害到附属于这个系统的所有用户。而且, 如巢客户进程崩溃,问题显然处在在用户代码上。如果服务器垮掉,问题出在d b m s 还是u d f 就不那么明显了。一旦函数作了跳转,跳到d b m s 代码段的某处,这种含糊 性就更高了,更难找到问题的出处。这种情况下由于d b m s 并不一定有控制权,到此 即使问题实际出在u d f 上,d b m s 还是会垮掉“。 如果函数出于恶意,情况就更糟。客户端运行的函数能读( 或破坏) 该客户可 读或可写的任何数据,这只是自身的安全性问题。如果用服务器方式运行,情况就 严重得多。此时函数能读和破坏数据库中的所有数据,因为所有d b m s 数据放在d b m s 进程可读写的文件中。要在服务器端运行,数据库管理员必须相信用户定义的函数 没有恶意,但许多情况下这种信任并无道理。 如果d m 3 支持用户定义函数在服务器端运行的话,就应该堵上这一安全漏洞。 划于解释型语言如j a v a ,则利用j a v a 本身具有的安全机制,解决函数安全问题; 华中科技大学硕士学位论文 对于本地语言c ,则依靠当前操作系统研究上的一些的技术和d m 3 奉身的安令机制 配合来对函数的创建、注册和使用进行合理的限制,从而较好地处理安全问题。 2 1 3 易用性需求 在安全的前提下,也应该充分考虑d m 3 中u d t 的易用性、町移植性、兼容性、 跨平台等各方面的需求,下面对此逐一进行分析。 1 用户定义类型的易用性 为了使u d t 比较容易使用,系统应该向外部提供一些处理u d t 的基本接口。首 先应该支持路径表达式,以便通过它可以访问到u d t 数据的任何层次,例如 l e a c h e r d a t e 表达式返回的可能是标量,也可能是元组,要提供访问属性值为元组 的能力;同时,也应该支持结构化类型的比较运算,例如比较对象标识”;最后还 要求有在诸如s e l e c t 和w h e r e 子旬中调用方法的能力。 适当的数据类型支持所带来的一大好处就是允许第三方厂商( 包括d b m s 厂商本 身) 构建可方便插入到d b m s 的独立的“数据类型”包。例如复杂文本处理、金融时 间序列处理、地理空间数据分析等的支持。在不同的系统中,对这些包的描述各种 各样,o m 3 应该提供类似的工具包。另外还要考虑u d t 的使用过程中界面的友好性, 例如有些情况下,查询返回的结果参差不齐,这就要求客户端程序必须准备处理这 种复杂的参差不齐的结果。 2 用户定义函数的易用性 为了方便地使用u d f ,在d m 3 中应该支持对u d f 的动态链接,只有需要这些函 数时,它们才进到d b m s 的地址空间。在好的对象关系d b m s 中,用户应该很容易就 能添加数据类型、操作符或函数。如果为了安装一个新类型或函数就不得不使系统 停下来,那就意味着这样的安装必须提前几天就和系统管理员一起计划好,这种静 态链接对用户显然很不方便。用户定义的函数随着时间推移经常要由开发者修改变 化,当这种情况发生时,必须在d b m s 上重新定义该函数。如果d b m s 实行的是函数 静态链接,那就必须将d b m s 停下来,重新链接,重新安装。因此,改进一个算法得 付出系统停f 来和重建系统的沉重代价。随着系统的长期使用,d b m s 必定有大量的 用户自定义函数,如果这些函数在d b m s 安装时静态链接进d b m s 地址空间,那d b m s 的覆盖区就太大了。静态链接一个用户白定义函数库,很可能使得d b m s 所占用空间 增大5 倍甚至l o 倍,特别是做模式识别和图形理解函数时更是如此,因为在这两类 1 4 华中科技大学硕士学位论文 应用中,函数都很多。当d b m s 覆盖区增大时,大多数操作系统会有额外的系统开销 和分页活动,而且如果覆盖区太大,有些操作系统实际上会“堵塞”。”1 。凼此,不 论从
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自动控制系统【直流】课设指导书-野莹莹要点
- 设备费用核算管理
- 财务会计综合考试试卷 (一)
- 2024年中考押题预测卷02(武汉卷)-道德与法治(考试版)A3
- 2024-2025学年下学期高一生物沪科版期末必刷常考题之有性生殖中的遗传信息传递
- 建筑施工特种作业-高处作业吊篮安装拆卸工真题库-1
- 山东社区招聘题目及答案
- 剖切面的种类与剖切方法2
- 2023-2024学年山东省青岛市胶州市高二下学期期末学业水平检测数学试题(解析版)
- 2023-2024学年湖北省新高考联考协作体高二下学期7月期末考试数学试题(解析版)
- 王阳明读书分享
- 2024年银行考试-银行间本币市场交易员资格考试近5年真题集锦(频考类试题)带答案
- PC工法桩专项施工方案-
- 艺术与科学理论基础智慧树知到答案2024年北京交通大学
- 2024年金华市中考数学试卷
- DB13(J) 8457-2022 海绵城市雨水控制与利用工程设计规范
- 人教版五年级上册小数乘除法竖式计算题200道及答案
- 部编版(2024)一年级语文上册识字3《口耳目手足》精美课件
- 班级管理案例与应用智慧树知到期末考试答案章节答案2024年哈尔滨师范大学
- CJ/T 43-2005 水处理用滤料
- 尼曼-半导体物理与器件第十章
评论
0/150
提交评论