一种变步长xml编码方法

文档序号:6352608阅读:203来源:国知局
专利名称:一种变步长xml编码方法
技术领域
本发明与数据库管理系统相关,涉及数据库存储领域,是一种能有效支持XML文 档更新的编码方法。
背景技术
多版本XML树存储能够使XML树的存储既能应用于关系数据库管理系统,又能应 用于XML数据库管理系统。多版本XML树存储一般通过对XML树按特定规则进行编码来实现的。目前与多版本XML树存储相关的成果较多,其中比较经典的是0RDPATH编码方法 和PRE/POST编码方法。在0RDPATH编码中,其过程相当于使用步长为2的RX-DDE编码。初始编码中数字 都是1,3,5,7等奇数和正数。只有奇数才是编码中的有效部分。所以,0RDPATH编码并不 直接包含节点的层次信息,在进行层次关系判断时,会带来额外开销。在PRE/POST编码中,每个节点被编译为一个三元组< pre,post, level > (有时 也用四元组,加上XML文档的ID号,就是< DocID,pre,post,level >)。其中pre,post 是通过对XML文档进行深度先序优先周游获取,level代表了节点在XML树中的层次。但 是PRE/POST编码无法判断兄弟关系且不支持文档的即时更新。

发明内容
本发明针对XML节点编码在插入节点后需要更新,克服上述现有相应编码技术存 在的不足,开发出一种带步长的扩展Dewy编码(简称RX-DDE),它是一种能有效支持XML文 档的更新,保留节点在XML树上的层次信息,降低两点关系判断时的代价,具有嵌入性的多 版本XML树编码方法。本发明的技术方案为一种变步长XML编码方法,其步骤为1)设定XML文档编码的步长值为PACE,第一次为XML文档编码时采用步长PACE 进行编码;其中,PACE > 1 ;2)在后续某一次编码时,对于新插入的XML节点r, a)如果节点r作为某非叶节点j的第一个子节点插入时,则将节点j中原第一个 子节点编码最后一位减去PACE,作为节点r的编码;b)如果节点r作为节点j的最后一个子节点插入时,则将节点j中原最后一个子 节点编码最后一位加上PACE,作为节点r的编码;c)节点r在两兄弟节点之间插入时;如果两兄弟节点编码第一位相等且最后一位 PACE内的整数没有用完,则节点r编码最后一位取值介于两兄弟节点编码最后一位之间的 一整数;如果两兄弟节点编码第一位相等且最后一位PACE内的整数已用完,则采用DDE的 编码方法对新插入节点r进行编码;如果两兄弟节点编码第一位不相等,则采用DDE的编码方法对节点r进行编码;d)如果节点r作为某叶节点k的子节点插入,则将叶节点k编码后面增加一成分 1作为节点r的编码。进一步的,所述1)中,第一次编码为XML文档编码时采用步长为PACE的Dewey编 码方法进行编码。进一步的,所述c)中,设节点r的编码为(C1C2... cm),节点r为在左兄弟编码 (B1B2. . am)与右兄弟编码O^b2... bm)之间插入;如果 =bjl彡i ^ m-1)且最后一位 PACE内的整数没有用完,则Ci = (1彡i彡m-1),且cm为介于am与bm之间的一整数;其 中,m为自然数。

