一种基于路径结构的xml数据存储方法

文档序号:6371355阅读:197来源:国知局
专利名称:一种基于路径结构的xml数据存储方法
技术领域
本发明涉及数据存储领域,特别涉及一种基于路径结构的XML数据存储方法。
背景技术
随着现代信息产业的不断深入发展,对于信息的集成和共享的需求也变得日益迫切。XML(全称Extensible Markup Language), 一种专门为internet而设计的一种标记语言。XML的重点不在于数据的形式本身,而在于管理数据信息,因此,XML使得不同数据库模式的统一成为可能,为异构数据库的集成问题提供了途径。因此,XML在近几年得到了发展和广泛的应用。XML数据库管理系统(XMLDBMS)也是近年来发展迅速的一种新型的数据库管理系统,它以存储和检索符合W3C标准的XML文档数据为目标的数据库管理系统,并且可以更新 XML文档。由于它存储的对象是XML文档库,因此XMLDBMS本质上就是一种XML文档库。同时,XML文档被用作表达叙述性文档(比如电子书,用户手册等)本身的内容和外观的格式规范,比如微软Office软件的· docx, . xlsx, . pptx文档格式以及OpenOffice系统的文档格式都是基于XML来存储文档数据和格式的;还有使用标准的XML来表达网页内容的xhtml。此外很多文档处理工具也使用XML来作为其统一的数据源,比如docbook和doxygen等工具使用符合其内部定义的XML文档标准(由XML Schema定义)的XML文档作为统一的数据源来产生和输出各种表示方法下的文档,比如使用同一个xml文档数据源产生和输出html,pdf,chm等多种最终文档格式。如上所述,XML文档标准的描述方式是XMLSchema 或者 DTD。还有一大类XML文档是简单随意的XML文档,它们并不遵循任何文档标准,仅仅是符合XML语言标准的。它们存储的可以是以面向阅读的文字内容为主的文档内容,也可能是以数值类型为主的数据。总之,XML文档被用作存储数据或者存储文档内容,它们可以遵循XML Schema/DTD定义的标准规范,也可能不遵循任何模式和标准的任意的Well Formed XML文档。并且这些文档都可能需要被更新。当然,相比于查询的访问量,更新数据这种访问所占的比重较小,文档还是以只读访问为主的,甚至有些用户愿意使用只读的数据源,如果这样可以得到更高的性能的话。在当前现实应用中,用户需要管理的XML文档数量巨大,并且大量用户会有频繁地并发读写的需求;另外有的XML文档非常巨大,单个文档可以达到若干个GB字节。这就需要XML数据库管理系统(XMLDBMS)来存储和检索以及更新XML文档,实现XML数据的闻效的,闻并发的,并且遵循事务ACID语义的读与访问,并且提供闻可用性和闻可扩展性。

发明内容
本发明解决的是现有技术中XML数据库管理系统查询和更新数据效率低下的问题。为解决上述问题,本发明技术方案提供一种基于路径结构的XML数据存储方法包括步骤SI :解析所述XML文档,以获取包括所述XML文档的元素节点数据在内的信息;步骤S2 :获取所述元素节点的路径;步骤S3 :将获取的所述元素节点的所述路径插入路径表中,并在所述路径表中赋予所述每一条路径一个唯一的编号作为路径ID ;步骤S4 :将所述路径ID存储至所述元素节点的节点对象中,并将所述节点对象存储至节点数据行中;步骤S5 :在路径索引表中插入一个指向所述节点数据行的索引行。可选地,所述的步骤SI具体为将所述XML文档送至XML文档解析器,以获取包括 所述XML文档的元素节点数据在内的信息。可选地,所述的包括所述XML文档的元素节点数据在内的信息进一步包括所述XML文档的各个元素节点及其附属的子节点的数据,以及当前元素节点的名称和类型在内的信息。可选地,所述的元素节点附属的子节点包括属性节点、名字空间节点、文本节点、注释节点和处理指令节点。可选地,所述的XML文档解析器采用SAX方式解析所述XML文档。可选地,所述的步骤S2具体为将所述元素节点的名称依次出栈,获取所述元素节点的完整路径,而后再将所述元素节点的名称依次入栈。可选地,步骤S3进一步包括若所述XML文档具有类型信息,则将所述类型信息与路径ID —并存储至节点数据行中。可选地,所述的步骤S4具体为将包括路径ID、所述元素节点的附属子节点数据在内的所述元素节点的所有数据序列化为节点数据行,并插入所述节点数据表中。可选地,在所述的步骤S5中,所述路径索引表以所述路径ID为键值,指向所述路径下的元素节点。可选地,所述的路径为字符串,其为由多个PathSection组成的序列,所述的每个PathSection包括名字空间字符串ID和本地名称字符串。本发明还提供了一种基于权项I的XML数据查询方法,包括使用所述路径表的索引找到路径数据行;以路径ID作为键值查找所述路径表;获取所述路径ID下所有元素节点对应的数据行;对所述元素节点对应的数据行执行节点过滤操作,得到符合查询条件的最终结果,并返回给用户。本发明还提供了一种基于权项I的XML数据更新方法,包括若一元素节点改变名称,则获取所述元素节点的新路径;将获取的所述元素节点的所述路径插入路径表中,并在所述路径表中更新路径ID0如果插入节点或者替换元素节点或者属性节点,那么获取新节点的路径,如果所述新节点的路径在路径表中不存在,则插入所述路径表中并且得到所述新节点的路径ID,并将所述路径ID设置到插入节点对象中,以在存储节点数据时将所述路径ID存储至节点数据行中。与现有技术相比,上述技术方案具有下优点由于在现有技术的基础上,本发明的一种基于路径结构的XML数据存储方法和装置,利用路径信息实现独特的节点数据存储方案,可以实现高效的数据查询和更新操作,更加的高效、可靠,可用性和可扩展性显著提高。本发明的技术方案的应用,不涉及XML数据的查询和更新路径的长短以及XML文档自身的复杂性,在任何情况下,路径查询的代价恒定,因此,对于结构复杂的XML文档和具有较长路径的XQuery查询可以显著提高查询性能。同时,由于将XML文档的元数据独立地进行存储,避免了节点名称上的重复,在数据量非常巨大的数据库管理应用例中,可以显 著地提高数据查询和更新性能。


