一种xml文档到数据库的映射方法

文档序号:6334846阅读:813来源:国知局
专利名称:一种xml文档到数据库的映射方法
技术领域
本发明涉及一种XML文档映射方法,尤其涉及一种XML文档到数据库的映射方法, 属于计算机数据处理技术领域。
背景技术
XML (extensible Markup Language,可扩展标记语言)具有平台无关性、自描述性、可扩展性、简单易于处理等优点,其相关技术的成熟使之成为hternet数据表示和交换的标准。XML在Web服务、电子商务和数据集成等诸多领域具有广泛应用。基于关系数据库技术的的存储应用十分普遍,但XML数据存储与关系数据库存储的数据转换是当前没有解决的核心技术问题。目前,基于关系的XML存储研究受到国内外研究者的重视,发表了一些重要的研究成果,但是总的来说根据存储时是否使用XML模式(DTD或XML khema)可以分为以下两类结构映射方法和模型映射方法。结构映射方法是在进行关系数据库的XML存储时,先根据XML模式(或挖掘出XML 文档中固有的模式信息)生成相应的关系模式,然后再根据生成的关系模式对XML文档进行解析分解并将其存放于相应的数据表中。结构映射方法中比较有影响的主要有STORED方法、DTD方法、CPI方法和p_schema方法。模型映射方法是将任何XML数据都存放在有固定关系模式的数据库中,而不考虑 XML文档的模式,其本质就是存储XML文档的结构信息。按XML数据的存储方式不同,模型映射方法主要有基于边的方法和基于节点的方法两种。其中,基于边的方法中比较有影响的主要有Edge方法和Xparent方法;基于节点的方法中比较有影响的主要有)(Rel方法。 与结构映射方法相比,模型映射方法具有以下三个优点⑴支持任何静态(XML模式不变) 或动态(XML模式不断变化)的XML数据存储;⑵支持任何格式良好的而没有XML模式的 XML数据存储;⑶不需要对数据库模型进行任何扩展就可以支持XML的存储。以上关于XML存储的研究所提出的方法多种多样,但都不同程度的存在着一些问题。第一种结构映射方法对XML文档的格式要求过于严格,耗费大量的数据空间,没有考虑数据库存储及查询方面的性能等因素;而第二种模型映射方法中插入节点后需要重新标识,动态更新非常困难,提取父-子和祖先-后代节点关系也很很麻烦。此外,模型映射方法中的基于边的方法不能有效地处理正则路径表达式查询和XML结构查询,在查询过程中需要对表进行大量连接操作,因而效率特别低;基于节点的方法,例如)(Rel模型,则占用了大量的存储空间。申请号为PCT/US2002/030783的国际专利申请公开了一种将XML模式映射到对象关系数据库系统的方法,该方法首先将XML模式注册到数据库系统中,然后将注册的XML模式映射为数据库系统所支持的模式,最后将符合所述XML模式的XML文档存储到数据库系统中。此外,申请号为200410073869. 5的中国专利也申请公开了一种基于模式的XML存储方法,该方法依据XML文档的模式信息,选取了该模式定义的特定节点作为记录节点,把输入的XML文档划分成一个一个记录,并记录其类型,对得到的记录按类型进行分类,类型相同的记录存储在一起,最终将XML文档映射到了关系数据库表中。采用这两种方法,映射后的XML文档占用的存储空间相对较小并且查询效率得到一定提高。但这两种方法都属于结构映射方法,是基于模式的,不同XML文档的模式很可能有差别,对这些模式信息的提取和管理本身就是一个极其繁琐的问题。在映射过程中,关系表不是预定义的,而且产生表的数量也不确定。如果XML的嵌套深度很大,可能产生大量的关系表。此外,XML定义的元素、 属性顺序信息在映射后一般不予以保证,并且注释、处理指令等信息也有可能被遗弃。综上所述,目前广泛采用的结构映射方法以及传统的模型映射方法都不同程度的存在着一些缺陷,因此都不能较好的解决XML文档到关系数据库映射这一问题。

发明内容
本发明的目的是针对上述现有XML映射方法存在的问题和不足之处,鉴于模型映射方法具有的优势,提出一种不仅可以显著节省存储空间以及提高查询效率,并且动态更新十分方便的XML文档到数据库的映射方法。为达到上述目的,本发明XML文档到数据库的映射方法步骤如下
步骤1、建立有序标识树一根据XML文档节点结构,将XML文档映射成对应的有序标识树。通常,所述有序标识树由按祖先后裔顺序连接的元素节点(元素节点可以包含子元素节点)、与叶节点连接的文本值、以及与相应元素节点连接的属性节点构成,给XML文档节点 (元素和属性)赋予唯一的标识。这样,可以对节点进行如先序、中序或后序遍历。步骤2、在数据库中设置主、从表——根据步骤1所建立的有序标识树,在数据库中设置存储基于文档结构信息的主表和存储基于文档内容的从表。即这两个表分别为 documents主表和tags从表,基于文档本身结构信息的存储放在documents表,基于文档内容的存储放在tags表。所述主表宜由用于标记XML文档的主键字段和用于以编码字符串描述该文档节点结构的文本字段构成。即主表的结构可以表示为documents (doc_id,doc_structure)。 其中doc_id是唯一标识的主键字段,由每个文档本身产生来标记该文档;doC_StruCture 是包含编码字符串的大文本字段,用来描述文档结构,文档节点结构的任何变化都映射在这个字段中。所述从表宜由用于连接主表的外键字段、用于标记主键字段的主键标识字段、 用于标记文档内容名或属性的名字段,以及用于标记文档内容的文本字段构成。即从表的结构可以表示为 tags(doc_id, tag_id, tag_name, tag_value)。其中doc_id 是连接 documents表的外键,反映主从表间的关系;tag_id是每个标记产生的主键标识字段;tag_ name是标记名或属性名字段;tag_ValUe是标记属性的文本字段。步骤3、XML文档映射到数据库——将XML文档的有序标识树逐项分别映射到数据库相应的主表和从表对应的字段中,从而完成XML文档到数据库的映射。上述映射算法可以采用W3C文档对象模型DOM (Document Object Model,D0M)表示内存中的XML文档,建立一个遍历XML文档的栈后,以相反的顺序把XML文档映射到关系数据库主表和从表的各字段元素压入栈,以便保留它们在d0C_strUCtUre字段里的顺序。归纳起来,本发明与现有技术相比,具有以下显著优点
1.存储空间占用少。由于本方法将XML文档仅映射为两个关系数据库表,且主表中存储XML文档的结构信息为字符串形式,与其它方法相比,较大程度节省了存储空间。2.查询效率高。当对XML文档进行查询时,首先将对XML文档的查询语句转化为对关系数据库表的查询语句SQL,然后采用SQL对关系表查询时,只需要做一下字符串匹配操作来判断节点的父子关系,而不需要对大量的关系表进行频繁的连接操作,因此显著提高了查询效率。3.动态更新容易。如果增加子树节点(元素和属性),仅仅是在字符串的合适位置做插入操作即可,而XML文档原有的标识不需要更改,因此动态更新非常容易。4.通用性强。由于最终依据建立的有序标记树来建立数据库表,因此不仅适用于 XML文档数据,而且还适用于任何树状数据结构,通用性较强。


下面结合附图对本发明作进一步的说明。图1为本发明实施例一的XML文档; 图2为图1中XML文档的树形示意;
图3为图IXML文档到关系数据库映射算法示意图; 图4为图2对应的documents表; 图5为图2对应的tags表; 图6为插入的XML文档片段; 图7为图6等价的tags表记录片段。
具体实施例方式为使本发明的目的、优点以及技术方案更加清楚明白,以下通过具体实施例,并结合附图,对本发明进一步详细说明。步骤1、建立有序标识树。对于图1中的XML文档,图2给出了相应的树形结构。根据XML文档节点的结构,将XML文档映射成对应的有序标识树,该有序标识树由按祖先后裔顺序连接的元素节点(元素节点可以包含子元素节点)、与叶节点连接的文本值、以及与相应元素节点连接的属性节点构成。给XML文档节点(元素和属性)赋予唯一的标识。可以对节点进行如先序,中序或后序遍历。XML文档D可以表示为一棵有序标识树T= (V, ν0, Σ,type, tag, val,彡),其中 V是XML节点的集合;vO e V是树的根节点;有穷字母表Σ是文档D的元素和属性名称组成的集合;函数type:V— {elem, attr, text}确定节点类型,type (v) =elem若ν为元素, type (ν) =attr 若 ν 为属性,type (ν) =text 若 ν 为文本;Ve= {ν | ν e V Λ type (ν) =elem} 表示元素节点集合,Va={v|v e V Λ type (ν) =attr}表示属性节点集合, Vt={v|v e V Λ type (ν) =text}表示文本节点集合;函数tag:Ve U Va—Σ返回元素或属性节点的名称;函数val =Va U Vt — str返回属性或文本节点的值,str是XML文档中所有合法字符串的集合。二元关系< e V2定义XML文档顺序,在文档D中如果节点u出现在ν 之前或u=v,则(U, v) e彡或记为U彡V。此逻辑数据模型只定义了构成XML文档的主要数据元素、属性和文本,而忽略处理指令、注释等次要数据,因此V=Ve U Va U Vt0元素节点可以有0个、1个或多个子元素节点,子元素节点的类型可以是元素、属性或文本;属性和文本节点没有子元素节点。T中每个元素和属性节点都被赋予唯一的标识,称为节点id。对于任意ν e V,其节点id记作 id (ν)。节点集合可以表示为节点id的集合。根据定义1可以写出上述XML文档的逻辑数据模型T= (V, ν0, Σ , type, tag, val,彡),其中
¥={100, IOli 114}; VO=IOOi
Σ= {pub, book, year, title, price, author, id, sex};
type(l00) =elem, type (102)=ati:r, type (104)二text,…;
tag(IOO)=Pubj tag(103)=title,…;
val (102)二 “2008 ”, val (104)=25. 50,…;
<={(100,101), (101,102),-},
步骤2、在数据库中建立主、从表——根据步骤1所建立的有序标识树,在数据库中设置存储基于文档结构信息的主表和存储基于文档内容的从表。即这两个表分别为 documents主表和tags从表,基于文档本身结构信息的存储放在documents表,基于文档内容的存储放在tags表。所述主表由用于标记XML文档的主键字段和用于以编码字符串描述该文档节点结构的文本字段构成。即主表的结构可以表示为documents (doc_id, doc_structure)。其中doc_id是唯一标识的主键字段,由每个文档本身产生来标记该文档;doC_StruCture是包含编码字符串的大文本字段,用来描述文档结构,文档结构的任何变化都应该映射在这个字段中。所述从表由用于连接主表的外键字段、用于标记主键字段的主键标识字段、用于标记文档内容名或属性的名字段,以及用于标记文档内容的文本字段构成。即从表的结构可以表不为 tags (doc_id, tag—id,tag—name,tag—value)。其中doc—id 是连接 documents 表的外键,反映主从表间的关系;tag_id是每个标记产生的主键标识字段;tag_name是标记名或属性名字段;tag_ValUe是标记属性的文本字段。步骤3、XML文档映射到数据库——将XML文档的有序标识树逐项分别映射到数据库相应的主表和从表对应的字段中,从而完成XML文档到数据库的映射。其中,本实施例主表doc_structure字段的规则如下 ⑴doC_StruCture字段由一系列长序列相关键组成;
⑵每个键以字母表中字母为开始,元素用“T”,属性用“A”,必须依照顺序来定界键。 字母后面紧跟着一个数值型数字代表tag_id ;
(3)如果元素中有一些属性,那么这个键在doC_StruCture中的标识将由下面的一些键定义这些属性。(4)如果元素中含有一些子元素,那么这些子元素将由尖括号括起来的键字符串表不。根据上述映射规则,本映射算法可以采用W3C文档对象模型D0M(Document Object Model,DOM)表示内存中的XML文档,建立一个遍历XML文档的栈后,以相反的顺序把XML文档映射到关系数据库主表和从表的各字段元素压入栈,以便保留它们在d0C_StrUCtUre字段里的顺序。该映射算法的详细描述如图3所示。通过上述算法,XML文档的所有结构信息以及节点信息都被映射到了关系数据库表中。为了更详细的阐述上面介绍的映射算法,结合图1和图2给出具体的算法示例。本实施例中,树里的每个节点(元素和属性)标识假定按照先序遍历的。经过转换之后,这个文档将在documents表里有一条记录显示,如图4中documents表所示的doc_id为50,图5 中tags表包含文档内容的所有记录。此时文档对应的doC_StruCture字段如下T100<T1 01Α102<Τ103Τ104Τ105Α106Α107>Τ108Α109<Τ110Τ111Τ112Α113Α114 ο根据上述方法能很容易保持文档的结构,例如要删除id为101的作者的sex属性,这个属性是A107,所需做的仅是简单的从d0C_strUCtUre字符串中删除子串A107操作。 假设需要在已经存在的标记之间新增一个book标记,仅仅是在上面的字符串的合适位置做插入操作即可,如新增一本书其结构如图6所示,相应的tags表的记录片段如图7所示, 其等价的键字符串是T150A151<T152T153>。这个新的子串将在合适的位置被插入到doc_ structure,来保留文档的原先次序。此时doc_structure字段将变成T100<T101A102<T1 03T104T105A106A107> T150A151<T152T153>T108A109<T110T111T112A113A114>>。除上述实施例外,本发明还可以有其他实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围。
权利要求
1.一种XML文档到数据库的映射方法,其特征在于包括以下步骤步骤1、建立有序标识树——根据XML文档节点结构,将XML文档映射成对应的有序标识树;步骤2、在数据库中设置主、从表——根据步骤1所建立的有序标识树,在数据库中设置存储基于文档结构信息的主表和存储基于文档内容的从表;步骤3、XML文档映射到数据库——将XML文档的有序标识树逐项分别映射到数据库相应的主表和从表对应的字段中,从而完成XML文档到数据库的映射。
2.根据权利要求1所述的XML文档到数据库的映射方法,其特征在于所述有序标识树由按祖先后裔顺序连接的元素节点、与叶节点连接的文本值、以及与相应元素节点连接的属性节点构成。
3.根据权利要求1或2所述的XML文档到数据库的映射方法,其特征在于所述主表由用于标记XML文档的主键字段和用于以编码字符串描述该文档节点结构的文本字段构成;所述从表由用于连接主表的外键字段、用于标记主键字段的主键标识字段、用于标记文档内容名或属性的名字段,以及用于标记文档内容的文本字段构成。
4.根据权利要求3所述的XML文档到数据库的映射方法,其特征在于所述步骤3的映射采用W3C文档对象模型DOM表示内存中的XML文档,建立一个遍历XML文档的栈后,以相反的顺序把XML文档映射到关系数据库主表和从表的各字段元素压入栈。
全文摘要
本发明涉及一种XML文档到关系数据库的映射方法,属于计算机数据处理领域。该方法通过建立有序标识树、建立主、从表以及将XML文档的有序标识树逐项分别映射到关系数据主表和从表对应的字段中,从而完成XML文档到数据库的映射。本发明与传统映射方法相比,不仅可以有效地保持XML文档的结构,而且可以显著节省存储空间,还能提高数据查询效率,具有实际应用价值。
文档编号G06F17/30GK102456053SQ201010527890
公开日2012年5月16日 申请日期2010年11月2日 优先权日2010年11月2日
发明者宋余庆, 耿飚, 鉴保瑞, 陈健美 申请人:江苏大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1