进一步的,所述Cm = (am+bm)/2。进一步的,所述c)中,设节点r的编码为(C1C2... cm),节点r为在左兄弟编码 (B1B2. . am)与右兄弟编码(bib2. . . bm)之间插入;如果= bi(l^ i^m-1)且最后一位PACE 内的整数已用完,则Ci = B^bi (1 ^ i ^m);其中,m为自然数。进一步的,所述c)中,设节点r的编码为(C1C2. ·· cm),节点r为在左兄弟编 码(aia2. . am)与右兄弟编码O^b2... bm)之间插入;如果乒bi(l彡i彡m-1),则Ci = ai+b“l彡i彡m);其中,m为自然数。进一步的,所述PACE取值为10。本发明主要涉及多版本XML树编码方法,基于Dewy编码技术。针对XML树的更新 的步骤为1.初始化编码在原来的Dewey编码中,两个相邻兄弟节点的编码最后一位差值为1。在新的 RX-DDE编码中,当第一次为XML文档编码的时候,首先设定一个步长值PACE(PACE > 1), 它是两个相邻兄弟节点编码的最后一个数据的差值。2. RX-DDE编码对新插入XML节点的处理>作为某节点(非叶节点)的第一个孩子(firstchild)插入时,把原第一个子节 点编码的最后一位减去PACE,作为新插入XML节点的编码。>作为某节点(非叶节点)的最后一个孩子(Iastchild)插入时,把原最后一个子 节点编码的最后一位加上PACE,作为新插入XML节点的编码。>作为某叶节点的孩子插入,把该叶节点编码后面增加一个成分1作为新插入XML 节点的编码,该叶结点成为父节点,新插入节点称为新的叶节点。>两兄弟之间插入,两兄弟编码的第一位相等,且最后一位步长之内的整数没有用 完的情况下,设左兄弟编码aia2. . am,右兄弟编码bib2. . . bm,且 =bi (1彡i彡m-1),设新 插入节点的编码是C1C2. ..Cm,则Ci =,且Cm= (am+bm)/2。其中,m为自然 数。>两兄弟之间插入,两兄弟编码的第一位相等,且最后一位步长之内的整数 已经用完的情况下,设左兄弟编码a2……am,右兄弟编码bi.b2……bm,且 = h (1彡i彡m-1)。设新插入节点编码为Cl. C2……cm,则Ci = ai+bi (1彡i彡m)。>两兄弟之间插入,两兄弟编码的第一位不相等的情况下,设左兄弟编码 B1. a2……am,右兄弟编码办.b2……bm,且ai乒bi (1彡i彡m-1)。设新插入节点编码为C1. C2.....cm,贝Ij Ci = aj+bi (1 < i < m)。与现有技术相比,本发明的积极效果为本发明方法所进行的实验涉及集中式插入和分散式插入,分别比较Dewy编码和 RX-DDE编码方式的效率,RX-DDE编码的时间效率都更高。