图I是本发明实施方式的基于路径结构的XML数据存储方法的流程图;图2是本发明实施方式的基于路径结构的XML数据存储方法所涉及的数据表和期间关系不意图。
具体实施例方式为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式
做详细的说明。在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施方式
的限制。为解决现有技术中的问题,本发明的发明人经过研究,提出了一种基于路径结构的XML数据存储方法。参阅图I和图2,图I是本发明实施方式的基于路径结构的XML数据存储方法的流程图。图2是根据本发明的存储方法所涉及的数据表和期间关系示意图。所述基于路径结构的XML数据存储方法包括步骤SI :解析所述XML文档,以获取包括所述XML文档的元素节点数据在内的所
有信息;步骤S2 :获取所述元素节点的路径;步骤S3 :将获取的所述元素节点的所述路径插入路径表中,并在所述路径表中赋予所述路径一个唯一的编号作为路径ID ;步骤S4 :将所述路径ID存储至所述元素节点的节点对象中,并将所述节点对象存储至节点数据行中;步骤S5 :在路径索引表中插入一个指向所述节点数据行的索引行。我们知道,XML数据库管理系统(XMLDBMS)中存储的对象是XML文档,其中的用于存储XML文档的实体称为容器,各个容器中可存储任意数量的XML文档的数据,而每个容器则由若干数据表组成,这些数据表分别用于存储XML文档的各方面的数据和结构信息,包括但不限于节点数据,节点间关系,路径数据,各种索引,各种统计信息。而数据表则是由若干数据行组成,数据行则是实现数据存储的基本单位。通常情况下,数据行都会对应有索弓I,通过这些索引可以实现快速查找特定数据行的目标。XML文档内容被作为节点数据存储在一个节点表中,在XDM的7种节点中,把属性节点,名字空间节点,文本节点,注释节点和处理指令节点都存放在它们的父亲节点(必然是元素节点)中,因此节点表中只存储元素节点和文档节点。文档节点存储一个XML文档的元数据信息,而文档的内容则存储在这个文档的所有的元素节点中。XML文档中元素节点构成一个节点树,所以节点之间的父子关系,兄弟关系这些结构信息也需要以某种方式存储起来,本方案在一个元素节点数据行中存储其父节点ID,第一个子节点ID,前一个和后一个兄弟节点ID,这样就可以把整个节点树的结构信息存储起来。一个元素节点的路径就是从一个XML文档的根元素节点出发依次经历若干级节点而到达这个元素节点所经过的元素节点名称的序列。XML数据存储方案要支持高效的数据查询和更新操作,这是存储方案设计的目标。为了能够很好地支持XQuery的路径查询,维护XML文档的元素节点的路径信息。 下面以下述的简单的XML文档为例详细说明本发明实施方式的基于路径结构的XML数据存储方法。XML 文档为<a><b attr=” value” ><c>ccc 1</c><c>ccc2〈/c></b></a>。本发明的具体实施方式
的基于路径结构的XML数据存储方法,采用以下的方式存储上述的XML文档数据步骤SI :解析所述XML文档,以获取包括所述XML文档的元素节点数据在内的所
有信息;其中,优选地,在本发明的一个优选的实施方式中,为了得到解析XML文档,首先,将XML文档送入XML文档解析器中,XML文档解析器采用SAX方式解析XML文档,通过XML文档解析器的事件通知机制,可以得到XML文档的各个元素节点及其附属的五种子节点(包括属性节点,名字空间节点,文本节点,注释节点,处理指令节点)的数据,以及当前元素节点的名称和类型等信息。步骤S2 :获取所述元素节点的路径;其中,优选地,在本发明的一个优选的实施方式中,采用以下的方式来获取元素节点的路径,即首先将堆栈中的元素节点名称依次出栈,即可得到当前的元素节点的路径字符串,然后再将元素节点的名称依次入栈。由于XML元素节点的树型组织方式,在元素节点的所有子节点被处理完之前,不会得到该元素节点结束的事件通知。因此,可以采用上述的方式获取XML文档中的各个元素节点完整的路径字符串。以上述的XML文档为例,文档中的名称为“c”的两个元素节点,通过上述的操作,可以得到他们的完整的路径字符串为“/a/b/c”。
步骤S3 :将获取的所述元素节点的所述路径插入路径表中,并在所述路径表中赋予所述路径一个唯一的编号作为路径ID ;同时,若XML文档同时具有类型信息的话,那么应当将所述类型信息与路径ID —起存储至节点数据行中。以上述的XML文档为例,可以得到下述表I所示的路径表表I
权利要求
1.一种基于路径结构的XML数据存储方法,其特征在于,包括 步骤SI :解析所述XML文档,以获取包括所述XML文档的元素节点数据在内的信息; 步骤S2 :获取所述元素节点的路径; 步骤S3 :将获取的所述元素节点的所述路径插入路径表中,并在所述路径表中赋予所述每一条路径一个唯一的编号作为路径ID ; 步骤S4 :将所述路径ID存储至所述元素节点的节点对象中,并将所述节点对象存储至节点数据行中; 步骤S5 :在路径索引表中插入一个指向所述节点数据行的索引行。
2.如权利要求I所述的基于路径结构的XML数据存储方法,其特征在于,所述的步骤SI具体为将所述XML文档送至XML文档解析器,以获取包括所述XML文档的元素节点数据在内的信息。
3.如权利要求2所述的基于路径结构的XML数据存储方法,其特征在于,所述的包括所述XML文档的元素节点数据在内的信息进一步包括所述XML文档的各个元素节点及其附属的子节点的数据,以及当前元素节点的名称和类型在内的信息。
4.如权利要求3所述的基于路径结构的XML数据存储方法,其特征在于,所述的元素节点附属的子节点包括属性节点、名字空间节点、文本节点、注释节点和处理指令节点。
5.如权利要求2所述的基于路径结构的XML数据存储方法,其特征在于,所述的XML文档解析器采用SAX方式解析所述XML文档。
6.如权利要求I所述的基于路径结构的XML数据存储方法,其特征在于,所述的步骤S2具体为将所述元素节点的名称依次出栈,获取所述元素节点的完整路径,而后再将所述元素节点的名称依次入栈。
7.如权利要求I所述的基于路径结构的XML数据存储方法,其特征在于,步骤S3进一步包括若所述XML文档具有类型信息,则将所述类型信息与路径ID —并存储至节点数据行中。
8.如权利要求3所述的基于路径结构的XML数据存储方法,其特征在于,所述的步骤S4具体为将包括路径ID、所述元素节点的附属子节点数据在内的所述元素节点的所有数据序列化为节点数据行,并插入所述节点数据表中。
9.如权利要求I所述的基于路径结构的XML数据存储方法,其特征在于,在所述的步骤S5中,所述路径索引表以所述路径ID为键值,指向所述路径下的元素节点。
10.如权利要求I或6所述的基于路径结构的XML数据存储方法,其特征在于,所述的路径为字符串,其为由多个PathSection组成的序列,所述的每个PathSection包括名字空间字符串ID和本地名称字符串。
11.一种基于权项I的XML数据查询方法,其特征在于,包括 使用所述路径表的索引找到路径数据行; 以路径ID作为键值查找所述路径表; 获取所述路径ID下所有元素节点对应的数据行; 对所述元素节点对应的数据行执行节点过滤操作,得到符合查询条件的最终结果,并返回给用户。
12.一种基于权项I的XML数据更新方法,其特征在于,包括若一元素节点改变名称,则获取所述 元素节点的新路径;将获取的所述元素节点的所述路径插入路径表中,并在所述路径表中更新路径ID ;如果插入节点或者替换元素节点或者属性节点,那么获取新节点的路径,如果所述新节点的路径在路径表中不存在,则插入所述路径表中并且得到所述新节点的路径ID,并将所述路径ID设置到插入节点对象中,以在存储节点数据时将所述路径ID存储至节点数据行中。
全文摘要
本发明提供了一种基于路径结构的XML数据存储方法,与现有技术相比,上述技术方案具有下优点由于在现有技术的基础上,本发明的一种基于路径结构的XML数据存储方法和装置,利用路径信息实现独特的节点数据存储方案,可以实现高效的数据查询和更新操作,更加的高效、可靠,可用性和可扩展性显著提高。本发明的技术方案的应用,不涉及XML数据的查询和更新路径的长短以及XML文档自身的复杂性,在任何情况下,路径查询的代价恒定,因此,对于结构复杂的XML文档和具有较长路径的XQuery查询可以显著提高查询性能。同时,由于将XML文档的元数据独立地进行存储,避免了节点名称上的重复,在数据量非常巨大的数据库管理应用例中,可以显著地提高数据查询和更新性能。
文档编号G06F17/30GK102768674SQ201210193948
公开日2012年11月7日 申请日期2012年6月12日 优先权日2012年6月12日
发明者孙伟丰, 李书淦, 李泉, 李 浩, 程仁波, 罗正海, 赵伟, 郑程光 申请人:上海方正数字出版技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1