一种xml数据库文档控制方法

文档序号:6374247阅读:186来源:国知局
专利名称:一种xml数据库文档控制方法
技术领域
本发明涉及计算机技术领域,特别涉及一种XML数据库文档版本控制方法。
背景技术
随着现代信息产业的不断深入发展,对于信息的集成和共享的需求也变得日益迫切。XML (全称Extensible Markup Language),是一种专门为internet而设计的一种标记语言。XML的重点不在于数据的形式本身,而在于管理数据信息,因此,XML使得不同数据库模式的统一成为可能,为异构数据库的集成问题提供了途径。因此,XML在近几年得到了发展和广泛的应用。XML数据库管理系统(XMLDBMS)也是近年来发展迅速的一种新型的数据库管理系统,它以存储和检索符合W3C标准的XML文件数据为目标的数据库管理系统,并且可以更新XML文檔。由于它存储的对象是XML文档库,因此XMLDBMS本质上就是一种XML 文档库。随着XML相关技术的深入研究,XML查询已经具备了坚实的技术基础在此基础上,W3CWorldWideWebConsortium于2001年12月提出了 XML查询语言规范工作草案-XQuery语言,迄今为止,XQuery语言一直在不断的发展中。XML数据的检索和更新语言是由W3C制定的标准的XQuery和XQuery Update。XQuery系列语言基于序列数据模型(XDM),即XQuery中任意资料都是一个序列,序列由若干个有序的项目(item)的组成;一个item是一个原子值或者一个XDM节点,一个XDM节点是XML文檔的7种节点之一。基于这样的数据模型,最自然和高效的XML数据存储方案就是把XML文档存储为节点。XML数据库管理系统的一大类典型应用就是把它作为文档数据库来使用。作为文档数据库,用户普遍有更新文档并且维护一个文档的多个版本的需求,也就是保留一个文档在任何一次更新前后的两个版本。这样随着一个文档被多次更新,它将拥有多个版本。XML文档版本管理的主要功能包括可以添加文档;可以更新文档,只有最新的版本可以被更新,其余版本是只读的;可以得到每个版本的数据并且比较任意两个版本之间的变化;还可以删除某一个版本。由于大多数更新都只修改一个XML文档的一小部分内容,所以单独存储每一个版本是非常低效的做法,无法作为商业产品来使用。需要有一种方法可以只存储版本之间变化的部分,以最少的冗余数据正确地存储一个文档的所有版本。

发明内容
为解决上述问题,本发明技术方案提供了一种XML数据库文档版本控制方法,包括
文档版本的存储方法,具体为
在XML数据库管理系统中,将XML文档的元素节点和文档节点存储在一节点表中;所述元素节点存储其节点信息及本节点与其它元素节点的关系,文档节点存储着本XML包括元数据和根元素节点数据在内的数据;
在所述文档节点中存储所述XML文档的最新版本号M,并将所述最新版本号M初始化为Kl且K1〈M,毎次更新一文档递增其文档节点的最新版本号M,同时在所述节点表的元素节点数据行中存储所述XML文档的元素节点所在的版本号N和下ー个版本号N2,N是插入ー个节点数据行时它所属的XML文档的当前版本号M值,且将所述XML文档的元素节点所在的版本号N设置为K2且K2〈N2,将所述下ー个版本号N2设置为无效值;
为所述节点表创建节点表索引,并使用所述节点编号和所述最新版本号M作为键值指向所述节点表中所述节点所在的节点数据行。可选地,所述元素节点内部存储的内容包括所述元素节点的所有的属性节点,名字空间节点,文本子节点,处理指令子节点、注释子节点以及所述元素节点与其他元素节点的关系。可选地,Kl=I,K2=l。可选地,在没有删除任何版本的情况下,在[1,Μ]区间内每ー个整数都有版本与 之对应。可选地,还进一歩包括文档版本的更新方法
当更新所述XML文档的节点时,将待更新节点所在的所述节点表的节点数据行E复制ー份形成新的节点数据行E',并在所述新的节点数据行E'上完成所述XML文档节点的更新,同时设置Ε'.Ν的值为MO,设置Ε'.Ν2的值为无效值;
在所述节点表的节点表索引中増加更新后的节点编号和所述最新版本号M作为键值指向所述节点表中所述更新后的节点所在的节点数据行,并将节点数据行E中的下ー个版本号Ν2设置为MO。可选地,所述的在所述新的节点数据行E'上完成所述XML文档节点的更新具体包括向所述XML文档插入新节点,删除已有节点,更改已有节点的数据或名称。可选地,还进一歩包括文档版本的删除方法
删除ー XML文档的某个版本X吋,扫描节点表中的每个节点,删除那些版本号N等于X的节点所属的数据行;
将删除的版本X存储在文档节点中作为已删除版本号,以便在上述查询XML文档时使用。

