用于有效的xml处理的混合二进制xml存储模型的制作方法

文档序号:6484487阅读:324来源:国知局
用于有效的xml处理的混合二进制xml存储模型的制作方法
【专利摘要】提供用于以混合导航/串流格式存储XML文档的方法中,以允许有效地存储和处理XML数据上的查询,该方法提供导航和串流两者的益处,并且改善每个的缺点。将存储的各XML文档被独立地分析,以确定对于预期的访问模式优化数据的处理的可导航和可串流存储格式的组合。
【专利说明】用于有效的XML处理的混合二进制XML存储模型
【技术领域】
[0001]本发明涉及存储XML文档以用于有效检索和导航。
【背景技术】
[0002]XML
[0003]可扩展标记语言(XML)是用于表示数据的万维网协会(W3C)标准。许多应用被设计为输出XML文档形式的数据。可以利用各种技术以将数据从这种XML文档存储到关系型数据库中。
[0004]XML数据包含形成层次的结构化数据项。在XML中,称为要素的数据项由开始标签和结束标签定界。要素还可包含在要素的开始标签中规定的属性。要素的标签之间的文本可表示诸如串、日期或整数的任意类型的数据值。要素可具有一个或更多个孩子。在与用于讨论家庭树的方面类似的方面中讨论XML格式化数据的得到的分层结构。例如,可以说孩子要素从其父亲要素或从其父亲下来的任何要素下来。可以说父亲要素是自身的任何孩子要素或者其后代要素中的一个的祖先要素。要素连同其属性和后代被统称为树或子树。具有父亲/孩子关系的节点被称为具有中间分层关系,原因是在它们之间可存在直接导航路径。
[0005]XML数据可通过使用对象关系型存储或二进制XML BLOB存储或CLOB存储被存储于关系型数据库中,原因是这些数据库可非常有效地操作数据。但是,虽然可在从父亲到孩子沿XML层次向下有效地搜索对象关系型存储或二进制XML存储,但是,这些存储结构不适于执行要求沿层次向上遍历祖先链接或者同胞遍历的分层导航。
[0006]用于XML的存储和查询系统
[0007]使用各种类型的存储机构以存储XML文档。可通过将文档切碎成各单个要素并在表格的各单个列中存储要素,将XML文档存储于关系型数据库中。在数据库服务器中,XML文档可存储于表的行中,并且,可在行中的单独的列中存储XML文档的节点。
[0008]作为替代方案,整个XML文档可作为大对象(LOB)存储于数据库表的列中。大对象列可存储存储为文本的字符大对象(CL0B),或者也可存储为二进制大对象(BLOB)。二进制对象可包含XML数据的令牌化串流。这种用于XML文档的令牌化串流可替代性地存储于易失性存储器中。
[0009]XML 查询和 XPATH
[0010]对于存储XML数据的数据库系统来说,能够通过使用XML查询语言执行查询是十分重要的。XML查询语言(XQuery)和XML路径语言(XPath)是查询语言的重要标准,它们可与SQL结合使用以表达各种有用查询。XPath在这里加入作为参考并且可在写A http://www.w3.0rg/TR/xpath 时得到的 XML Path Language (XPath) , versionl.0(W3C Recommendationl6Novemberl999)以及在这里加入作为参考并且可在写入http://www.w3.0rg/TR/xpath 时得到的 XMP Path Language (XPath) , 2.0 (W3CRecommendation 23 January 2007)中被描述。XQuery在这里加入作为参考并在写A http://www.w3.0rg/TR/xquery 时得到的 XQueryl.0:An XML Query Language (W3CRecommendation23January2007)中被描述。并且,存在 XQuery 脚本语言:http://www.w3.0rg/TR/xquery-sx-10/ο
[0011]路径表达
[0012]XML文档的结构在XML文档内的节点之间建立父亲-孩子关系。XML文档中的节点的“路径”反映从“根”节点到特定节点的一系列的父亲-孩子链接。例如,在表1所示的示例文档中,由于“UnitPrice”是“Part”节点的孩子、“Part”节点是“Lineltem”节点的孩子、而“Line Item” 节点是“Line Items” 节点的孩子并且“Line Items” 节点是“ PurchaseOrder ”节点的孩子,因此,到 “UnitPrice” 节点的路径是 /PurchaseOrder/Lineltems/Lineltem/Part/UnitPrice。
[0013]关于作为导航的开始点的称为“语境”的特定节点评估路径表达。通过使用路径轴(“.”、“/”、“//”和.,,)规定导航。这些轴中的每一个选择一个或更多个节点,这些节点然后进一步基于什么名称测试或节点测试跟随轴被过滤。
[0014]
<PurchaseOrder>
<Shippinglnstnictions>
<nam e>Michael L.Allen</name>
<address>300 Oracle Parkway Redwood Shores CA 94065 USA<address>
<telephone>650 506 7300</teiephone>
</ShippingInstructions>
<Reference>ALLEN-201102109392822PDT>
<LineItems>

^"Line item

ItemNumbeF=” I ”>

<Description>Robocop</Description>

<Part

Id-715515009324"

UnkPrke=”39.95”

Quaiitity=”4” />
</LineIfem>

<Line Item

kem\umber::::‘'2”>

<Description>Life of Brian</Descriptioii>

<Pait

ld=”71551501032CT

UiAPrice=”39.95”

Qimnthy=”2” />
</Lineltem>
</LineItems>
</PurchaseOrder>
[0015]表1:示例购买订单文档
[0016]XPath轴和名称/节点测试的子集包含:
[0017]
【权利要求】
1.一种用于存储多个文档的XML文档的方法,包括: 对于XML文档,在永久仓库中存储所述XML文档的包括可导航表示和可串流表示的表示; 其中,所述XML文档包括分层关系的节点的树,所述节点的树的各节点与所述节点的树中的至少一个其它节点具有中间分层关系; 其中,所述可串流表示和可导航表示包含来自所述节点的树的节点; 其中,所述可串流表示包含来自所述节点的树的不包含于所述可导航表示中的节点; 其中,包含于所述可导航表示中的节点的各节点包含对于所述各节点具有中间分层关系的节点的指针; 其中,所述可串流表示中的节点的至少一部分按照文档次序; 其中,通过一个或更多个计算装置执行这些步骤。
2.根据权利要求1的方法,其中,对于一个或更多个节点,所述可导航表示包含以下指针中的至少一个: a)对于父亲节点的指针,其中,所述父亲节点包含于所述可导航表示内; b)对于同胞节点的指针,其中,所述同胞节点包含于所述导航表示内;以及 c)对于孩子节点的指针,其中,所述孩子节点包含于所述可导航表示内。
3.根据权利要求1的方法,其中,所述可串流表示包含所述XML文档中的所有节点。
4.根据权利要求1的方法,其中,在所述XML文档中存在不包含于所述可串流表示中的至少一个节点。
5.根据权利要求1的方法,其中,对于包含于所述可导航表示中的一个或更多个节点中的各节点,所述可导航表示包含对于孩子节点的孩子指针,其中,用于所述一个或更多个节点的所述各节点的所述孩子节点包含于所述可串流表示中,并且,所述孩子节点不存储于所述可导航表示中。
6.根据权利要求1的方法,其中,对于包含于所述可导航表示中的一个或更多个节点中的各节点,所述可导航表示包含对于同胞节点的同胞指针,其中,用于所述一个或更多个节点的所述各节点的所述同胞节点包含于所述可串流表示中,并且,所述同胞节点不存储于所述可导航表示中。
7.根据权利要求1的方法,其中,一个或更多个节点包含于所述可导航表示和所述可串流表不两者中;并且, 其中,对于所述一个或更多个节点的各节点,所述可导航表示包含对于包含于所述可串流表示中的所述各节点的指针。
8.根据权利要求1的方法,其中,一个或更多个节点包含于所述可导航表示中并且不包含于所述可串流表示中;并且, 对于所述一个或更多个节点的各节点,所述可导航表示包含对于与所述可导航表示分开存储的文本段的指针。
9.根据权利要求1的方法, 其中,所述XML文档是符合XML方案的第一 XML文档和符合所述XML方案的第二 XML文档; 其中,对于特定的XPath表达,与所述第一 XML文档中的特定的XPath表达匹配的至少一个节点包含于所述第一 XML文档的可导航表示内,并且,所述第二 XML文档中的与特定的XPath表达匹配的至少一个节点不包含于所述第二 XML文档的可导航表示内。
10.根据权利要求1的方法,还包括评估路径表达,其中,评估路径表达包括遍历所述可导航表示以检索对于所述可串流表示中的某个节点的指针,并且使用对于所述可串流表示中的某个节点的指针来访问所述可串流表示中的所述节点。
11.根据权利要求10的方法,其中,评估路径表达还包括:在访问所述可串流表示中的某个节点之后,从所述可串流表示检索对于所述可导航表示中的另一节点的指针,使用所述可导航表示中的节点以进一步遍历所述可导航表示。
12.一种用于确定多个XML文档中的XML文档内的节点的存储表示的方法,包括: 对于所述节点中的各节点,至少基于以所述各节点为根的子树的特性确定所述各节点的存储表不; 其中,确定所述各节点的存储表示还包括: 确定以所述各节点为根的子树的特性是否满足第一准则; 响应确定以所述各节点为根的子树的特性满足第一准则,确定在可导航存储中存储所述各节点; 其中,通过一个或更多个计算装置执行所述方法的这些步骤。
13.根据权利要求12的方法,其中,确定以所述各节点为根的子树的特性是否满足第一准则还包括确定在以所述各节点为根的子树上评估的合适性度量是否超过阈值。
14.根据权利要求13的`方法,其中,所述合适性度量至少基于包含于子树中的节点的数量和由所述子树的内容占据的空间的量。
15.根据权利要求13的方法,其中,所述合适性度量至少基于计算机的处理速度或I/O速度中的一个。
16.根据权利要求13的方法,其中,所述阈值基于以下方面中的至少一个: a)手动配置;和 b)基于评估历史查询访问模式和在所述历史查询访问模式中访问的文档的集合的节点的特性的自动确定。
17.一种用于向导航存储添加节点的方法,包括: 响应解析XML文档,从多个XML文档的XML文档接收第一令牌; 确定所述第一令牌是第一 XML要素的开始; 在可导航存储内对于表示所述第一 XML要素的第一节点分配第一空间量; 从所述XML文档接收第二令牌; 响应确定所述第二令牌表示第二 XML要素的开始,在所述可导航存储内对于第二节点分配第二空间量; 响应确定所述第二令牌表示所述第一 XML要素的结束,确定是否在可导航存储中存储所述第一节点; 响应确定不在所述可导航存储中存储所述第一节点,从所述可导航存储解除分配所述第一空间量; 其中,通过一个或更多个计算装置执行所述方法的这些步骤。
18.根据权利要求17的方法,还包括:确定第二令牌是第二要素的开始,并且接收作为所述第二要素的结束的第三令牌; 确定所述第二节点应被存储于可导航存储中。
19.根据权利要求17的方法,还包括更新所述第一节点中的数据,以包含节点的数量的计数和所述第二节点的子树的尺寸。
20.一种存储指令的计算机可读存储介质,其中,所述指令在被一个或更多个处理器执行时导致执行在权利要求1~19中的任一项中记载的方法。
【文档编号】G06F17/30GK103493043SQ201180064212
【公开日】2014年1月1日 申请日期:2011年12月5日 优先权日:2010年12月6日
【发明者】S·伊蒂库拉, B·斯特哈尼卡姆, N·阿格尔沃 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1