基于模式的XML数据存储技术研究
李晓臣,谢益武,曹志英
大连海事大学计算机科学与技术学院,辽宁大连(116026)
E-mail:xiaochen801210@163
摘要:本文介绍了从XML Schema 到关系模式的映射,映射过程中主要考虑减少数据冗余,保持XML数据的层次性、顺序性等特点。详细阐述了XML数据在已得关系模式中的存储方法。实验表明,对于通用XML文档具有较好的效果。
关键词:关系数据库,存储,映射,模式
1.引言
XML己经成为Web上数据表示、集成和交换的标准[1]。随着Web服务和面向服务结构的出现,企业与企业之间、企业内部之间的信息交换通常都借助于XML。如何有效地管理和存储XML数据变得越来越重要[2]。为此,研究者们已经提出了各种处理XML数据的方法,如采用关系数据库、纯XML数据库、面向对象数据库和半结构数据仓库等来管理XML数据。目前,前两种管理方法的研究最受关注。用纯XML数据
库存储和查询XML数据,所采取的方法主要是给XML数据建立索引,这样往往会引起两个问题:(1)大多数纯XML数据库通过索引进行规则表达式的查询,建立这些索引需要大量额外的空间,如何减少索引和提高查询效率引起的代价是一个有待解决的问题。(2)几乎没有一个纯XML数据库很好的为XML 数据建立键,而键是关系数据库最基本的技术之一[3]。采用关系数据库存储和管理XML数据给不同的用户带来很多好处:关系数据库是当今的主流数据库,将XML数据转换为关系数据,不仅使XML在数据应用方面的易表义,跨平台的特点得到保留,而且可以充分利用关系数据库成熟的数据管理服务(有效的存储、高效的查询、并发控制、数据恢复等),弥补XML 技术检索、修改、安全性及并发操作机制存在的明显缺点,达到有效管理和保护XML数据的目的。然而由于XML数据复杂的层次结构和关系数据库扁平的表结构之间不匹配,使得在存储过程中出现很多复杂问题。如何完整、有效地查询存储在关系数据库中的XML数据的问题尚未得到很好的解决[1]。论文从分析XML Schema中的各种组件入手,挖掘XML Schema中包含的语义约束信息,从模式转换角度,基于关系数据库技术,得到保持实体完整性、参照完整性、取值约束和减少数据冗余的从XML Schema 到关系模式的映射方法,然后建立原型系统,验证映射方法的有效性。
2.XML数据的存储技术与改进方法
目前,对XML数据管理技术的研究包括XML数据的存储、索引、恢复、查询优化等。XML数据管理系统大致分为三类:Native(原生)方式、Enabled(支持)方式和Mixed(混合)方式。XML文档在关系数据库中
的存储及其与关系数据库进行数据交换的核心是XML和关系数据库间的数据映射技术,这些映射方法根据是否使用XML模式可分为三类,无模式映射(Non-Schema Mapping)、基于模式映射(Schema-Based Mapping)和基于查询的映射(Query-Based Mapping)[5]。基于模式的XML数据关系化存储,主要是在不丢失信息的情况下把XML数据存储到关系数据库中,同时扩展关系数据库技术,能够高效的存储和查询[4]。本文中提出的基于 XML Schema 的XML数据关系化存储方法,首先将XML Schema 转换为一个语义图,图中的结点表示XML Schema文档中的元素或者属性,边表示结点之间的关系。然后根据结点之间的关系,尽可能多的把一个结点的孩子结点内联到该结点,这样
就会大大减少映射所得到的关系表的数量映射到关系模式。最后以修改之后的XML Schema 图为基础实现XML Schema 到关系模式的转换。在转换过程中,主要考虑两个方面,一个方面是充分利用图中结点的信息,实现一个结点到一个关系的转换,另一个方面是要考虑的XML数据的顺序性和层次性。下文将详细介绍以有效的XML文档和已得的关系模式作为输入,将XML文档解析,根据XML Schema语义图把数据存储到关系数据库中。
3.XML数据在关系数据库中的存储
3.1 建立XML文档树
首先利用JDOM技术将XML文档解析,以文档中元素和属性作为文档树的结点,以元素或属性间的关
系作为边来创建XML文档树;然后按先序遍历给XML文档树中的元素和属性进行编号。建立XML文档树的具体算法如下:
输入:XML文档
输出:XML文档树
00.Procedure CreatXMLTree(D)
01.begin
02.  用JDOM解析器将D解析得到document
03. 建立XML树的结点
RootElement())
04. 建立XML树的边RootElement())
00.Procedure InsertVertexs(Element)
01.begin
02.  创建新结点xmlvnode
03.  保存元素信息xmlvnode.信息=element.信息
04  if(树中不存在此结点)  将xmlvnode插入图中end if
05.  取出元素xmlvnode的所有对象,保存到content中
06.  for(o=content中的每个对象)
07.    if(o是Element)  InsertVertexs(o)  end if
08.  end for
09.  attributesList=Element.Attributes
10.  for(child=attributesList中的每个属性)
11.    if(树中不存在结点child)  InsertVertexs(child)  end if
12.  end for
00.CreatArcnodes(Element)
01.begin
02.  求出Element对应树中的结点node
03.  取出元素xmlvnode的所有对象,保存到content中
04.  for(o=content中的每个对象)
05.    ();
xml技术的主要应用06.    if(o是元素或者属性)
07.      Element child=(Element)o;
08.      创建子结点ChildNode
09.      ChildNode= o
10.      建立node和ChildNode之间的边
11.    end if
12.  end for
3.2 XML数据的存储
XML文档树建立后,可以把XML数据存储到相应的关系模式中。对于XML文档中的每个元素,它在XML Schema中都有相应的类型与之对应,可以根据元素的类型,在关系模式中寻与它对应的表,然后把数据插入到该表中。
遍历XML树中的每个元素结点X,求出它在XML Schema图中对应的结点S,如果S是不可内联的结点,说明X可能包含其它的元素或者属性,这些元素或属性需要保存到S对应的表中;如果S是可内联的,X包含的信息保存在父结点所对应的表中;如果S是不可内联的结点,并且X的子结点在XML Schema图中对应的结点也不可内联,需要保存相应的约束信息。由于XML文档的多样性,有些结点
虽然在模式中有类型描述,但是在XML文档中可能没有对应的结点值,本文将这些关系表对应的字段值置为NULL。
数据的存储是用标准的SQL语句实现的,这些语句是在遍历XML树过程中形成的。具体算法如下:
输入:XML文档树,关系模式,XML Schema语义图
处理:将XML文档存储到关系模式中
00.Procedure XMLDataSave(XMLTree T,DataBaseSchema R,Graph G)
01.begin
02.  for(T中的每个结点v) visited[v] = false end for
03.  for(T中的每个结点v)
04.    if(!visited[v])  BsfXMLDataSave (v) End if
05.  end for
00.Procedure BsfXMLDataSave(v)
01.begin
02.  e=getElement(T,v)
03.  s=getSchemaNode(G,e)
04.  if(s是不可内联结点)
05. creat a tuple tp of R.table s.name
06.    tp.ID=e.index
07.    tp.dID
08.    if(e不是根结点)
tp.parentID=e.parent.index  end if
09.    if(e是共享结点)  tp.parentType=e.parent.name  end if
10.  else if(s是可内联结点)
11.    creat a updatesql
12.    updatesql+=e.parent.name
13.    updatesql+=s.name+”_ID=”+v
14.    updatesql+=s.name+”_endID=”+ maxID(v)
15.  end if
16.  For (child=v 的所有子结点)
17.    tp.child.name=child.name
18.  end for
19.  For(child=v 的所有子结点)
20.    Schild=getSchemaNode(G,child)
21.    If(Schild 是不可内联结点)
22.      creat a tuple Rtp of R.table s.name_Schild.name
23.      Rtp.(s.name+”ID”)=e.index
24.      Rtp.(Schild.name+”ID”)=child.index
25.      insert tuple Rtp into R.table s.name_Schild.name
26.    else
27.      tp.(child.name+”ID”)=child.index
28.      tp.(child.name+”endID”)=dID
29.    End if
30.  End for
31.  insert tuple tp into table R.table s.name
32.  update R.table s.name with updatesql
33.  For (w=v 的所有子结点)
34.    If(!visited[w])  BsfXMLDataSave (w)  End if
35.  End for
4.实验
为了进一步验证本文所提出的方法的有效性,我们使用一些XML 文档作为测试数据进行了测试,存储结果如表1所示:
表1 XML 文档存储结果
Tab.1 The result of the storage of XML document
5.结论
论文主要讨论在关系数据库中存储XML 数据的方法。主要工作表现在:对基于模式的XML 数据存储理论进行深入研究,尤其是对XML Schema 的研究;研究XML 数据的存储方法;研究XML 数据层次性、顺序性等特点,存储过程中保持这些特点,实现XML 数据
的有效存储;最后通过对一些数据的测试验证了理论的可行性与有效性。 File Size(k ) Element num Table num Record num Run time Pruduct 360 11017    5 2449 15.641 Country 989 30241 7 6721 77.078 Nasa 1512 46261 8 10281 179.516Mondial 2,142 65521 10 14561 375.953
参考文献
[1]ZHOU Ao-Ying,XU Zheng-Chuan,GUO Zhi-Mao,et al.Adaptation of XML Storage Schema in VXMLR
[J].Chinese Journal Of Computers,2004,Vol.27 No.4: 433-441.
[2]Kevin S. Beyer,Roberta Cochrane,Vanja Josifovski,et al.System RX:One Part Relational,One Part XML
[C].SIGMOD 2005.347-358.
[3]Guangming Xing,Jinhua Guo,Ronghua Wang.Managing XML Documents Using
RDBMS.SNPD/SAWN,2005.186-191.
[4]William M. Shui,Franky Lam,Damien K. Fisher,et al.Querying and Maintaining Ordered XML Data using
Relational Databases[J].Conferences in Research and Practice in Information Technology,2005,Vol.39.
[5]Mustafa Atay,Artem Chebotko,Dapeng Liu,et al.Efficient schema-based XML-to-Relational data mapping
[J].2006,Information Systems.
[6]J.Shanmugasundaram,K.Tufte,C.Zhang,G.He, et al.
[7]Relational dtabases for querying XML documents:limitations and opportunities[C].VLDB,1999.302–314.
[8]I.Tatarinov,S.Viglas,K.S.Beyer, et.al.Storing and querying ordered XML using a relational database system
[C].2002,SIGMOD.204–215.
[9]www.cs.washington.edu/research/xmldatasets
[10]w ww.altova
Research on XML Data Storage Based on Schema
Li xiaochen,Xie Yiwu, Cao Zhiying
Department of Computer Science and Technology Dalian Maritime University,LiaoNing,Dalian
(116026)
Abstract
In this paper we introduce the mapping form XML Schema to related pattern.We mostly consider to reduce the data redundancy, Then fully consider the gradation and sequence, make the further research
on storage method of XML data from the related pattern.At last, based on the above theory, we try to
set up a prototype system. Experiment shows that it gets the good result for generalized XML file. Keywords: RDBMS,storage,mapping,Schema

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。