可选地,还进ー步包括在XQuery查询语言定义的内嵌的标准的fn: doc和fn: collection函数中指定版本号X,并通过指定版本号X判断节点的版本有效性。可选地,所述的通过指定版本号X判断节点的版本有效性的方法具体包括对于ー个节点E:
若E. N等于X,则E是符合版本要求的;
若E. N小于X,E. N2是小于X的正数,E. N2不是记录在文档节点中的已删除版本号,或者E. N2是绝对值小于X的负数,则E不符合版本要求,而E的下ー个版本(即E. N2非负且未被删除时)有可能符合版本要求;
若E. N小于X,E. N2是无效值或者绝对值大于X或者所有位于区间[E. N2, X)之间的版本已删除,则E符合版本要求;
如果E. N大于X,则E不符合版本要求。可选地,还进一歩包括文档版本的比较方法比较ー XML文档的Xl和X2两个版本时,在节点表中查找所述XML文档的节点中版本号N位于(XI,X2 ]区间的所有节点,以及N2为负数且N2位于(XI,X2]区间的所有节点。与现有技术相比,上述技术方案具有下优点
本发明的技术方案可以实现高效地维护XML数据库管理系统中的XML文档的所有版本的数据。XML文档中只有被更新的节点才被复制,更新和存储,否则所有的版本使用同一份节点数据。使用这个方法,XMLDBMS可以轻易地得到一个文档的所有版本号码,以及每一个版本中的全部节点数据,以及得到任意两个版本之间的不同,而且没有任何重复存储的节点数据方便实用。


