(计算机科学与技术专业论文)基于ldap的数据访问模式的研究.pdf_第1页
(计算机科学与技术专业论文)基于ldap的数据访问模式的研究.pdf_第2页
(计算机科学与技术专业论文)基于ldap的数据访问模式的研究.pdf_第3页
(计算机科学与技术专业论文)基于ldap的数据访问模式的研究.pdf_第4页
(计算机科学与技术专业论文)基于ldap的数据访问模式的研究.pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

(计算机科学与技术专业论文)基于ldap的数据访问模式的研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于l d a p 的数据访问模式的研究 【摘要】 在现代的软件开发中,面向对象的设计思想越来越被广泛应用,但是在几乎 所有的项目和产品的软件开发中,都必须涉及关系数据库的存取更新等问题。对 象由数据和行为组成,关系型数据库则是由表和它们之间的关系组成的,所以面 向对象和关系数据库这两种技术存在着不匹配问题。换言之,需要一种映射方法 来解决该矛盾,它向上提供了面向对象的方法,向下则封装了对数据库的访问。 本文结合a l c a t e l 的n g l ro a m ( n e wg e n e r a t i o nh l ro r i e r a t l o na n d m a i n t e n a n c e ) 应用系统,提出了一种基于l d a p 的统一数据访问接口,给出了统 一数据访问接口的总体架构及基于g d a i ( g e n e r a ld a t aa c c e s si n t e r f a c e ) 的 开发流程,对该接口以诸如实体映射、关系映射、功能模块等关键技术进行分析 及讨论。通过该接口,将对象信息作为一个节点存储到树状结构中,这样既能存 储信息,还能同时存储信息之间的层次和包含关系。通过x m l 的配置文件来解决 信息树和数据库的映射,自动实现两种视图之间的转换,将持久层中的信息树存 储到数据库中。这个模型能够提供持久层的全部功能,并且提供了更加清晰的信 息组织形式。最后给出了应用该技术的实例系统。 【关键字】 l d a px v i l 对象关系映射面向对象 第3 页 基于l d a p 的数据访问模式的研究 a b s t r a c t 】 d u r i n gt h es o f t w a r ed e v e l o p m e n t ,t h i n k i n go fo b j e c t o r i e n t e da l r e a d y u s e dw i d e l y ,b u ts o m ep r o b l e m ss u c ha sd a t a b a s ea c c e s sa n du p d a t ei n r e l a t i o n d a t a b a s e w l l lb ea l m o s t i n v o l v e di ns o f t w a r eo r p r o j e c t d e v e l o p m e n t o n ec o n f l i c te x i s t sb e t w e e no b j e c t o r l e n t e dt e c h n i q u ea n d r e l a t i o nd a t a b a s eb e c a u s eo b j e c ti s c o m p o s e do fd a t a a n df u n c t i o n , r e l a t i o nd a t a b a s e1 sc o m p o s e do ft a b l ea n dr e l a t i o n i no t h e rw o r d s ,o n e m a p p e df u n c t i o nw h l c hp r o v i d et h eo b j e c t o m e n t e df u n c t i o nu p w a r d sa n d e n c a p s u l a t ed a t a b a s ea c c e s sd o w n w a r d sn e e dt ob em e n t i o n e dt os o l v et h i s i n c o n s is t e n c y a l c a t e lo a m ( o p e r a t i o na n dm a i n t e n a n c e ) a p p l l c a t l o ns y s t e mi sa nd y n a m i c m a n a g e m e n ts y s t e mw h i c hd e v e l o p e db a s e do nl d a pd a t aa c c e s si n t e r f a c e , t h i sa r t i c l ed e t a i ld e s c r i b et h es y s t e mc o n s t i t u t eo fg e n e r a ld a t aa c c e s s i n t e r f a c ea n dt h ed e v e l o p m e n tp r o c e s so fg d a i ( g e n e r a ld a t aa c c e s si n t e r f a c e ) , g i v ed e t a i la n a l y z ea n dd i s c u s s i o nf o rs o m ek e yt e c h n o l o g ys u c ha se n t i t y m a p p i n g ,r e l a t i o nm a p p i n g ,f u n c t i o nm o d e la n ds oo n w i t ht h i si n t e r f a c e , i n f o r m a t i o nw i l lb es e ta so n en o d et os t o r a g et od e n d r i f o r ms t r u c t u r e s oa st os a v ed a t aa n dr e f l e c ti n f o r m a t i o nr e l a t i o n f o rm a p p i n g t h ex m l c o n f z g u r a t i o nf l l ew l l lr e a l i z et h ec o n v e r s i o na u t o m a t i c a l l yd u r i n gt w o k i n do fv i e wa n ds a v ed a t af r o mi n f o r m a t i o nt r e ei np e r s i s t e n c el a y e rt o d a t a b a s e t h i sm o d e lc a ns u p p o r ta l lf u n c t i o nf o rp e r s l s t e n c el a y e ra n d p r o v i d em o r ed i s t m c ti n f o r m a t l o no r g a n i z a t i o nt y p e a tl a s t a ne x a m p l e i sg i v e nw h i c ha p p l yt h i st e c h n o l o g y k e yw o r d l d a px m lo rm a p p t n gg o 第4 页 基于l d a p 的数据1 方问模式的研究 引言 在数据访问技术不断革新的同时,新的数据访问模式也不单推陈出新,但是 它们总体的思想是面向对象和分层结构。 关系数据库和面向对象并不完全兼容。它们反映了两种不同的世界观:在数 据库中所见的全是数据:在面向对象的系统中所见的全是行为。当为数据访问寻 找一种合适的方法时,这种不匹配就成为了主要矛盾:使用对象模型,常常通过 对象之间的关系来进行访问;而根据关系理论,则通过表的连接、行列的复制来 实施数据的存取。 持久层的出现允许开发者专注于商业领域的问题,无需了解数据库的私有 实现。它可以从一个数据存储源中生成对象,并可以把数据保存到数据存储源中 去。这一层向开发人员隐藏了对象存储的细节,这实际上是构建一个层的特殊情 况,使您自己免于变化之苦。所有持久对象都使用持久层的标准接口,如果数据 存储机制改变了,只有持久层需要改变。 本文参考了l d a p 协议组,提出了一种基于l d a p 的持久层模型。将信息 作为一个节点存储到树状结构中,这样既能存储信息,还能同时存储信息之间的 层次和包含关系。关于映射,本文提出通过x m l 的配置文件,自动实现两种视 图之间的转换,将持久层中的信息树存储到数据库中。 本文的结构安排是:第一章介绍数据访问模式的概念及面临的问题。同时为 了更好的组织信息,更多支持面向对象的特性,我们参考了l d a p 的目录模型, 实现了关系模型到目录模型的自动转化。最后简要介绍基于l d a p 的统一数据 访问接口( g e n e r a ld a t a a c c e s si n t e r f a c e ,以下以g d a i 表示) 在a l c a t e l 的下一代 h l r ( h o m el o c a t m nr e g i s t e r ) 项目中的应用。第二章简单介绍l d a p 协议组和 l d a p 协议的关系,详细描述了l d a p 协议的四个基本模型。然后给出持久层的 概念,引出g d a i 的特性及其现实意义。第三章对g d a i 的功能及总体构架进行 了阐述,指出了g d a i 对当前开发流程及系统构架的影响,并且详细给出了其内 部的工作流程。第四章介绍了g d a i 的关键技术及实现细节。第五章描述了g d a j 在a l c a t e l 公司的n g h l r ( n e wg e n e r a t i o nh o m el o c a t i o nr e g i s t e r ) o a m 项目 中的实施情况,使读者对g d a i 的使用有了一个直观的理解。第六章总结g d a i 优缺点,并且提出了新的期望。 第5 页 基于l d a p 的数据访问模式的研究 第一章数据访问模式概述 1 1 数据访问模式研究的背景 在数据库出现的早期,开发人员只需要了解正在使用的数据库产品的详尽知 识。但数据库产品和技术发展很快,从关系数据库到非关系数据存储区( 如电子 邮件和文件系统) ,数据访问技术必须始终追随技术的飞速变化。并且,随着客 户端服务器及多层应用程序结构的出现,现在开发人员必须了解多种数据访问 技术。大多数开发人员花了数年时间学会了许多缩写词所对应的技术,例如,j d b c ( j a v ad a t ab a s ec o n n e c t i v i t y ) 、o d b c ( o p e l ld a t a b a s ec o n n e c t i v i t y ) 和 a d o ( a c t i v ed a t ao b j e c t ) 。现在m m r o s o r 已经推出n e t 框架,并且,随 之还有另外一项新的数据访问技术:a d o n e t 。 面对这么纷繁复杂的访问接口,如果才能找到一种有效的,便捷的,相对稳 定的数据访问模式一直是困扰软件开发的一个关键问题。在面对对象技术深入人 心的今天,希望能够摆脱数据库的关系模型,能够在实体模型基础上开发我们的 应用程序。 1 2 数据访问模式研究的现状 在分层的软件结构中,业务逻辑层代表了业务数据和业务逻辑。域对象位于 业务逻辑层,实体域对象代表应用运行时的业务数据,它存在于内存中,过程域 对象代表应用的业务逻辑。数据库用于存放永久性的业务数据。 业务数据在内存中表现为实体域对象形式,而在关系数据库中表现为关系数 据形式。数据访问代码负责把实体域对象持久化到关系数据库中,数据访问经过 不断的变化,出现了几种不同的数据访问模式。 1 ) 业务逻辑和数据访问耦合 在过程域对象中,业务逻辑和数据访问代码混杂在一起。可以说这个数据访 问的最原始的模式。这种结构使得业务逻辑交得混乱,而且很难维护,通用性很 差。很多老的系统就是基于这种数据访问模式,参见图卜l 。 第6 页 基于l d a p 的数据访问模式的研究 l l 表示层 一 j l 业务逻辑层 匡引燃鳓匍 jl i 数据库 l 图1 1 业务逻辑和数据访问耦合 2 ) 主动域对象模式 由实体域对象负责自身的数据访问细节,这种实体域对象也被称为主动域对 象,参见图1 2 。e j b 中的b m p 就采用了主动域对象模式。 表示层 j 王 业务逻辑层 ( 数据库访问细节) fl 业务逻辑 j 工 数据库 图i - 2 主动域对象模式 3 ) 对象关系映射模式 在单独的持久化层由对象关系映射中间件封装数据访问细节,参见图1 3 。 o r m ( 0 b j e c t r e l a t l o n a lm a p p e r ) 中间件提供对象关系映射服务,当向数据 库保存一个域对象时,把业务数据由对象形式映射为关系数据形式;当从数据库 第7 页 摹于l d a p 的数据访问模式的研究 加载一个域对象时,把业务数据由关系数据形式映射为对象形式。 i数据映射层 l负责持久化数据 丁亡 l数据库 i 图1 - 3 对象关系映射 1 3 数据访问模式研究的挑战 1 ) 面向对象技术和传统关系模型的不匹配 关系数据库和面向对象并不完全兼容。它们反映了两种不同的世界观:在 r d b m s ( r e l a t i o n a ld a t a b a s em a n a g e m e n ts y s t e m ) 中所见的全是数据;在面 向对象的系统中所见的全是行为。面向对象的模型比较适合于具有以下特点的系 统:系统中含有复杂的行为和特定于状态的行为,并且数据在其中处于次要位置; 或者系统中的数据可以按照自然的层次通过导航来进行访问( 例如物料单) 。 许多信息都存储在关系数据库中,而如果面向对象的应用程序要访问这些数 据,就需要能够对r d b m s 进行读写操作。此外,面向对象的系统经常需要与 非面向对象的系统共享数据,这就需要将r d b m s 作为共享机制。 虽然面向对象的系统和关系型系统具有一些共同的特点( 在概念上,对象的 属性与实体的列相似) ,但是它们之间的根本差异给系统间的无缝集成造成了很 大的困难。 2 ) 新的模式带来的新的问题 新的模式在带来新的思想的同时,也带来了很多新的问题。新的模式因为建 立在老的访问技术上,对程序员提出了新的要求。传统的思想和新的模式之间也 会发生冲突。各个产品的相对不成熟以及各种规范的不统一,造成了在开发模式 第8 页 基于l d a p 的数据访问模式的研究 的混乱局面。 3 ) 现有对象关系映射组件的不足 目前已经存在很多的o rm a p p i n g ( o b j e c t o r i e n t e dm a p p i n g ) 组件用于 解决面向对象和关系数据之间的不一致问题和。比如,在j a v a 世界里比较有名 的有o r a c l e a st o p l m k 和开源的h i b e r n a t e ,在n e t 平台上有n h l b e m a t e , d a m o b j e e t s 等组件。但是现有的组件的对面向对象数据的表现能力还不够丰富, 对面向对象的特性还不能够全面地支持。如h i b e r n a t e 虽然功能很强大,支持各 种关系模式,而且还有比较灵活的h q l 查询语言。但是它仍然脱离不了繁琐的 关系数据设计和复杂的关系映射,如果不是经验丰富的专业人员很难使用,因为 光是手动编写x m l 映射配置文件就很让你头疼。由于n e t 优秀的r e f l e c u o n 机 制,使得n e t 平台的o rm a p p i n g 组件一般都可以自动的解析持久化类型的结 构,自动的产生映射文件甚至是自动产生和维护数据库结构。d a t a o b j e c t s 组件 可以自动的创建数据库中的表结构,使用很方便,但是查询数据很不方便,不支 持类似于s 0 l 的查询语言。 本文提出了一种基于l d a p 的数据访问模式,称为统一数据访问模式。把 基于这种模式的实现称为g d a i 。l d a p 中条目的组织一般按照地理位置和组织 关系进行组织,非常直观。g d a i 会将业务数据作为一个节点存储到目录结构中, 这样既能存储信息,还能同时存储信息之间的层次和包含关系。关于映射,本文 提出通过x m l 的配胃文件,自动实现两种视图之间的转换,将持久层中的信息 树存储到数据库中。 由本人参与丌发的阿尔卡特n g h l ro a m 应用系统就大量采用g d a i ,解 决了数据面向对象和数据存取的问题,隔离o a m 的业务逻辑和数据库,所有的 数据持久工作都交由g d a i 实现。o a m 业务逻辑的开发人员只要在l d a p 的信 息模型基础上开发应用,而不用关心数据库的变化。这样使得业务逻辑变得更加 清晰,更易于维护和修改,实现了业务逻辑的稳定性和通用性。有关数据访问的 性能优化,也只需要由更加专业的数据库设计人员在g d a i 中实现,所以应用的 数据操作性能也得到了保障。 第9 页 基于l d a p 的数据访问模式的研究 第二章l d a p 协议及持久层技术 2 1 目录 目录是一种专门的数据库,它服务于各种应用程序,包括l d a p ( l i g h t w e l g h t d i r e c t o r ya c c e s sp r o t o c 0 1 ) 目录和基于x 5 0 0 的目录。这些目录都是通用的 标准的目录,它们不适合于特定的操作系统。 不管她们知不知道这里的目录是什么意思,大多数人熟悉各种各样的目录, 像电话簿、黄页、电视指南、购物目录和图书馆卡片目录。我们把这一类目录归 为日常目录。 虽然目录也被称为特殊的数据库,但它不同于真正的数据库。目录的大部分 操作为读操作。假如你的应用程序要写大量的数据,你应该考虑选择使用数据库 来实现。目录支持相对简单的事务处理,相反,数据库被设计成处理大量的各种 各样的事务处理。假如你的应用要求这种重负荷的事务支持,你该选择数据库而 不是目录。另一方面,假如你的应用不要求大负荷事务处理,而是偶尔写一些 简单的事务信息,选择目录会更有效更简单。 2 2l d a p 协议的发展 近几年,随着l d a p 技术的兴起和应用领域的不断扩展,目录服务技术成为 许多新型技术实现信息存储、管理和查询的首选方案。 l d a p 协议从1 9 9 3 年批准,产生了l d a pv i 版本,随后于1 9 9 7 年发布了 第三个版本l d a pv 3 ,它的出现是l d a p 协议发展的一个里程碑性标志,它使 l d a p 协议不仅仅作为x 5 0 0 的简化版,同时提供了l d a p 协议许多自有的特性, 使l d a p 协议功能更为完备,具有了更大的生命力。 2 3l d a p 的基本模型 数据访问接口的基本模型借鉴了l d a p 的基本模型,事实上两者非常地相识。 l d a p 的基本模型分为四个:信息模型、命名模型、功能模型,安全模型。每个 模型描述了组织,定位,操作,安全的各个方面。 第l o 页 基于l d a p 的数据访问模式的研究 2 3 1 信息模型 在l d a p 中信息以树状方式组织,在树状信息中的基本数据单元是条目, 而每个条目由属性构成,属性中存储有属性值;l d a p 中的信息模式,类似于面 向对象的概念,在l d a p 中每个条目必须属于某个或多个对象类( o b j e c tc l a s s ) , 每个对象类由多个属性类型组成,每个属性类型有所对应的语法和匹配规则;对 象类和属性类型的定义均可以使用继承的概念。每个条目创建时,必须定义所属 的对象类,必须提供对象类中的必选属性类型的属性值,在l d a p 中一个属性 类型可以对应多个值。如图2 - 2 表示的属性结构。 通常,条目中的信息说明真实世界的对象,如果你看到一个典型的目录,就 会发现数以千计的条目与人、部门、服务器、打印机等组织中的真实对象相符合。 条目由属性集合组成,每个属性说明对象的一个特征。每个属性有一个类型 和一个或多个值,属性类型说明包含在此属性中的信息的类型,而值包含实际的 数据。如图2 1 表示的是描述人的一个条目:具有人的全名、姓、电话号码、电 子邮件地址等属性 属性类型 c r l : s n : t e l e p h o n e n u m b e r m u l l 属性值 z h a n gs a n z h a n g + 2 28 9 8 3 2 2 2 l 7 h a n a e a n ,a i t pm m 图2 - 1 属性表示 图2 - 2 属性结构 第1 1 页 基于l d a p 的数据访问模式的研究 2 3 2 命名模型 2 3 2 1l d a p 命名模型 l d a p 命名模型定义用户如何组织和引用数据。l d a p 命名模型提供的灵活 性,使用户可以用一种易于管理的方式把条目放入目录。例如可以创建一个条目, 其中保存描述组织中人的信息的所有条目。 在l d a p 中每个条目均有自己的d n 和r d n 。d n ( d n = d x s t m g m s h e d n a m e ) 是该条目在整个树中的唯一名称标示,r d n ( r e l a t i v e d i s t i n g u i s h e d n a g t e ) 是条目在父节点下的唯一名称标示,如同文件系统中,带路径的文件名就是d n , 文件名就是r d n 。l d a p 的命名模式定义了如何e n t r y 表以及如何组织。目录款 目以一种树形的结构进行组织,这一树形结构被称为d i t ( 目录信息树,d i r e c t o r y i n f o r m a t i 0 1 1 t r e e ) 。在这一树形结构中,款目按照唯一标示名d n 来组织。d n 由 一系列的相对唯一标示名r d n 组成。在d i t 中,每一个d n 相当于从d i t 的根 开始,到各个e n t r y 的一条唯一分支。 2 3 2 2 命名为什么重要 命名模型是为目录中的每个条目给出一个唯一的名称。在l d a p 中,使用 d n 来唯一标识条目,d n 在d r r 中必须是唯一的。一个d n 由一系列的r d n 组成,从左到右排列,对应命名的条目逆向到达树的顶端。 在r d n 中,有一些经常使用的属性名,这些属性名在l d a p 的命名规则中 定义并被广泛使用: 字符串( 属姓名)所代表的含义 c n l s t o o u c s t r e e t c o m m o n n a m e l o c a l i t y n a m e s t a t e o r p r o v l n c e n a m e o r g a n i z a t i o n _ n a m e o r g a n i z a t i o n a l u n i t n a m e e o u n t r y n a m e s t r e e t a d d r e s s 第1 2 页 基于l d a p 的数据访问模式的研究 d c d o m a i n c o m p o n e n t u i du s e r i d 其中d c 就是一个记录的所属区域,o u 就是一个记录的所属组织,u i d 就 是这个记录的名字。 又比如对于学校的组织结构,可以想象这样的一个情况:你要拜访另外一个 系的一个老师,你怎样才能找到他呢? 首先你知道那老师的所属的系和他的姓 名,也许你可以根据这些信息顺利的找到那位老师,但是也许你会遇到意想不到 的情况。比如说同一个系中有两位同名同姓的老师,在这样的情况下,必须提供 更多的信息才能确认哪一位老师是你要找的。性别、住址、电话,或者干脆你逐 个拜访这两位老师,通过直接的接触才能确定你要找的那位老师。这个过程是繁 琐的,但也说明一个问题:也许在现实世界中通常会用姓名去拜访某位陌生的老 师,但是这个可能不是最高效的。如果每一个老师都有一个唯一的工号,通过这 个工号,就能很快得找到相应的老师。 用工号来唯一代表一位老师,就保证在个系中没有两个有相同工号的老 师。l d a p 树结构也有这样的要求,在兄弟条目间( 他们拥有共同的直接父条目) , 每个r d n 必须是唯一的。由于这个规则在条目树中递归有效,所以没有两个条 目有相同的d n 。如果你尝试添加两个有相同名字的条目,目录服务器将拒绝你 的第二个条目,这和u n 很相似。 需要注意的是只有拥有共同直接父条目的r d n 必须唯一。比如在不同的系 中,有两位同名同姓的老师,这个并不会引起什么误会。这样的情况下,我们还 是可以用姓名作为老师的标示。但是一旦有一天,新来了一位老师,他的名字正 好和另一位的老师的姓名一样,我们的唯一性就被打破了。所以一个系统必须能 够实现考虑到目录组织的情况并选择合适的r d n 。 2 3 3 功能模型 在l d a p 中共有四类操作:查询类操作、更新类操作、认证类操作、其它 操作。 变化是绝对的。没有的记录被创建,已有的记录被修改或者被删除。读取一 条记录来获得他的详细信息,根据某个条件来查询一批记录。 1 ) l d a p 查询类操作 查询类操作允许用户搜索目录并取回目录数据,有两个查询操作:查询和比 较。 查询操作用来在目录中搜索条且并取出单个目录条目。l d a p 没有读操作, 第1 3 页 基于l d a p 的数据访问模式的研究 当需要读取某条目时必须使用一种特殊格式的查询操作,其中限定了你要取回的 条目内容。另一种查询类操作是比较操作,它用于检查某条目是否包含某个属性 值,如果条目有此值,则比较结果为真,否则比较结果为假。 2 1l d a p 更新类操作 l d a p 更新类操作包括四种操作:添加、删除、修改和重命名( 即修改m d n ) , 这四种操作定义了在目录中操作数据的方式。 ( 1 ) 添加操作 添加操作创建新的目录条目,它的后两个参数:要创建的条目的分辨名d n 和新条目中包含的属性属性值对的集合。为了使添加操作成功,必须满足以下 四个前提条件:新条目的父条目必须已经存在,不能存在同名( 分辨名) 的条目, 新条目必须与有效的模式( s c h e m a ) 相一致,访问控制必须允许执行此操作。 ( 2 ) 删除操作 删除操作只需指明要删除的条目d n 。只能删除目录的叶节点,即不支持删 除子树。删除一经进行无法恢复。为了使删除操作成功,必须满足以下两个前提 条件: 新条目的父条目必须已经存在并且访问控制必须允许执行此操作。 ( 3 ) 修改操作 修改操作除指明操作的条目d n 外,还包括l d a p m o d 结构数组。其中每个 数组元素是一个修改动作,记录修改的操作类型和操作数据。修改操作功能强大 并能完成对条目的属性类型和属性值的修改操作。 2 3 4 安全模型 l d a p 中的安全模型主要通过身份认证、安全通道和访问控制来实现。 身份认证在l d a p 中提供三种认证机制,即匿名、基本认证和s a s l ( s i m p l e a u t h e n t i c a t i o na n ds e c u r el a y e r ) 认证。匿名认证即不对用户进行认证,该方法 仅对完全公开的方式适用:基本认证均是通过用户名和密码进行身份识别,又分 为简单密码和摘要密码认证;s a s l 认证即l d a p 提供的在s s l ( s e c u r i t ys o c k e t l a y e r ) 和t l s ( t r a n s p o r tl a y e rs e c u r i t y ) 安全通道基础上进行的身份认证, 包括数字证书的认证。 通讯安全在l d a p 中提供了基于s s 坍l s 的通讯安全保障。s s l ,t l s 是基 于p k i ( p u b h ck e yi n f r a s t r u c t u r e ) 信息安全技术,是目前i n t e m e t 上广泛采 用的安全服务。l d a p 通过s t a r t t l s 方式启动t l s 服务,可以提供通讯中的数 据保密性、完整性保护:通过强制客户端证书认证的t l s 服务,同时可以实现 对客户端身份和服务器端身份的双向验证。 第1 4 页 基于l d a p 的数据访问模式的研究 虽然l d a p 目前并无访问控制的标准,但从一些草案中或是事实上l d a p 产品的访问控制情况中不难看出:l d a p 访问控制异常的灵活和丰富,在l d a p 中是基于访问控制策略语句来实现访问控制的,这不同于现有的关系型数据库系 统和应用系统,它是通过基于访问控制列表来实现的,无论是基于组模式或角色 模式,都摆脱不了这种限制。 在使用关系型数据库系统开发应用时,往往是通过几个固定的数据库用户名 数据访问库。对于应用系统本身的访问控制,通常是需要建立专门的用户表,在 应用系统内开发针对不同用户的访问控制授权代码,这样一旦访闯控制策略变更 时,往往需要代码进行变更。总之,关系型数据库的应用中用户数据管理和数据 库访问标识是分离的,复杂的数据访问控制需要通过应用来实现。 对于u ) a p ,用户数据管理和访问标识是一体的,应用不需要关心访问控制 的实现。这是由于在l d a p 中的访问控制语句是基于策略语句来实现的,无论 是访问控制的数据对象,还是访问控制的主体对象,均是与这些对象在树中的位 置和对象本身的数据特征相关。 在l d a p 中,可以把整个目录、目录的子树、制定条目、特定条目属性集 或符合某过滤条件的条目作为控制对象进行授权;可以把特定用户、属于特定组 或所有目录用户作为授权主体进行授权;最后,还可以定义对特定位置( 例如i p 地址或d n s 名称) 的访问权。 2 4 持久层概要 所谓“持久层”,也就是在系统逻辑层面上,专注于实现数据持久化的一个 相对独立的领域( d o m a i n ) 。之所以要独立出一个“持久层”的概念,而不是“持 久模块”、“持久单元”,也就意味着在系统架构中,存在一个相对独立的逻辑 层面,专注于数据持久化逻辑的实现。与系统其他部分相对而言,这个层面拥有 一个较为清晰和严格的逻辑边界。 提供一个持久层,可以从一个数据存储源中生成对象,并可以把数据保存 到数据存储源中去。这层向开发人员隐藏了对象存储的细节,这实际上是构建 一个层的特殊情况,从而免于变化之苦。所有持久对象都使用持久层的标准接口, 如果数据存储机制改变了,只有持久层需要改变。 一个持久层必须提供下面的功能:持久层提供必要的方法,通过构造s q l 代码提供c r u d 操作,提供属性映射方法,为对象数据值进行类型转化:访问表 管理器,提供对事务管理器的访问,通过联接管理器联接到数据库。同时持久层 也有助于提供适当的变更管理,并提供唯一的对象标识。 第1 5 页 基于l d a p 的数据访问模式的研究 2 5 持久层的优势 1 1 应用逻辑与数据逻辑相分离 软件系统的研发过程中,贯穿了技术层面和业务层面的代码实现过程。程序 逻辑必须结合业务领域内相应的数据和系统资源,反映出特定的业务逻辑。对于 一个业务系统而言,系统研发的目标是为特定业务提供支持,业务逻辑往往是系 统实现的核心。此时,将业务逻辑与数据访问逻辑相分离就尤为重要。 2 1 隔离数据源,可以很方便的转换数据库 利用持久层可以将业务层与数据存储隔开,开发人员不需要关心实际存储的 方式,如果需要把s q ls e r v e r 数据库换成o r a c l e 数据库,只需要修改配置文件 就可,不需要修改程序。 3 1 摆脱了硬编码的s q l 语句的束缚。 一个相关的问题是应用程序中的s q l 代码( s t r u c t u r e dq u e r yl a n g u a g e ) 。 使用s q l 代码使程序与数据库设计耦合在一起,减少了程序的可维护性和升级能 力。其问题在于无论什么时候数据库发生改变,可能仅仅是表、列改名或发生移 动,均必须修改程序代码。另一个p e r s i s t e n c e 层可以使用的更好的办法是:基 于数据字典的信息生成动态s q l 语句。 4 1 提高学习开发效率,降低开发成本。 在使用持久层之后,我们将不需要再浪费太多的时间在数据库存储上了。持 久层框架已经把数据库转变成了我们熟悉的对象,我们将只需要了解面向对象开 发就可以实现数据库应用程序的开发。 5 ) 简化代码,提高性能 通过建立持久层系统,能够大量减少程序开发代码,开发数据层就比较简单, 减少出错机会。 通过c a c h e 的实现,能够对性能进行调优,实现持久层分隔了实际数据存储 和业务层之间的关系,能够对每一层进行单独跟踪,增加了性能优化的可能。 2 6 持久层的技术要求 2 6 1 性能 在将对象分解为数据以及将数据组合为对象时务必要仔细考虑。在某些数据 吞吐量既大而且又比较关键的系统中,上述问题通常是导致访问层中存在设计缺 第1 6 页 基于l d a p 的数据访问模式的研究 陷致命伤。 2 6 2 支持更多的面向对象的特性 对于那些利用关系数据库建造系统并谙熟对象技术的人员来说,惯常的做法 是调整对象模型以利于存储到关系型系统中,以及更改关系模型以便于更容易地 存储对象。虽然常常需要一些微小的改动,但一个设计良好的访问层能够将对象 和关系模型的设计限制降至最低。 2 6 3 可扩展性 访问层是一个白盒框架。如果该框架中需要某些功能,应用程序开发人员可 以对其做出相应扩展。访问层一般不需要扩展,就可以支持6 5 到8 5 的应用 程序数据存储要求。如果访问层没有设计为可扩展框架,那么要达到应用程序数 据存储要求的最后3 5 到1 5 将会非常困难,并且代价很高。比如说复杂的查 询,必须提供相应的接口来支持其操作。 2 6 4 简单高效的配置 为了实现对象模型和关系模型的映射,我们需要提供配黄信息,一般以x m l 文件的格式来书写。为了表达各种映射关系,需要设计一些语法,但是这些语法 有的时候可能会变得很晦涩,所以一个好的持久层,应该有相对简单的配置信息 的方式。 2 7 现有产品的分析 由于l d a p 的目录模型清晰直观,更趋向面对对象的设计思想,所以有很 多项目在其基础上进行进一步的研究,将其思想衍生到其他的领域,提供不同的 数据访问模式。在这些项目中,也不乏已经非常成功的产品。o c t e ts t r i n g 公司就提供了一个产品t h eo c t c t s t r i n gv i r t u a ld l r e c t o r ye n g i n e ( v d e ) 。这个中 间键可以同步多种数据源,并且向上提供虚拟实体对象,这个实体有多个属性组 成,并且有一个d n 来标示。v d e 能将基于l d a p 的查询请求转化成s q l 语句, 并且支持读写。 通过v d e 这个中间键,一个传统的d b m s 的行为和一个l d a p 服务没有任 何分别。我们可以同时享受到l d a p 在信息组织控制方面的优势,同时也能保 留关系数据库在存储数据的灵活性和高效性。v d e 的出现,使得企业用户能够 第1 7 页 基于l d a p 的数据访问模式的研究 很好地保护他们在d b m s 的投资,并且引入了一种全新的数据访问模式。v d e 同时提供了灵活的配置工具,可以很方便的进行虚拟实体的生成,映射,以及对 数据库结构的显示。用户可以在图形界面下完成大部分的配置任务。如图2 3 : l d a p ) m l 图2 - 3 o d e 概况 j d b c , 关系数据库 l d a p 目录服务 但是该系统与a l c a t e l 开发的统一数据访问接口相比较,还存在如下的缺点: 1 ) v d e 不提供实现数据自动持久化的公用接口,不能引入到新的应用开发 中。它可作为不同数据源的统一访问工具,但是并不提供编程接口。 2 ) v d e 主要偏向于读操作,包括读取单个记录或查询多条记录,不支持读 写操作和大批量的数据操作。v d e 主要是在图形界面下操作虚拟实体,应用并 不提供事务、缓存、并发控制等特性。 3 ) v d e 主要配置资源信息和虚拟实体的组成信息,对软件本身的配置比较 简单,这也主要是受产品定位的限制。 4 ) v d e 是一个软件产品,并不是一个开源项目。你不能在它的基础上进行 再开发,提供新的特性来满足新的项目需要。 第1 8 页 基于l d a p 的数据访问模式的研究 第三章统一数据访问接口的体系结构 3 1g d a i 的功能 g d a i ( g e n e r a ld a t a a c c e s si n t e r f a c e ) 隔离了业务逻辑和数据源,向上提供 面向对象的接口和基于目录结构的视图,保持了业务逻辑的相对稳定,向下实现 跨数据库平台移植,提供了高效灵活的配置管理。 g d a i 是介于业务逻辑和数据库之间,实现数据逻辑的功能层。在一个基于 w e b 的应用中,g d a i 的所处的位置如图3 1 所示: 图3 - 1w e b 应用构架 各个功能层的作用如下: 1 ) 表示层:表示层主要用于显示,控制页面的转换和请求的提交。 2 ) 业务层:主要是实现业务规则,并调用g d a i 提供的接口,实现数据的 操作。 3 ) g d a i :主要是向上提供数据持久化需要的基本接口,提供基于l d a p 目录模型的数据视图,实现持久类和数据库的映射,管理系统资源,提供灵活的 配置管理。 4 ) 工具或者辅助类:为各个功能层提供公用的工具。由于它是独立于各个 层次,所以它不受多层结构要求互相独立的原则,可以被各个层次共享使用。 第1 9 页 基于l d a p 的数据访问模式的研究 3 2 基于g d a i 的开发流程 g d a i 的出现也改变了我们的开发流程上。不用写繁琐的s q l 语句,取而 代之是g d a i 运行所需要的映射信息和配置信息。程序开发人员需要参与的活动 和g d a i 提供的功能可以从图3 2 中一目了然。 统 在业务逻辑中调用g d a i 一诬肛一、 、q 、“- 谥用 使用 、 映射目录节点到对象 获得资源 久b o 映射三二记录 解析目录节点和关系表的映解析实体组成信息 射信息 图3 2 应用开发人员和g d a i 所参与的活动图 在图3 2 中我们看到,应用开发人员需要配置g d a i 运行需要的信息。这些 信息必须以x m l 格式提供,而且必须严格遵循g d a i 定义的x s d ( 定义x m l 文 件格式) 。在这里我们并不涉及数据库的定义,所有数据库的设计工作并不受到 新的开发流程的影响。需要定义的信息分为三类,它们是: 1 ) 实体对象的组成信息 第2 0 页 吝 基于l d a p 的数据访问模式的研究 所有的信息都是存储在数据表中。我们可以认为一条数据库记录是一个实 体,它有多个属性组成。实体中的每一种属性是关系表的一个字段。有些属性对 于这个实体是必需的,有些属性对于这个实体是可选的,这个就如同数据库记录 的非空字段和可选字段。 2 ) 目录节点到关系表的映射信息 关系表其实是同一类信息的集合,它表示了具有相同属性的一类信息的存贮 位置。在l d a p 的目录模型中,同一类信息被存储到一个节点下面,成为这个 节点的子节点,而且每一条子节点都有一个自己的名字,称为d n ( d l s t i n g u l s h n a m e ,识别名) 。只要我们知道一个确切的识别名,我们就可以定位到这个节点, 即找到这条记录。 3 ) 资源信息 既然g d a i 已经将业务逻辑和数据库隔离了,那么所有的有关数据库的连 接,事务的使用等操作将由g d a i 代理。我们所要做的就是提供这些信息,使得 g d a i 通过这些信息能够顺利地与数据库对话。另外,所有的有关g d a i 性能的 配置信息也包括在内。比如为了提高性能而使用的缓存策略等。 当应用开发人员提供了这些信息后,g d a i 将运行在业务逻辑层和数据源之 间。那它们之间是怎么发生联系的呢? g d a i 提供了一些通用的接口,通过显式 的调用这些接口,g d a i 数据就能实现持久化数据的功能了。 在图3 - 2 中可以看到,除了应用开发人员所参与的活动外,其他的活动都是 g d a i 完成的。这些活动主要分为解析配置信息和持久化数据。 1 ) 解析配置信息是g d a i 启动时完成的。应用开发人员提供了实体的组成 信息,目录节点和关系表的映射信息和资源信息。g d a i 在初始化的时候,首先 读取这些信息,然后在内存中画出相应的目录树,定义每个节点可以存储的信息 结构以及每个节点所对应的关系表。这个目录树就是我们操作的数据模型,它是 建立在关系结构的上层视图,直观地反映了实体间的组织结构。所有的初始化工 作完成后,将生成个数据库客户端,它是一个全局对象,并且通过这个全局对 象可以获得初始化后所有配置信息的引用。 2 ) 持久化数据是g d a i 的最重要的功能。当应用开发人员在他们的业务逻 辑中显示地调用g d a i 提供的接口,直到事务提交或是同步缓存到数据库,所有 本次在内存中进行的修改都将同步到数据库中。应用开发人员需要定义事务的边 界,使得g d a i 能够确定哪些实体需要同步。g d a i 会遍历本次操作的实体,并 根据初始化得到的配置信息来生成动态的s q l 语句,并通过数据库连接提交给 数据库。这些过程相对于业务逻辑都是透明的,业务逻辑只需要关心操作的节点 和设计的实体信息。 第2 1 页 基于l d a p 的数据访问模式的研究 3 3g d a i 的构架 3 3 1 总体构架 g d a i 将功能模块化提供了以下的主要模块。: 1 ) 完成基本的g r u d ( 创建,读取,更新,删除) 的模块,并且包括了会 话,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论