用于压缩XML文档的方法和系统技术方案

技术编号:8539461 阅读:145 留言:0更新日期:2013-04-05 05:24
提供了一种用于更有效率地存储粉碎的XML文档的方法和装置。该方法和装置利用压缩能力和存储称为列优先格式的关系数据的形式来以粉碎形式存储XML文档。针对每个XML文档单独分析为粉碎的XML文档存储的列值,以确定是否以列优先格式存储特定的列以及使用什么压缩技术(如果有的话)。

【技术实现步骤摘要】
【国外来华专利技术】用于压缩XML文档的方法和系统优先权本申请根据巴黎公约第4条要求享有2010年6月1日提交的、题为“TechniqueforCompressingXMLIndexes”的美国申请No.12/791,337的优先权。本申请涉及到:(1)VineetMarwah等人2010年4月28日提交的、题为“CompressionAnalyzer”、代理文档号50277-3695的美国申请No.12/769,508;(2)VikramKapoor等人2010年4月28日提交的、题为“StoringCompressionUnitsInRelationalTables”,代理文档号为50277-3696的美国申请No.12/769,205;(3)AmitGanesh等人2009年11月12日提交的、题为“StructureofHierarchicalCompressedDataStructureforTabularData”,代理文档号为50277-3672的美国申请No.12/617,669;以及(4)2009年4月30日提交的临时申请61/174,447。在这里通过引用将这段中提到的所有专利申请的内容并入本文。因此,申请人解除对母申请或其处理历史中权利要求范围的任何弃权,并告知USPTO本申请中的权利要求可以比母申请中的任何权利要求更宽。
本专利技术涉及数据库系统,具体而言,涉及更有效地在数据库系统中存储XML数据。
技术介绍
本节中描述的方法是可以寻求、但未必是先前已经想到或寻求的方法。因此,除非另有陈述,不应假设本节中描述的任何方法仅仅由于包括在本节中就限制为现有技术。可扩展标签语言(XML)是用于表达数据的万维网协会(W3C)标准。很多应用被设计成以XML文档的形式输出数据。XML数据包括形成分级结构的结构化数据项。在XML中,由打开标签和关闭标签对称为元素的数据项划界。元素还可以包括在元素的打开的标签中指定的属性。元素的标签之间的文本可以表示任何种类的数据值,例如字符串、日期或整数。元素可以具有一个或多个子女。参照与用于论述系谱树的那些类似的方面论述XML格式的数据的所得分级结构。例如,子元素被说成起源于其父元素或其父元素所起源的任何元素。父元素被说成是其自己的任何子元素或其后代元素之一的祖先元素。总起来讲,元素连同其属性和后代,称为树或子树。随着XML的增长和普及,很多关系数据库系统增加了对存储、管理和查询XML内容的支持。术语关系数据库系统是指支持数据处理的关系模型的任何数据库系统,包括可以支持其他数据处理模型,例如对象关系和各种XML标准模型(例如XQuery,XPath)的数据库系统。存储XML文档的关系数据库系统可以在表格的分开的行中存储各个元素。这里将这样的文档称为粉碎的(shredded)文档。将XML文档分成离散元素值(或其表达)以存储在保存表达XML文档和/或其节点的数据的行中的过程,称为粉碎XML文档。可以将XML文档完全粉碎到对象关系存储器中、部分粉碎或存储在LOB存储器中并由XML索引定位。如果完全粉碎,则可以由数据库中以关系方式存储的数据完整重建XML文档。如果部分粉碎,则以混合形式在LOB存储器中存储文档,至少一部分文档以对象关系形式,例如以XML索引存储。尽管XML索引中存储的部分可能不表示整个文档,但XML索引可用于高效率地访问被索引的文档的那些部分。可以对来自XML文档的特定字段进行索引,而在索引期间可以忽略来自XML文档的其他字段。在粉碎XML文档并至少部分以对象关系形式存储时,可以在相同或不同列中的不同行中,或在相同或不同行中的不同列中存储XML文档的值。以对象关系方式存储的值可以包括针对文档的为索引选择的特定字段的值,并可以排除文档的没有为索引选择的其他字段的值。在一个示例中,在索引中同一行中不同列中存储文档中的给定字段的几个值。在另一个示例中,在索引中同一列中不同行中存储文档中的给定字段的几个值。XML文档的粉碎版本可以具有比以其他形式,例如基于文本的文件存储器中存储的XML文档大得多的存储覆盖区。于是需要更有效率地存储粉碎的XML文档。数据库和数据库服务器通常,服务器,例如数据库服务器是集成软件部件和计算资源分配的组合,计算资源例如存储器、节点和节点上用于执行集成软件部件,其中软件和计算资源的组合专用于代表服务器的客户端提供特定类型的功能。数据库服务器支配并促进访问特定的数据库,处理客户端要访问数据库的请求。数据库包括存储在持久性存储机构,例如一组硬盘上的数据和元数据。例如,可以根据关系型和/或对象关系型数据库构造,以逻辑方式在数据库中存储这样的数据和元数据。数据库元数据定义数据库对象,例如表格、对象表、视图或复杂类型,例如对象类型,重要的是表函数。向数据库服务器发出SQL数据定义语言(“DDL”)指令以创建或配置数据库对象。通常,在数据库之内以逻辑方式将数据布置成一个或多个数据容器。每个容器都包含记录,并将每个记录之内的数据组织成一个或多个字段。在关系数据库系统中,通常将数据容器称为表格,将记录称为行,将字段称为列。在面向对象的数据库中,通常将数据容器称为对象类型或类,将记录称为对象,将字段称为属性。其他数据库体系结构可以使用其他术语。实施本专利技术的系统不限于任何特定类型的数据容器或数据库体系结构。不过,为了解释的目的,这里使用的示例和术语应当典型地与关系型或对象关系型数据库相关联。于是,这里应当使用术语“表格”、“行”和“列”分别指代数据容器、记录和字段。数据块尽管在数据容器中以逻辑方式布置数据库,但那些容器自身通常存储于例如硬盘上的一个或多个数据块中。因此,例如,尽管大部分用户将向数据库服务器发出通过查询表格、行和列来查询数据的指令或请求,但该数据实际存储在作为数据块的集合的数据库中。通过利用各种存储的元数据、索引和报头,数据库服务器能够将这些数据块之内的数据解释为逻辑表、行和列。数据块是为存储用于一条或多条数据库记录(例如行)或其部分的原始数据而分配的存储空间基本单位。典型地,数据库系统被配置成从持久性存储器和易失性存储器中以不小于数据块的单位读写数据库记录。在需要检索来自数据块的记录时,将整个数据块读入数据库系统用于暂时存储数据块的存储器中缓冲器中。在很多数据库中,数据块全部是普通大小。数据库管理员基于若干考虑选择这个大小。不过,表格常常包括比能够装入在单个数据块中的数据更多的数据。于是,表格常常跨过很多数据块。例如,图8示出了如何可以在示例数据块820和830中存储表格800。因为数据块820和830都是小于表格800的预定义大小,所以不能在单个数据块中装入表格800。于是,在两个数据块中存储表格800。通常将数据块细分成一个或多个这里描述为“数据块行”的连续片段。在由数据库服务器解释时,每个数据块行从至少一部分表格产生数据。如名称“数据块行”所暗示的那样,单个数据块行保持与表格的单行对应的原始数据。不过,在表格行和数据块行之间并非始终有一一对应关系。例如,表格800由组织成列811-815的行801-805构成。表格行801-805的数据存储在数据块行821-824和831-832中。具体而言,每个数据块行821-824和831-832包本文档来自技高网...
用于压缩XML文档的方法和系统