图I本发明实施方式的一种XML数据库文档版本控制方法中的文档版本存储方法的流程 图2为本发明的实施方式的一种XML数据库文档版本控制方法中的文档版本更新方法 的流程 图3是本发明的实施方式的一种XML数据库文档版本控制方法中的文档版本删除方法的流程图。
具体实施例方式为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式
做详细的说明。在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施方式
的限制。本技术领域的技术人员知道,XML数据的检索和更新语言是由W3C制定的标准的XQuery和XQuery Update。XQuery系列语言基于序列数据模型(XDM),即XQuery中任意资料都是一个序列,序列由若干个有序的项目(item)的组成;一个item是一个原子值或者一个XDM节点,一个XDM节点是XML文檔的7种节点之一。基于这样的数据模型,最自然和高效的XML数据存储方案就是把XML文档存储为节点。XML数据库管理系统的一大类典型应用就是把它作为文档数据库来使用。作为文档数据库,用户普遍有更新文档并且维护一个文档的多个版本的需求,也就是保留一个文档在任何一次更新前后的两个版本。这样随着一个文档被多次更新,它将拥有多个版本。XML文档版本管理的主要功能包括可以添加文档;可以更新文档,只有最新的版本可以被更新,其余版本是只读的;可以得到每个版本的数据并且比较任意两个版本之间的变化;还可以删除某一个版本。由于大多数更新都只修改一个XML文档的一小部分内容,所以单独存储每一个版本是非常低效的做法,无法作为商业产品来使用。为解决现有技术中的问题,本发明的发明人经过研究,提出了一种XML数据库文档版本控制方法中的文档版本存储方法。参阅图1,图I示出了本发明实施方式的一种XML数据库文档版本控制方法中的文档版本存储方法,包括
步骤SI :在XML数据库管理系统中,将XML文档的元素节点和文档节点存储在一节点表中;
其中,本步骤中的节点存储方式与现有技术中的XML数据库管理系统节点的存储方式相同,也即是节点表中存储有两种节点---文档节点和元素节点。所述元素节点内部存储着该元素节点的所有的属性节点,名字空间节点,以及文本子节点,处理指令子节点,注释子节点以及该元素节点与其他元素节点之间的关系(例如父子关系,兄弟关系)。而每ー个XML文档同时也有ー个文档节点,所述文档节点的内部存储着所述XML文档的元数据信息。
步骤S2 :在所述文档节点中存储所述XML文档的最新版本号M,并将所述最新版本号M初始化为I,同时在所述节点表的元素节点数据行中存储所述XML文档的元素节点所在的版本号N和下ー个版本号N2,且将所述XML文档的元素节点所在的版本号N设置为1,将所述下ー个版本号N2设置为无效值;
其中,每ー XML文档有ー个当前最新版本号M,所述当前最新版本号存储在其文档节点中。M从I开始,毎次更新一个文档,都递增所述文档节点的最新版本号M ;同时每一元素节点数据行也存储着这个节点所在的版本号N以及下一版本号N2。N是插入ー个节点数据行时其所属的XML文档的当前版本号M值,因此,在该节点在下一次被更新为N'之前,所有介于[N,N'-I]区间内的XML文档的版本都使用这个节点数据行。毎次更新ー个节点时,原 节点的N2字段需要被设置为新节点的N字段值(即M值),新节点的N2字段是无效值。上述的方法决定了 在没有删除任何版本的情况下,在[1,M]区间内每ー个整数都有相应的XML文档版本与之对应。步骤S3 :为所述节点表创建节点表索引,并使用所述节点编号和所述最新版本号M作为键值指向所述节点表中所述节点所在的节点数据行。本发明还提供了ー种XML数据库文档更新方法。參阅图2,图2为本发明的实施方式的ー种XML数据库文档版本控制方法中的文档版本更新方法的流程图,其包括
步骤S10:当更新所述XML文档的节点时,将待更新节点所在的所述节点表的节点数据行E复制ー份形成新的节点数据行E',并在所述新的节点数据行E'上完成所述XML文档节点的更新,同时设置E'. N的值为MO,设置E'. N2的值为无效值;
其中,要更新ー个XML文档时,更新的总是其最新版本。首先要做的就是保存当前最新版本号MO给本次事务更新使用,然后递增M供下一个事务更新(可能是并发的事务)使用。将待更新节点所在的所述节点表的节点数据行E复制ー份形成新的节点数据行E',并在所述新的节点数据行E'上完成所述XML文档节点的更新,同时设置E'. N的值为MO,设置E'.N2的值为无效值。另外,所述的在所述新的节点数据行E'上完成所述XML文档节点的更新具体包括向所述XML文档插入新节点,删除已有节点,更改已有节点的数据或名称。步骤S20 :在所述节点表的节点表索引中増加更新后的节点编号和所述最新版本号M作为键值指向所述节点表中所述更新后的节点所在的节点数据行,并将节点数据行E中的下ー个版本号N2设置为MO。其中,更新E. N2不仅可以用于文档版本控制算法本身,还可以保证在使用了版本控制方法的XML数据更新时存储引擎的通用的并发控制机制可以正确工作。当有另ー个并发事务也更新节点E吋,由于版本控制机制将更新变为插入操作了(插入新版本),如果不更新E节点的任何数据字段,那么多个事务可以并发的更新同一个版本的E节点,产生若干个新版本的E节点并且插入到节点表中,导致了错误。因为最终将只有ー个版本有效,其余版本相当于是基于旧数据做的更新,都是无效的,也就是已经提交的事务的数据丢失了,这是严重的错误。而本发明通过更新E. N2使得XML数据库管理系统的存储引擎的版本控制机制下的节点数据表的更新仍然需要更新E节点数据,因而原有的并发控制机制可以确保只有一个事务可以完成对E的更新,其他与之冲突的事务都将被回滚,从而保证了并发更新的正确性。本发明还提供了一种XML数据库文档版本控制方法,参阅图3,图3为本发明实施方式的一种XML数据库文档版本控制方法中的文档版本删除方法的流程图,其包括
步骤110 :删除一 XML文档的某个版本X时,扫描节点表中的每个节点,删除那些版本号N等于X的节点所属的数据行;
步骤120 :将删除的版本X存储在文档节点中作为已删除版本号,以便在上述查询XML文档时使用。

