




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2 5 卷第1 1 期 计算机工程与设计 2 0 0 4 年1 1 月 V 0 1 2 5N o1lC O M P U T E RE N G I N E E R I N GA N DD E S I G NN o v 2 0 0 4 文章编号:1 0 0 0 7 0 2 4 ( 2 0 0 4 ) 1 1 - 2 0 3 9 0 5中图分类号:T P 3 1 11 3 1文献标识码:A X M L 的关系化存储及与关系数据库的数据转换 刘源,姚淑珍 ( 北京航空航天大学计算机科学与工程系,北京1 0 0 0 8 3 ) 摘要:随着不断增长的基于X M L 应用的出现,如何在数据库中可靠、有效地存储X M L 文档以及X M L 和数据库间 的数据转换技术变得越来越重要。讨论了基于模式驱动的X M L 与关系数据库的数据映射,给出了其基本原理和实例, 并且分析了采用该技术实现的一个与数据库平台无关的、支持多模式和多种转换方式的应用系统,给出了该系统的设 计和实现方案。其原型的测试结果表明,该系统的原理和设计是可行的和有效的。 关键词:X M L ;关系数据库:数据存储;数据转换 R e l a t i o n a ls t o r a g eo fX M La n dd a t ae x c h a n g eb e t w e e nX M La n dR D B M S L I UY u a n Y A OS h u z h e n ( D e p a r t m e n to f C o m p u t e rS c i e n c ea n dE n g i n e e r i n g ,B U A A ,B e i j i n g1 0 0 0 8 3 ,C h i n a ) A b s t r a c t :A s8 ni n c r e a s i n ga m o u n to f X M L - - b a s e da p p l i c a t i o n sa p p e a r st o d a y , r e l i a b l ea n de f f i c i e n tX M Ls t o r a g es y s t e ma n dd a t ae x c h a n g eb e t w e e nX M La n dD B M Sa t eb e c o m i n gm o r ea n dm o r gi m p o r t a n t T h em e t h o do fs c h e m a d r i v e nm a p p i n gb e t w e e nX M La n d R D B M Si sd i s c u s s e da n di t sb a s i cp r i n c i p l e sa n de x a m p l e sa r eg i v e nT h ed e s i g na n di m p l e m e n t a t i o no f as c h e m a - d r i v e nd a t ae x c h a n g e s y s t e ma r ea n a l y z e da n di m p l e m e n t e dt h a ti sp l a t f o r m i n d e p e n d e n ta n ds u p p o r t sm u l t i p l es c h e m a se n dm o d e so f c o n v e r s i o n T h et e s tr e s u i to f t h ep r o t o t y p eo f t h es y s t e ms h o w st h a tt h et h e o r ya n dd e s i g no f t h i ss y s t e mi sf e a s i b l ea n de f f e c t i v e K e yw o r d s :X M L ;R D B M S ;d a t as t o r a g e ;d a t ae x c h a n g e 1 引言 X M L 文件的存储和转换技术一直是基于X M L 应用的 重要组成部分,也是X M L 技术研究的热点之一。由于文件 系统存在效率、可靠性、安全性等方面的缺陷,利用数据库 存储和检索X M L 数据是现在大多数企业级应用所采用的 方法。 当前已经出现了原生x M L 数据库( N a t i v eX M LD a t a - b a s e ) ,即按照X M L 本身结构进行存储的数据库,如T a m i n o 和I p e d o 等,其存储模式和X M L 结构最为匹配。但由于其 不够成熟,目前大部分应用系统还是采用关系数据库+ X M L 支持的存储方式,这样可以充分利用已有的存储在关 系数据库中的大量数据和关系数据库的索引、事务以及查 询、更新优化等特点。 当前主流关系型数据库如O r a c l e 9 i 、M i c r o s o f tS Q LS e r - v e r 和I B MD B 2 。1 及一凿中间件,如X M L D B M S ”1 等提供了 不少X M L 存储和数据转换的解决方案,但都存在一些不足 之处,如对输入的X M L 文档的限制较严;转换过程复杂繁 琐,用户工作量大;只能基于特定的数据库平台,等等。针 对这些情况,我们提出了一个X M L 和关系数据库的数据存 储和转换系统,其能够解决前面所说的一些问题。该方案 的特点包括:具有跨平台特性,可以运行在多数操作系统 和关系型数据库上;支持X M L 和关系数据库问的双向数 据交换。对于X M L 到数据库的转换,输入X M L 文档,系统 采用自定义模式或自动模式将结构化数据以关系表的形式 存储,非结构化数据以C L O B ( 大型字符对象) 或B L O B ( 大型 二进制对象) 的形式存储。输入的X M L 文档应该是通用的, 不针对某种具体应用;对于数据库到X M L 的转换,通过用 户指定的方式,系统从数据库中提取相应的数据自动生成 X M L 文档;对自动映射生成的数据库表提供优化;通过提 供可视化辅助工具以减少用户的工作量。 2X M L 和关系数据库的数据映射 将X M L 文档转入关系数据库存储以及根据查询从关系 数据库中提取数据还原成X M L 文档的核心是X M L 与关系 数据库之间的数据映射技术。目前存在多种映射方法,根 据是否使用X M L 模式可分为两类:无模式映射( N o n S c h e m a M a p p i n g ) 和模式驱动映射( S c h e m a D r i v e nM a p p i n g ) 。 X M L 模式定义了X M L 文档的词汇表、逻辑结构和允许 值,利用模式可以对X M L 实例文件的有效性进行验证。模 式驱动映射是以X M L 模式为基础的映射,包括D T D ( 文档 类型定义) 和X M L S c h e m a “1 两种方式,其广泛适用于电子商 收稿日期:2 0 0 3 1 2 0 8 。 作者简介:刘源( 1 9 7 8 一) ,男,江苏扬州人,硕士研究生,研究方向为软件工程与数据库技术:姚淑珍,女,教授 2 0 3 9 万方数据 务、数据交换和系统集成等领域的面向数据处理的X M L 文 档,如产品订单、发票、时刻表等。相比无模式映射,模式驱 动映射的过程中不易丢失结构信息,能较好地保证数据的 正确性和完整性。但因为模式映射要对模式进行解析,其 转换过程也要比无模式映射复杂很多。由于模式驱动映射 的优点较多,我们采用其作为系统实现的基础。 2 1 ) 口舡。模式到关系数据库的映射 X M L 与关系数据库的双向映射中,X M L 到关系数据库 的映射比较复杂,反向映射则相对简单。X M L 到关系数据 库的模式映射需要解决很多问题。 ( 1 ) 如何保持X M L 文档的结构,如文档中元素的相对 位置,这对于某些基于X M L 的应用来说可能非常重要。 ( 2 ) 如何根据模式来捕获X M L 文档中一些可变的内容, 如可选及可重复出现的元素、可选和缺省的属性等。 ( 3 ) 如何提供对混合型( m i x e d ) 文档的支持,这是映射中 比较难于处理的部分。 我们采用对象一关系映射( O b j e c t - R e l a t i o n a lM a p p i n g ) 来处理X M L 到关系数据库的转换:先将X M L 模式转化成 对象模型,然后再将对象模型转化为关系模型。下面讨论 基于对象一关系的X M L 到关系数据库的基本映射原理,为 了描述简单,X M L 模式采用D T D 进行定义。 ( 4 ) 设有如下的D T D 在X M L 到对象的映射中可把复杂元素A 映射为类A , 简单元素B 、C 映射为类A 的成员变量;在由对象到关系的 映射中,类A 可以映射成表A ,成员变量B 、C 可以映射为表 中的列B 、C 。因此可创建关系R A ( p k ,c ) ,其中p kA为_A B 自动生成的k 的主键。 ( 5 ) 设有如下的D T D 这里采用外键来捕获元素A 和c 及A 和B 之间的父 子关系,因此可创建关系凡( p kA ,D ) ,( p kB ,f kA B ,B ) 及R c ( p kC ,f kA C ,E ) ,其中f kA B 和f kA C 分别是如和R c 关于R 的外键。需注意的是,p kB 不是B 的主键而是部分 键,其反映了B 在A 中出现的顺序,和f l ( 一起构成的_AB B 主键。根据关系理论,A 和c 是1 :1 的关系,t kA C 可建立 在R 、任一关系中( 此处建立在R c 中) ;B 可出现多次,即 A 和B 是1 :N 的关系,f kA B 应建立在融中。若A 也可出 现多次,即A 和B 为M :N 的关系,则可创建关系R 柚( f k _ A , f kB ) ,其中mA 和丑( B 分别对应R A 和R B 的p kA 和P kB 。 ( 6 ) 设有如下的D T D 2 0 4 0 在以上D T D 中,元素A 为混合型元素,其既包含结构 化的数据B 、C ,也包含非结构化P C D A T A 类型的数据。我 们考虑采用两种方式解决:对于P C D A T A 部分内容不是很 多的情况下,可以创建关系R ( p kA ,B ,c ) 及R w o m ( p k - P C D A T A ,t i cA ,P C D A T A ) 。A 的P C D A T A 部分单独映射成 关系R M n m ,R A 通过外键f kA 与其保持1 :N 的关联。p k _ P C D A T A 为I 己P c D m 的部分键,反映其在A 中的顺序。对于 P C D A T A 部分数据量很大的情况,可考虑建立关系R ( p k - A ,B ,C ) ,R ( I D X ,C L O B ) 和R 【n x ( p kP C D A T A ,盘A , I D X ) 。其中R 嘣为索引表,I D X 为关联k a 的索引字段。A 的P C D A T A 部分存在R 一。的C L O B 字段中,通过R m x 与R 保持关联。采用这种方法的好处是可提高存储及插入和更 新操作时的效率。 ( 7 ) 对于任何最小出现次数为0 的简单元素( 对应于D T D 中的? 、+ 和l 的情况) ,其映射成的列可为空值,对于任何最 小出现次数为1 的简单元素( 对应于D T D 中的缺省情况 和+ ) ,其映射成的列非空。 ( 8 ) 设有如下的D T D 根据以上D T D 可创建关系R ( p k _ A ,B ,c ) 。如果属性 类型为I D ,则可映射为R 的主键;如果类型为I D R E F ,可映 射为对应元素所创建关系的外键。如果属性的缺省设置为 R E Q U I R E D 、F I X E D 或有缺省值,其所映射列应非空,如果是 I M P L I E D ,则可以为空。 在上述基本原理中,X M L 文档中的基本结构都可以由 关系模式中的主键、外键、顺序关系所表示,有些文章称这 种方法为K F O ( K e y ,F o r e i g nk e y ,O r d i n a l ) 技术。除了这些 基本的映射外,还有一些X M L 文档中特殊的实体和结构, 如N O T A T I O N 和E N T I T Y E N T I T I E S 属性、复杂的嵌套结构 等,其映射也都可以根据K F O 技术类似处理。下面以一个 中等复杂度的X M LS c h e m a 为例说明整个完整的模式映射 处理过程。 吲x s d :c h o i c e 万方数据 所映射的对象模型如下: c l a s s A c l a s sF c l a s s H S t r i n ga ,S t r i n gG ? ,S t r i n gP C D A T A , D a t e b H S t r i g n I + T i m e B , ) S t r i n gC , D a t e D , F l o a t E , F + 所映射生成的关系表描述如下: T A B L E A ( aC H A RP R I M A R YK E Y , b D A T E , B T I M E N O T N U L L C C H A R D D A r E E F L O A T ) 瑚L E F ( p k _ FC H A RP R I M A R YK E Y - f k _ AC H A R F O R E I G NK E Y G C H A R ) T A B L E H ( p kH C H A RP R I M A R YI C E Y n ( F C H A R F O R E I G N K E Y ) T A B L E HP C D A T A ( p k _ H _ P C D A T A C H A R ,和f k _ H 一起作为主键 f kHC H A RF O R E I G NK E Y , HP C D A I AC H A R ) T A B L E I ( p k1 C H A R 。和n cH 一起作为主键 血一HC H A R F O R E I G NK E Y , IC H A R N O T N U L L ) 需要说明的是,S c h e m a 映射和D T D 映射在很多情况下 是相同的,但某些方面也有差异。由于D T D 出现的较早,不 少方面存在缺陷,X M LS c h e m a 相比D T D 增加了很多内容, 如数据类型、组和属性组等,这些在映射时都必须考虑。 上面的映射原理和示例都是讨论的关系模式不存在, 需要自动建立的情况。如果关系模式已经存在,则可采用 自定义的方式建立X M L 模式和关系模式之间的关联。自 定义映射虽然比较简单,但由于已存在的关系模式和X M L 模式的差距可能比较大,因此相比自动映射对输入X M L 模 式的限制更加严格一些。 2 2 映射信息的描述和存储 无论是自动映射还是用户自定义映射,都必须有一种 方法记录X M L 元素、属性等与所映射形成表及字段的关系。 我们采用一种类似X M LS c h e m a 的映射文件描述X M L 和数 据库的这种映射关系,并作为元数据( m e t a d a t a ) 在映射中使 用。该方法的优点是其符合X M L 规范,可采用X M L 解析 器方便地进行解析和修改,且自动和自定义映射可以统一 处理:对于自动映射,系统分析X M L 模式并自动生成映射 文件;对于自定义映射,用户手工编写映射文件指定映射关 系。若用户对于自动生成的映射不满意,也可通过修改映 射文件改变映射关系。系统通过解析映射文件将数据导入 新建或已存在的关系表中。 下面列出简化了的映射文件的D T D 文档。注意其中混 合型元素的P C D A T A 部分采用t e x t 进行标识。为了兼容D T D 没有类型说明的问题,映射文件中增加了映射数据类型( d a t a t y p e ) 属性。系统预定义了基本的映射数据类型,如S t r i n g 、 I n t e g e r 、D a t e 等,用户也可根据这些基本类型派生自己的新 类型。由于缺少数据类型说明,D T D 自动映射时生成的d a t a t y p e 都为S t r i n g ,用户可以手工修改以支持不同数据类型: X M LS c h e m a 映射时d a t a t y p e 和X M LS c h e m a 类型间的对应 关系由系统处理。 万方数据 2 3 关系数据库到X M L 的映射 关系数据库到X M L 的转换较为简单,也可用与上面类 似的一个映射文件来描述其映射关系,不同的是和元素、属 性等关联的不是关系表而是行集( R o w S e t ) 。行集可以通过 在映射文件中嵌入或运行时提供的S Q L 查询语句进行定 义。系统解析该映射文件并根据模式信息从数据库中提取 数据反向构造X M L 文档。下面是关系数据库到X M L 的映 射文件的D T D 描述: 其它和X M L 到R D B M S 映射文件类似。 3X M L 和关系数据库的数据存储和转换系统 基于上述原理,我们构建了一个X M L 和关系数据库的 数据存储和转换系统,称为X M L 2 D B M S ( 总体结构如图1 所 示) 。该系统采用J 2 S E l 4 开发,用户界面采用S w i n g 、X M L 解析器采用A p a c h e 的X e r c e s ,其具有前面提出方案的所有 特点。 图1X M L 2 D B M S 的总体结构图 X M L 2 D B M S 采用面向对象技术设计实现,具有较好的 可重用性和可扩展性。系统定义了一组核心类和包。 D T D 和S c h e m a 解析器相关类,位于c o m x m l 2 d b m s s c h e m a d t d 和c o m x m l 2 d b m s s c h e m a x s c h e m a 包中。X M L 2 D B M S 按W 3 C 标准对D T D 和S c h e m a 进行了封装。如X M L 2 0 4 2 S c h e m a 的主要类包括X S c h e m a E l e m e n t ( 元素) 、X S c h e m a A t t r i b u t e ( 属性) 、X S c h e m a S e q u e n c e ( J l 质序结构) 、X S c h e m a C h o i c c ( 选择结构) 、X S c h e m a G r o u p ( 组) 、X S c h e m a T y p e ( 类型) 、 X S c h e m a O c c ( 出现次数) 、X S c h e m a l n f o ( 模式信息) 和 X S c h e m a P a r s e r ( 解析器) 等。D T D 的相关类与之类似。 映射管理器类( 包括A u t o M a p M a n a g e r 和U s e r D e f M a p M a n a g e r ) ,映射信息相关类( M a p l n f o P a r s e r 和M a p l n f o ) ,映 射工厂类( M a p F a c t o r y ) 等,位于c o r n x m l 2 d b m sx m l 2 d b m a p 包 中。 数据库相关类,如关系模式的封装类( T a b l e ,C o l u m n , K e y ,R o w 等) 、键值生成器类( K e y G e n e r a t o r ) 、数据库连接类 ( C o m a e c t i o n F a c t o r y ) 、S Q L 脚本生成器类( S Q L F o r m a t t e r 和 S Q L G a n e r a t o r ) 等,位于c o r n x m l 2 d b m s d a t a b 孙e 包中。 其它重要的类,包括图形界面组件( c o m x m l 2 d b m s g u i 包) 、X M L 实用工具类( c o r nx m 2 d b m s x m l u t i l s 包) 和转换 工具类( c o i n x m l 2 曲m sc o n v e r t i O I l S 包) 等。 我们以比较有代表性的X M L 文档到关系数据库的映 射为例说明X M L 2 D B M S 的工作流程( 如图2 所示) 。 系统将输入的D T D 或S c h e m a 文档用D T D P a r s e r 或 X S c h e m a P a r s e r 进行解析,在内存中构造树型结构的模式信 息。 系统用X M L 解析器对输入的X M L 实例文件进行验 证并将其解析成D O M ( 文档对象模型) 树的形式。 如果是自动映射,系统对模式信息进行遍历和分析, 并生成相应的映射文件和关系表:如果是自定义映射,相应 的映射文件由用户手工编辑并验证,系统解析后通过J D B C 从数据库中提取相关的表信息。 系统解析映射文件,生成映射信息,然后根据映射信 息和模式信息遍历D O M 树进行数据转换,并将产生的数据 缓存。 系统根据用户要求可通过缓存的数据生成符合 S Q L 9 2 标准的脚本输出,或通过J D B C 直接将数据转入关系 数据库中。 X M L 2 D B M S 克服了以往解决方案的一些缺点,能够同 时支持D T D 和S c h e m a ,并基本做到了不依赖于具体数据库 提供的解决方案,使关系数据库作为数据存储平台对用户 透明。应用程序可以调用X M L 2 D B M S 提供的A P I 函数,不 用自己负责处理繁琐的转换工作;如果用户只是单纯地进 行数据交换,也可不编写程序而是采用X M L 2 D B M S 的可视 化辅助工具X M L M a p S i m u l a t o r ,其提供了对各种相关文件的 辅助编写、映射合法性检查及映射过程优化。采用 X M L 2 D B M SA P I 的X M LS c h e m a 自动映射如下: t r y X S c h e m a P a r s e rp a 、d e “ = n e wX S c h e m a P a r s e r ( x m l S c h e m a U R L ) ;创建s c h e m a 解析器 X s c h e m a A u t o M a p M a n a g e rm a n a g e r2n e wX S c h e m a A u t o M a p M a n a g e r ( p a r s e r ) ;创建S c h e m a 自动映射管理器 m a n a g e r c r e a t e M a p l n f 0 0 ;解析映射文件 m a n a g e r s e h e m a A u t o M a p 0 ;自动映射 万方数据 图2X M L 2 D I M S 映射U M L 活动图 X S c h e m a M a px s c h e m a M a p2M a p F a c t o r y c r e a t e X S c h e m a M a p ( x m l U R L ) ;自, J 建S c h e m a 映射 x s c h e m a M a ps e t M a p M a n a g e r ( m a n a g e r ) : x s c h e m a M a p m a p 0 ;实例映射 c a t c h ( X M L 2 D B E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 球场租赁协议书范本
- 授权合作销售协议书
- 智慧乡村开发协议书
- 特价商品协议书模板
- 戒酒协议书手写模板
- 消防管道合并协议书
- 集训学校安全协议书
- 食堂承包协议书封面
- 师徒结对协议书课题
- 诊所护士就业协议书
- 温州市十校联合体2022-2023学年高二下学期期中联考化学试题含答案
- 企业员工爱岗敬业培训课件
- 数字美的智慧工业白皮书-2023.09
- 行政管理学教案
- 南京郑和外国语学校小升初数学期末试卷测试卷(含答案解析)
- 古扎拉蒂《计量经济学基础》(第5版)笔记和课后习题详解
- 2023年-2024年电子物证专业考试复习题库(含答案)
- 小学语文跨学科学习任务群学习任务设计策略
- 新人教版七年级下册语文现代文阅读理解及答案
- Matlab在信息光学中的应用课件
- 人教版小学语文1-6年级古诗词目录-按年级
评论
0/150
提交评论