【技术保护点】

【技术特征摘要】
【国外来华专利技术】2010.06.01 US 12/791,3371.一种用于存储XML文档的方法,所述方法包括:向第一表格中加载多个XML文档的每个XML文档,在所述第一表格中以粉碎形式存储XML文档,其中加载所述每个XML文档包括:产生多个列的列值,所述列值要存储在所述第一表格中的相应的多个行中;分析所述列值;基于所述分析所述列值,对于所述多个列的每个列,做出对于所述每个列的行存储格式的确定,所述做出对于所述每个列的行存储格式的确定包括:确定是以列优先还是以行优先格式存储所述每个列的相应的列值,以及确定是否使用压缩技术来压缩所述相应的列值;以及根据对于所述多个列做出的所述行存储格式和压缩技术的确定在所述第一表格中存储所述列值;以及其中,所述多个XML文档包括第一XML文档和第二XML文档;其中对于所述第一XML文档并且对于所述多个列的特定列,所述特定列包括从所述第一XML文档生成的第一特定列值,对于所述特定列的行存储格式的相应确定包括以列优先格式存储所述特定列的所述第一特定列值;并且其中对于所述第二XML文档并且对于所述多个列的所述特定列,所述特定列包括从所述第二XML文档生成的第二特定列值,对于所述特定列的行存储格式的相应确定包括以行优先格式存储所述特定列的所述第二特定列值。2.根据权利要求1所述的方法,其中对于所述多个列的所述特定列,所述行存储格式的确定包括:对于所述第一XML文档,所述行存储格式的确定包括使用第一压缩技术来存储所述特定列的相应的列值;以及对于所述第二XML文档,所述做出行存储格式的确定包括使用与所述第一压缩技术不同的另一个压缩技术来存储所述特定列的相应的列值。3.根据权利要求1所述的方法,其中数据库服务器管理对所述第一表格的访问,其中所述方法还包括在第二表格中存储所述多个XML文档;其中所述第一表格的所述多个列包括:存储所述多个XML文档中的节点的节点值的列,以及存储指示所述第二表格中的存储所述多个XML文档的一个XML文档的行的值的列。4.根据权利要求1所述的方法,其中在压缩单元中存储所述第一表格的数据。5.根据权利要求1-4中的任一项所述的方法,其中对于所述第一表格的给定行,所述多个列的每个列存储针对所述多个XML文档的相应XML文档的节点的列值;其中所述第一表格的第一多个行存储针对所述第一XML文档的数据;其中所述第一表格的第二多个行存储针对所述第二XML文档的数据;其中对于所述第一多个行和所述第二多个行,以列优先格式存储所述多个列的特定列;其中对于所述第一表格的所述第一多个行,利用第一压缩技术压缩所述特定列中的所述值;以及其中对于所述第一表格的所述第二多个行,利用第二压缩技术压缩所述特定列中的所述值。6.根据权利要求5所述的方法,其中所述第一表格的第三多个行存储针对第三XML文档的数据;并且其中对于所述第三多个行,不以列优先格式存储所述特定列。7.一种用于存储XML文档的计算机系统,包括:用...

【专利技术属性】
技术研发人员:S·查德拉塞卡N·阿格尔沃
申请(专利权)人:甲骨文国际公司
类型:
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1