其中,在删除XML文档的某个版本X后,X将成为该XML文档的一个无效版本号,要存储X在文档节点中作为已删除版本号,以便在查询XML文档时使用(具体如何在查询时使用,请参见下文中的一种XML文档查询方法中的具体描述,且若XML数据库管理系统并不需要删除XML文档版本的功能,可以去除对删除版本的处理)。本发明还提供了一种本发明还提供了一种XML数据库文档查询方法。其包括在XQuery查询语言定义的内嵌的标准的fn:doc和fn:collection函数中指定版本号X,并通过指定版本号X判断节点的版本有效性。其中,本发明的实施方式的一种XML数据库文档查询方法中的通过指定版本号X判断节点的版本有效性的方法具体包括
对于一个节点E:
若E. N等于X,则E是符合版本要求的;
若E. N小于X,E. N2是小于X的正数,E. N2不是记录在文档节点中的已删除版本号,或者E. N2是绝对值小于X的负数,则E不符合版本要求,而E的下一个版本(即E. N2非负且未被删除时)有可能符合版本要求;
若E. N小于X,E. N2是无效值或者绝对值大于X或者所有位于区间[E. N2, X)之间的版本已删除,则E符合版本要求;
如果E. N大于X,则E不符合版本要求。按照上述的方法扫描节点表索引或者节点表本身,就可以得到所有符合查询条件和版本条件的节点。本发明还提供了一种XML数据库文档比较方法,包括比较一 XML文档的Xl和X2两个版本时,在节点表中寻找属于所述XML文档的的节点中版本号N位于(XI,X2 ]区间的所有节点,以及N2为负数且|N2|位于(XI,X2]区间的所有节点。其中,这些节点是在XI,X2两个版本之间发生了变化的节点,也就是Xl与X2的不同之处,然后就可以将进一步的精确比较限定在这些节点中,可以大大减小比较操作的工作量。综上所述,本发明技术方案具有下优点
本发明的技术方案可以实现高效地维护XML数据库管理系统中的XML文档的所有版本的数据。XML文档中只有被更新的节点才被复制,更新和存储,否则所有的版本使用同一份节点数据。使用这个方法,XMLDBMS可以轻易地得到一个文档的所有版本号码,以及每ー个版本中的全部节点数据,以及得到任意两个版本之间的不同,而且没有任何重复存储的节点数据方便实用。应当理解的是这里所描述的方法可以以各种形式的硬件、软件、固件、专用处理机或者它们的组合实现。尤其是,至少本发明的一部分包括程序指令的应用程序优选实现。这些程序指令被确实地包括在ー个或者多个程序存储设备(包括但不限于硬盘,磁性软盘,RAM, ROM, CD,ROM等)里,并且可由任何包括适当结构的设备或者机器,例如ー种具有处理器、内存和输入/输出接ロ的通用数字计算机执行。还应当理解由于附图中描述的ー些系统的组成部件和处理步骤优选地以软件实现,所以,系统模块(或者方法步骤的逻辑流程)之间的连接可能不同,这取决于本发明的程序设计方式。根据这里给出的指导,相关领域的普通技术人员将能够设计出本发明的这些以及类似的实施方式。以上公开了本发明的多个方面和实施方式,本领域的技术人员会明白本发明的其它方面和实施方式。本发明中公开的多个方面和实施方式只是用于举例说明,并非是对本 发明的限定,本发明的真正保护范围和精神应当以权利要求书为准。
权利要求
1.一种XML数据库文档版本控制方法,其特征在于,包括文档版本的存储方法,具体为 在XML数据库管理系统中,将XML文档的元素节点和文档节点存储在一节点表中;所述元素节点存储其节点信息及本节点与其它元素节点的关系,文档节点存储着本XML包括元数据和根元素节点数据在内的数据; 在所述文档节点中存储所述XML文档的最新版本号M,并将所述最新版本号M初始化为Kl且K1〈M,每次更新一文档递增其文档节点的最新版本号M,同时在所述节点表的元素节点数据行中存储所述XML文档的元素节点所在的版本号N和下一个版本号N2,N是插入一个节点数据行时它所属的XML文档的当前版本号M值,且将所述XML文档的元素节点所在的版本号N设置为K2且K2〈N2,将所述下一个版本号N2设置为无效值; 为所述节点表创建节点表索引,并使用所述节点编号和所述最新版本号M作为键值指向所述节点表中所述节点所在的节点数据行。
2.如权利要求I所述的一种XML数据库文档版本控制方法,其特征在于,所述元素节点内部存储的内容包括所述元素节点的所有的属性节点,名字空间节点,文本子节点,处理指令子节点、注释子节点以及所述元素节点与其他元素节点的关系。
3.如权利要求I所述的一种XML数据库文档版本控制方法,其特征在于,K1=1,K2=1。
4.如权利要求I所述的一种XML数据库文档版本控制方法,其特征在于,在没有删除任何版本的情况下,在[1,Μ]区间内每一个整数都有版本与之对应。
5.一种基于权I所述的一种XML数据库文档版本控制方法,其特征在于,还进一步包括文档版本的更新方法 当更新所述XML文档的节点时,将待更新节点所在的所述节点表的节点数据行E复制一份形成新的节点数据行E',并在所述新的节点数据行E'上完成所述XML文档节点的更新,同时设置Ε'.Ν的值为MO,设置Ε'.Ν2的值为无效值; 在所述节点表的节点表索引中增加更新后的节点编号和所述最新版本号M作为键值指向所述节点表中所述更新后的节点所在的节点数据行,并将节点数据行E中的下一个版本号Ν2设置为MO。
6.一种权利要求5所述的一种XML数据库文档版本控制方法,其特征在于,所述的在所述新的节点数据行E'上完成所述XML文档节点的更新具体包括向所述XML文档插入新节点,删除已有节点,更改已有节点的数据或名称。
7.一种基于权I的一种XML数据库文档版本控制方法,其特征在于,还进一步包括文档版本的删除方法 删除一 XML文档的某个版本X时,扫描节点表中的每个节点,删除那些版本号N等于X的节点所属的数据行; 将删除的版本X存储在文档节点中作为已删除版本号,以便在上述查询XML文档时使用。
8.一种基于权I的一种XML数据库文档版本控制方法,其特征在于,还进一步包括在XQuery查询语言定义的内嵌的标准的fn:doc和fn: collection函数中指定版本号X,并通过指定版本号X判断节点的版本有效性。
9.如权利要求8所述的一种XML数据库文档版本控制方法,其特征在于,所述的通过指定版本号X判断节点的版本有效性的方法具体包括 对于一个节点E: 若E. N等于X,则E是符合版本要求的; 若E. N小于X,E. N2是小于X的正数,E. N2不是记录在文档节点中的已删除版本号,或者E. N2是绝对值小于X的负数,则E不符合版本要求,而E的下一个版本(即E. N2非负且未被删除时)有可能符合版本要求; 若E. N小于X,E. N2是无效值或者绝对值大于X或者所有位于区间[E. N2, X)之间的版本已删除,则E符合版本要求; 如果E. N大于X,则E不符合版本要求。
10.一种基于权I的一种XML数据库文档版本控制方法,其特征在于,还进一步包括文档版本的比较方法比较一 XML文档的Xl和X2两个版本时,在节点表中查找所述XML文档的节点中版本号N位于(XI,X2 ]区间的所有节点,以及N2为负数且|N2|位于(XI,X2]区间的所有节点。
全文摘要
本发明提供一种XML数据库文档版本控制方法。本发明的技术方案可以实现高效地维护XML数据库管理系统中的XML文档的所有版本的数据。XML文档中只有被更新的节点才被复制,更新和存储,否则所有的版本使用同一份节点数据。使用这个方法,XMLDBMS可以轻易地得到一个文档的所有版本号码,以及每一个版本中的全部节点数据,以及得到任意两个版本之间的不同,而且没有任何重复存储的节点数据方便实用。
文档编号G06F17/30GK102819585SQ20121026951
公开日2012年12月12日 申请日期2012年7月31日 优先权日2012年7月31日
发明者赵伟, 郑程光, 孙伟丰, 罗正海, 李泉, 李 浩, 李书淦, 程仁波 申请人:上海方正数字出版技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1