吴洁明,万 励,莫智懿,陆科达
WU Jie-ming,WAN Li,MU Zhi-yi,LU Ke-da
(梧州学院 计算机科学系,梧州 543002)
在信息技术与网络技术高速发展的今天,网络已经成为新一代操作平台。信息正全面地以互联网方式展开,互联网的信息传播,极大地加速了人类发展的进程。随着WEB技术的日益发展,WEB已经成为信息制造、发布、加工和处理的主要平台。XML技术已日益受到更为广泛的关注,已经在电子商务、电子数据交换、科学数据表示、数据建模与分析和搜索引擎等领域有着广泛的应用。随着XML应用技术的深入,将会有大量的XML文档出现,并且现在在网络上已经积累了大量的XML文档[1,2]。将XML数据转化为关系数据,存储在关系数据库系统中,利用己经成熟的关系数据库理论和技术,来实现对XML数据的存取和访问,并尽量减少XML数据查询时的中间操作,以减少响应时间,提高查询效率,是XML文档当前最有效的存储和查询方式[3,4]。本文主要就基于关系数据库的XML存储技术相关问题进行探讨。
XML文档是半结构化的数据,是一个树模型,如果考虑到XML元素次序,则是一棵有序树模型,其数据结构是非结构化的,而关系数据库管理系统是采用二维表格作为存储数据的模型,表格由行和列组成,列被称作“字段”用于表示组成数据有效信息的属性,行则用于储存一条完整的数据记录。XML数据与关系表之间数据结构有很大的差异,具体来说,XML数据是有序的,而关系数据是则无序的,另外XML数据的模式往往经常变化,可是关系数据库的数据结构是固定不变的,XML数据可以无限层次嵌套,而关系数据则不能。虽然XML放松的类型限制和自描述性有利于数据之间的交换,但是却不利于数据存储。因此,XML的数据模型的半结构化、有序性与平坦、无序的关系模型之间存在固有的不匹配。另外遵循文档类型定义(DTD)或文档模式定义(XML SCHEMA)的XML文档也与遵循关系存储模式的关系数据在语法、.结构以及约束等很多方面存在着固有的异构性,因此很难直接由XML数据产生关系模式。甚至即使多个XML文档实例都遵循同一个文档模式定义,它们也可能有不同的结构。可以看出,XML映射到关系数据库中存在固有的困难。映射时主要存在以下需要解决的问题:1)如何利用可能有的XML文档模式(或类型)信息来采取各种不同的存储策略;2)如何将XML文档无损地存入关系数据库;3)如何从关系数据库中查询并重构XML信息。
当前,在将XML数据存储在关系数据库的策略主要有两大类映射策略:即结构映射策略和模型映射策略。简单地来说,结构映射需要将XML模式(或DTD)映射为特定的关系模式,随着XML文档模式(或者为DTD)的不同,映射成的关系模式也不同。而模型映射则是将XML文档映射为固定的关系模式,与XML文档模式(或者为DTD)无关。
2.1 基于结构映射的策略
具体来说,基于结构的映射方法可以分为两个步骤来实现。
第一步:简化DTD并生成DTD图。因为XML DTD的元素是相当复杂的,需要对复杂的DTD进行简化。DTD的简化变换主要有以下三种方式。1)平面化变换:将DTD内的层次嵌套关系打平,把嵌套的定义转换为非嵌套的定义;2)简化变换:将连续的多个一元操作转换为一个一元操作;3)聚集变换:将多个具有相同名称的子元素聚在一起,形成一个子元素。一个DTD图表示的是一个DTD的结构,图的结点表示DTD中的元素、属性或操作符,DTD中的元素在DTD图中只出现一次,属性和操作符在DTD图中出现的次数则与它们在DTD中出现的次数相同。
第二步:DTD图到关系模式的映射。从DTD图到关系模式的映射方法主要有:基本内联法、共享内联法和综合内联法。
1)基本内联法。基本内联法的原则是在存储一个结点的时候,尽可能多地将这个元素的后代结点存储在一个表中。例如,形如直线而无分支的数据路径上的结点。这些后代结点作为祖先结点表中的属性域而存储。而结点之间的嵌套关系则用采用关系表之间的外键来解决。基本内联法将产生大量的关系,并且会产生大量的数据冗余,因此该方法基本上是不实用的。
2)共享内联法。共享内联法为以下三种DTD结点生成独立的关系:(1)DTD图中入度大于1或者等于0(根结点)的元素结点生成独立的关系;(2)DTD图中结点“幸”的孩子结点(将值集元素作为单独的关系保存);(3)互为递归的入度均为1的元素结点,其中之一生成独立的关系。而其余的结点都生成关系属性。共享内联法相对减少了XML查询转换为SQL语句的数目,但增加了每个SQL查询中的连接运算。
3)综合内联法
综合内联方法在处理入度大于l的结点上与共享内联方法不同,综合内联法将所有入度大于1的元素结点也内联进入父结点所生成的关系表中,但是带回路的结点以及结点“}”或“+”的直接后继结点除外,该方法减少了子结点与父结点的连接运算。综合内联法的出发点是充分吸取基本内联法和共享内联法的优点,克服其缺点。与共享内联方法相比,综合内联方法相对减少了每个SQL查询中的连接运算,但是增加了SQL语句的数目。
2.2 基于模型映射的策略
模型映射的方法是用一个固有的模式来存储XML文档。它用固定的关系模式来存放任何格式的XML数据,而不考虑XML文档的模式(DTD或SCHEMA),其实质是存储XML文档本身的结构信息。目前,基于模型的映射方法主要有Edge方法、XRel方法和XParent方法。
1)Edge方法
Edge方法圆的存储策略是把要存入的XML文档看做图形结构,每个图的边界都表示为图中的元组,把XML文档图中的所有边都存入到关系表Edge中,用表Edge(source,ordinal,target,label,flag,value)存储XML文档图中的边,其中的source字段和target字段分别用来存储边的源结点和目标结点的标识符;label域为目标结点的类型;flag用来区分目标结点;target是一个元素结点还是一个文本结点,如果该目标结点是文本结点,则文本值存储于value域中;ordinal字段指出target结点在source结点的所有孩子中的位置。由于Edge方法将所有XML数据都用Edge表存放,操作方法简单。但缺点是在Edge方法中每条边都是单独管理的,所以在用户进行查询操作时就需在大量的表上进行连接操作以形成路径。如果要判断祖先/后代关系就需要从祖先到后代(或与之相反)遍历所有的边,造成代价非常昂贵。
2)XRel方法
XRel方法为了存储XML文档的所有信息,将XML文档树分解为一个个路径表达式,对于树中每一个结点,都将从根结点到其自身的路径存储。而在树中有可能有多个结点的路径是一样的,所以单个的简单路径表达式并不能够存储整棵XML文档树的信息。XRel模式是通过区间编码[start,end]来反映XML文档的模型结构,并根据结点类型来划分,分为元素结点表、属性结点表和文本结点表,同时将所有路径进行存储。因此,XRel模式由四个关系表组成如图1所示。
图1 XRel存储模式
在Path表中,存储所有的不重复的路径,其中,PathID为标记路径的标识,pathexp域存储标记路径。为了实现路径表达式的字符串匹配操作,防止意外的结果出现,将标记路径中的“/”替换为“#/”进行存储。对于Element表、Attribute表和Text表,Attribute表和Text表中的value字段存储的分别是属性结点的值和文本结点的值。对于每一个路径表达式,查询过程都可以分为两部:第一步,利用字符串的匹配操作,能够快速的查找出与路径表达式相匹配的所有标记路径的标识;第二步,利用这些路径标识,能够快速的查找出隶属于这些路径终端的值。
XRel存储模式的特点可以总结如下:1)用简单路径表达式和结点的区间编码(start,end)存储XML文档的所有信息。2)分别为每一种结点类型创建一个对应的关系表。3)用一个Path表把文档中所有不重复的路径都提取出来,有效地降低了数据库的存储容量。
3)XParent方法
XParent模式和XRel模式一样,将文本数据路径独立出来,共包含四个关系表,如图2所示。
图2 XParent存储模式
其中,表LabelPath中的pathexp字段用来存储所有不重复的标签路径,即模式路径。每一个标签路径被赋予一个标识符pathID,length为标记路径的长度。Parent表存储的是双亲/孩子关系,pid和cid分别表示一个边的起始结点与结尾结点。did为XML文档中元素结点的标识,它也可以作为以该结点为终端点的数据路径的标识。
Parem表存储的是双亲/孩子关系,因此,为了检查数据路径需要进行连接操作。为了提高这种处理的效率,可以改用Ancestor表来存储祖先/后裔关系。Ancestor(did,ancestor,level),利用Ancestor表能够快速的检测结点之间的祖先/后裔关系,但是它比Parent表需要更多的空间,而且由于存在冗余信息,修改代价也更高。XParent模式分别通过LabelPath表和Parent表来支持标记路径和数据路径。因此,XParent模式既具有基于结点的模型映射的特点,又具有基于边的模型映射的特点。
主要讨论了基于关系数据库的XML存储方式的两大类映射方法:模型映射和结构映射。并且分别对三种具体的映射方法:基于边的映射方法、基于结点的映射方法和基于结构的映射方法进行了探讨,并说明了各自的原理与优缺点,对于今后XML数据库设计具有一定帮助。
[1]周勇,韩洁,史忠植.XML数据库与关系数据库协作研究[J].计算机工程与应用,2002,38(13).
[2]曹亮,王茜,卢菁.XML数据在关系数据库中存储和检索的研究和实现[J].东南大学学报(自然科学版),2002,32(1).
[3]路燕,郝忠孝,张亮.基于编码的XML关系数据库存储[J].计算机研究与发展,2005,42(11).
[4]许卓明,刘琴,董逸生.基于关系数据库的XML存储技术评述[J].计算机工程与应用,2003,39(21).