图1是RX-DDE初始编码;图2是RX-DDE对新插入节点的处理过程。
具体实施例方式图2是RX-DDE对新插入节点的处理过程。1.在最左边插入如点G,只需把B点编码的最后一位减去PACE ;2.在最右边插入如点H,只需把D点编码的最后一位加上PACE ;3.作为叶节点的孩子插入如点I,把I的父节点(没有插入I之前是叶节点)编 码后面增加一个成分1 ;4.两兄弟之间插入,两兄弟编码的第一位相等,步长之内的整数没有用完的情况 如点N,在D和H之间插入,且D和H的编码第一位都是1,且D和H的编码最后一位之间还有 整数没用完(D的最后一位是21,H的最后一位是31,21和31之间还有整数可用)。在这种 情况下,左兄弟与右兄弟编码除了最后一位,其他位都相等。设左兄弟编码ai. a2. . . . . affl, 右兄弟编码bi. b2……bm,且ai = bjl彡i彡m-1)。新插入节点编码除了最后一位,其他
位也与左右兄弟编码相等。设新插入节点编码为Cl. C2.....cm,且ai = Ci (1彡i彡m-1),
编码最后一位cm = (am+bm) /2 ;5.两兄弟之间插入,两兄弟编码的第一位相等,步长之内的整数已经用完的情况 如点K,它在E和J之间插入(这时候还没有插入M),且E和J的编码第一位都是1,且E和 J的编码最后一位之间已经没有整数可用了(E的最后一位是1,J的最后一位是2,1和2之 间没有整数可用)。在这种情况下,沿用DDE的编码方式设左兄弟编码ai. a2. . . . . am,右 兄弟编码办.b2……bm,且 =h (1彡i彡m-1)。设新插入节点编码为Cl. C2……cm,贝IJ
Ci = aj+bj (1 < i < m)。 6.两兄弟之间插入,两兄弟编码的第一位不相等的情况如点M,它在E和K之间 插入,且E和K的编码第一位不相等(一个是1,一个是2)。设左兄弟编码ai.a2……affl, 右兄弟编码办.b2……bm,且ai乒h (1彡i彡m-1)。设新插入节点编码为Cl. C2……cm。 在这种情况下,也沿用DDE的编码方式Ci = ai+bi (1彡i彡m)。
权利要求
1.一种变步长XML编码方法,其步骤为1)设定XML文档编码的步长值为PACE,第一次为XML文档编码时采用步长PACE进行 编码;其中,PACE > 1 ;2)在后续某一次编码时,对于新插入的XML节点r,a)如果节点r作为某非叶节点j的第一个子节点插入时,则将节点j中原第一个子节 点编码最后一位减去PACE,作为节点r的编码;b)如果节点r作为节点j的最后一个子节点插入时,则将节点j中原最后一个子节点 编码最后一位加上PACE,作为节点r的编码;c)节点r在两兄弟节点之间插入时;如果两兄弟节点编码第一位相等且最后一位PACE 内的整数没有用完,则节点r编码最后一位取值介于两兄弟节点编码最后一位之间的一整 数;如果两兄弟节点编码第一位相等且最后一位PACE内的整数已用完,则采用DDE的编码 方法对新插入节点r进行编码;如果两兄弟节点编码第一位不相等,则采用DDE的编码方法 对节点r进行编码;d)如果节点r作为某叶节点k的子节点插入,则将叶节点k编码后面增加一成分1作 为节点r的编码。
2.如权利要求1所述的方法,其特征在于所述1)中,第一次编码为XML文档编码时采 用步长为PACE的Dewey编码方法进行编码。
3.如权利要求2所述的方法,其特征在于所述c)中,设节点r的编码为(C1C2...cm), 节点r为在左兄弟编码( . . am)与右兄弟编码(I^b2. . . bm)之间插入;如果 = h (1彡i彡m-1)且最后一位PACE内的整数没有用完,则Ci = (1彡i彡m-1),且cm为介 于\与bm之间的一整数;其中,m为自然数。
4.如权利要求3所述的方法,其特征在于所述Cm=(am+bm)/2。
5.如权利要求2或3所述的方法,其特征在于所述c)中,设节点r的编码为 (C1C2. . . cm),节点r为在左兄弟编码( . . am)与右兄弟编码(bib2. . . bm)之间插入;如果EIi =h (1彡i彡m-1)且最后一位PACE内的整数已用完,则Ci = B^bi (1彡i彡m);其中,m 为自然数。
6.如权利要求2或3所述的方法,其特征在于所述c)中,设节点r的编码为 (C1C2. · · cm),节点r为在左兄弟编码(B1B2. · am)与右兄弟编码(仏· · · bm)之间插入;如果 Bi^ i ^ m-1),则 Ci = Vbi (1 彡 i 彡 m);其中,m 为自然数。
7.如权利要求1或2或3所述的方法,其特征在于所述PACE取值为10。
全文摘要
本发明公开了一种变步长XML编码方法,属于数据库存储领域。本方法为1)设定XML文档编码的步长值为PACE;2)对于新插入的XML节点r如果r作为某非叶节点j的第一个子节点插入时,则将j中原第一个子节点编码最后一位减去PACE作为r的编码;如果r作为j的最后一子节点插入时,则将j中原最后一子节点编码最后一位加上PACE作为r的编码;r在两兄弟节点之间插入时,如果两兄弟节点编码第一位相等且最后一位PACE内的整数没有用完,则r编码最后一位为PACE内一整数,否则采用DDE方法对r进行编码;如果r作为某叶节点k的子节点插入,则将k编码后面增加一成分1作为r的编码。本方法大大提高了编码效率。
文档编号G06F17/30GK102096706SQ201110001240
公开日2011年6月15日 申请日期2011年1月5日 优先权日2011年1月5日
发明者包小源, 杨冬青, 王腾蛟, 郭少松, 郭思祺 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1