CN104484337A - Xml文档的存储方法 - Google Patents

Xml文档的存储方法 Download PDF

Info

Publication number
CN104484337A
CN104484337A CN201410663532.3A CN201410663532A CN104484337A CN 104484337 A CN104484337 A CN 104484337A CN 201410663532 A CN201410663532 A CN 201410663532A CN 104484337 A CN104484337 A CN 104484337A
Authority
CN
China
Prior art keywords
node
path
code
xml document
document
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410663532.3A
Other languages
English (en)
Other versions
CN104484337B (zh
Inventor
鲍亮
张静
黄鹏
张强
衣凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201410663532.3A priority Critical patent/CN104484337B/zh
Publication of CN104484337A publication Critical patent/CN104484337A/zh
Application granted granted Critical
Publication of CN104484337B publication Critical patent/CN104484337B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明提供一种XML文档的存储方法。该方法有效利用云计算平台上分布式存储系统HBase,对于具备小型、格式相似特征的海量XML文档的存储问题提出一种新的存储方法。在新的存储方法中,本发明提出一种海量XML到HBase的双向数据映射模型,在构造该模型过程中,提出一种集路径信息和节点位置信息为一体的新的XML文档节点编码方式,该编码方式既拥有优异的节点关系判断能力,又在一定程度上解决了传统XML编码方式在编码更新方面存在的不足,同时为相似结构的海量XML的压缩存储提供良好的支持。

Description

XML文档的存储方法
技术领域
本发明涉及数据库技术,尤其涉及一种可扩展标记语言(eXtensibleMarkup Language,XML)文档的存储方法。
背景技术
XML凭借其自描述性、可扩展性和半结构化等特点,已经成为最受欢迎的信息表示和数据交换的标准,并在各个领域得到了广泛的支持和应用。特别是在物联网环境下,数据大多为具有一定意义的数字或文本,而XML在语法上的良好的半结构化信息表达能力为其成为物联网数据交换标准提供了很好的基础。目前流行的注诸如BITXML、物理标示语言(Physical Markup Language,PML)等物联网数据交换标准都是以XML为基础。然而,数以百万计的传感器网络或智能终端时时刻刻都在产生数据,单个数据文件一般都比较小,这使得物理网后端的数据处理平台需要能够应对海量的小规模XML文件的存储和查询检索工作,传统的处理方式在性能等方面存在着瓶颈。
目前,国际上对于XML数据的存储和检索的研究主要集中在三个方面:第一种是以关系数据库为核心的数据存储和检索方式,这种方式一般需要将XML数据通过一定的映射方式转换为关系模型,并分别存储在关系数据库中,针对XML中的节点进行编码,通过关系约束将XML文件按照关系模型分表存储;这种方式对海量数据支持不足,当文件数量上升到一定程度,其性能瓶颈越凸显,此外由于采用关系映射,一定程度上会造成信息丢失;第二种是以NativeXML数据库为核心的数据存储和检索方式,这种方式由于是采用类似文件式的存储方式,仍然无法有效解决海量数据下的存储和检索;第三种则是在分布式环境下,采用非关系型数据库(NotOnly Structured Query Language,NoSQL)为核心的存储和检索方式,这种方式以其良好的可扩展性为立足点,能够对海量数据提供高性能的存储和查询支持,逐渐成为近年来研究的一个热点,然而,由于一般分布式环境的复杂性,带来了诸如负载平衡、灾备恢复等问题,在部署和维护上也较为复杂。
在此基础上,云计算技术开始飞速发展。由于云计算技术在海量数据存储和检索中的优势,采用云计算平台作为物联网后端的数据管理平台是一种趋势。然而,目前为止,还没有出现针对存储具备小型且格式相似特征的XML文档的成熟的解决方案。
发明内容
本发明提供一种XML文档的存储方法,以解决具备小型且格式相似特征的XML文档的存储问题。
本发明提供一种可扩展标记语言XML文档的存储方法,包括:
将所述XML文档D建模为文档树T;其中,文档树为T:T=(V,v0,E,Σ,P,<,path,parent,value),其中,V表示所述XML文档D中的节点集合,v0表示所述XML文档D中的根节点,E表示所述XML文档D中父子约束关系集合,有穷字母表Σ表示所述XML文档D中所有节点名称的集合,P表示所述XML文档D中祖先路径约束集合,<表示定义在P上的前缀关系,函数path:V→P,表示path(v)∈P返回节点v的祖先路径,函数parent:V→V表示返回节点v的父节点,其中函数value:Va|Ve→Vt表示value(v)返回在所述XML文档D中节点v的Text值;
按照预设编码规则对所述XML文档D进行编码;
按照预设映射规则对所述XML文档D进行映射存储。
如上所述的方法,其中:所述节点集合V=Attr∪Elem∪Text,其中,Attr表示所述XML文档D中所有属性节点的集合Va,Elem表示所述XML文档D中所有元素节点的集合Ve,Text表示所述XML文档D中所有文本节点的集合Vt,∪表示交集。
如上所述的方法,其中,所述按照预设编码规则对所述XML文档D进行编码,包括:
按照深度优先遍历方式,对所述XML文档D进行编码。
如上所述的方法,其中,所述预设编码规则包括:
节点编码code(v)=code(path(v)).iv;code(path(v))表示节点v对应的路径的路径编码,iv表示所述节点v在当前层的编码;
路径编码code(path(v))=code(u).ipath(v),其中,code(u)表示路径u对应的节点的父节点的节点编码,ipath(v)表示所述路径u在当前层的编码。
如上所述的方法,其中,所述节点编码之间、以及所述路径编码之间均存在前缀关系,具体为:
若code1与code2之间满足关系式code2=code1.i,则判断出code1是code2的前缀编码;其中,code1和code2分别表示两个所述节点编码,或者,code1和code2分别表示两个所述路径编码。
如上所述的方法,其中,在属性节点的属性名称前添加符号。
如上所述的方法,其中,所述预设编码规则具体包括:
所述根节点v0的编码为1,判断所述根节点v0所在路径是否包含所述属性节点;
若包含,则按照所述属性节点在所述文档树中的顺序进行编码,并记录到编码记录表中。
如上所述的方法,其中,所述按照所述属性节点在所述文档树中的顺序进行编码,具体包括:
对于则path(v)是节点parent(v)的第i个被编码的孩子路径种类;所述孩子路径种类是指所述节点v的所有孩子节点中,同名孩子节点的祖先路径所构成的路径种类;
判断节点v是否有孩子节点,若是,对所述节点v的所述孩子节点进行编码;
若判断出所述节点v没有所述孩子节点,则判断所述节点v是否有所述属性节点;
若判断出所述节点v有所述属性节点,则对所述属性节点进行编码;或者,若判断出所述节点v没有所述属性节点,判断所述节点v是否有兄弟节点;
若判断出所述节点v有所述兄弟节点,则对所述兄弟节点进行编码;或者,若判断出所述节点v没有所述兄弟节点,则按照所述节点v的祖先路径,逆向回退到存在未编码兄弟节点的祖先节点,对所述祖先节点的所述未编码兄弟节点进行编码;若按照所述节点v的所述祖先路径,逆向回退到所述根节点v0,则编码结束。
如上所述的方法,其中,所述按照所述属性节点在所述文档树中的顺序进行编码,还包括:
对于则参照所述编码记录表,判断所述节点v的path(v)与parent(v)之间,是否满足关系式:Code(parent(v))<Code(path(v));
若不满足,则重复所述判断节点v是否有孩子节点的操作;
若满足,则code(v)=(code(path(v))).j,其中j∈[1,2,3……)表示所述节点v是所述节点v对应祖先路径种类下的同名兄弟节点中从1开始计数的顺序,完成对所述节点v的编码后,重复所述判断节点v是否有孩子节点的操作。
如上所述的方法,其中,所述按照预设映射规则对所述XML文档D进行映射存储,包括:
提取所述XML文档D对应的所有code(v)和value(v),将不同code(v)的作为编码-值CodeToValue表的列名,将value(v)作为所述CodeToValue表中,与code(v)对应的列的列值,一个所述XML文档D对应所述CodeToValue表中的一行,并将所述XML文档D对应的文档名字作为行关键字;其中,所述CodeToValue表用于存放所述XML文档D中code(v)和对应的value(v);
提取所有的节点v∈V-Text对应的path(v)及code(v),将不同path(v)的作为路径-编码PathToCode表的列名,每个path(v)对应的所有code(v)用预设间隔符间隔,所述XML文档D对应一个所述PathToCode表,并作为数据库HBase中的一行进行存储;其中,所述PathToCode表用于存放所述XML文档D中path(v)和对应的code(v)。
本发明提供的XML文档的存储方法,有效利用云计算平台上分布式存储系统HBase,对于具备小型、格式相似特征的海量XML文档的存储问题提出一种新的存储方法。在新的存储方法中,本发明提出一种海量XML到HBase的双向数据映射模型,在构造该模型过程中,提出一种集路径信息和节点位置信息为一体的新的XML文档节点编码方式,该编码方式既拥有优异的节点关系判断能力,又在一定程度上解决了传统XML编码方式在编码更新方面存在的不足,同时为相似结构的海量XML的压缩存储提供良好的支持。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明XML文档的存储方法实施例一的流程图;
图2a为本发明XML文档的存储方法实施例中实例文档1对应的文档树的示意图;
图2b为本发明XML文档的存储方法实施例中实例文档2对应的文档树的示意图;
图3a为对图2a中的文档树进行编码后的示意图;
图3b为对图3a中的文档树进行编码后的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明XML文档的存储方法实施例一的流程图。如图1所示,本实施例提供的方法具体可以包括:
步骤101、将所述XML文档D建模为文档树T;其中,文档树为T:T=(V,v0,E,Σ,P,<,path,parent,value),其中,V表示所述XML文档D中的节点集合,v0表示所述XML文档D中的根节点,E表示所述XML文档D中父子约束关系集合,有穷字母表Σ表示所述XML文档D中所有节点名称的集合,P表示所述XML文档D中祖先路径约束集合,<表示定义在P上的前缀关系,函数path:V→P,表示path(v)∈P返回节点v的祖先路径,函数parent:V→V表示parent(v)返回节点v的父节点,其中函数value:Va|Ve→Vt表示value(v)返回在所述XML文档D中节点v的Text值。
具体的,所述节点集合V=Attr∪Elem∪Text,其中,Attr表示所述XML文档D中所有属性节点的集合Va,Elem表示所述XML文档D中所有元素节点的集合Ve,Text表示所述XML文档D中所有文本节点的集合Vt,∪表示交集。
v0表示文档D中的根元素,v0∈V,v0作为对应的文档树的根节点;E表示文档D中父子约束关系的集合,是一个二元关系,即且E={(u,v)|u∈V,v∈V,u是v的父节点}。若可简写为u→v;有穷字母表Σ是D中所有节点名称的集合。
P是文档D中祖先路径约束的集合,P是一个多元关系,即P={(v0,v1,v2,...,vn)|(vi,vi+1)∈E,1≤i<n}∪{v0},表示V中所有节点的路径构成的集合。具体来说,其祖先路径约束(v0,v1,v2,...,vn)∈P表示从根节点v0到节点vn的连续父子约束,即v0→v1,v1→v2,...,vn-1→vn,简写为v0→v1→v2→...→vn。使用函数path:V→P返回XML节点的祖先路径约束,即当v∈V,path(v)∈P。
<是定义在P上的前缀关系,<={(P1,P2)|P1=v0→v1→v2→...→vm,P2=P1→vm+1,P1∈P,P2∈P}。若简写为P1<P2。函数path:V→P,path(v)∈P返回节点v的祖先路径。函数parent:V→V,parent(v)返回节点v的父节点,注意即若u→v,则parent(v)=u。函数value:Va|Ve→Vtvalue(v)返回在XML文档中节点v的Text值。
对于示例文档1进行建模为文档树后,可以表示为如图2a所示。其中,示例文档1为:
对于示例文档2进行建模为文档树后,可以表示为如图2b所示。其中,示例文档2为:
步骤102、按照预设编码规则对所述XML文档D进行编码。
具体的,本步骤中,按照深度优先遍历方式,对所述XML文档D中Va|Ve节点进行编码。根据深度优先编码方式的特点,可得如下结论:
进行编码时,其父节点parent(v)一定已经编码;若P1<P2,则对P2进行编码时,P1一定已经编码。
首先,定义编码函数code:Va|Ve|P→Code,其中Code表示Va|Ve|P对应的编码。具体来说,code(Va|Ve)→Code表示当输入为节点Va|Ve时,输出值为节点对应的编码(简称节点编码),code(P)→Code表示当输入为某节点对应的祖先路径约束时,输出值为该祖先路径对应的编码,即路径编码。
其次,定义编码规则,在编码时,属性节点与元素节点同等对待,两者遵守相同的编码规则,唯一不同之处在于属性节点的命名规则是在属性名称前添加符号。
除根节点外的节点编码和路径编码均由三部分组成。即,节点编码code(v)=code(path(v)).iv;code(path(v))表示节点v对应的路径的路径编码,iv表示所述节点v在当前层的编码;所述节点v在当前层的编码表示所述节点v是同一祖先路径下的同名兄弟节点中从1开始计数的顺序i;路径编码code(path(v))=code(u).ipath(v),其中,code(u)表示路径u对应的节点的父节点的节点编码,ipath(v)表示所述路径u在当前层的编码;所述路径u在当前层的编码表示在所述路径u对应节点的父亲节点中,设定所有同名子路径作为一个路径种类,则所述路径u所对应的路径种类在所有兄弟路径中路径种类从1开始计数的路径种类顺序值i。
需要说明的是,所述节点编码之间、以及所述路径编码之间均存在前缀关系,具体为:若code1与code2之间满足关系式code2=code1.i,则判断出code1是code2的前缀编码;其中,code1和code2分别表示两个所述节点编码,或者,code1和code2分别表示两个所述路径编码。由于该定义与文档建立成文档树时定义的P上的前缀关系<实质性含义相同,所以此处也用<表示。表示为Code1<Code2。
所述预设编码规则具体包括:所述根节点v0的编码为1,判断所述根节点v0所在路径是否包含所述属性节点;若包含,则按照所述属性节点在所述文档树中的顺序进行编码,并记录到编码记录表中;可以理解的是,若所述根节点v0所在路径不包含所述属性节点,则编码结束。
具体的,对于则path(v)是节点parent(v)的第i个被编码的孩子路径种类;所述孩子路径种类是指所述节点v的所有孩子节点中,同名孩子节点的祖先路径所构成的路径种类;也就是说,若存在v→v1,v→v2,当v1和v2是同名节点时,path(v1)和path(v2)属于节点v的同一个孩子路径种类,当v1和v2不是同名节点时,path(v1)和path(v2)和属于节点v的不同的孩子路径种类。
判断节点v是否有孩子节点,若是,对所述节点v的所述孩子节点进行编码;
若判断出所述节点v没有所述孩子节点,则判断所述节点v是否有所述属性节点;
若判断出所述节点v有所述属性节点,则对所述属性节点进行编码;或者,若判断出所述节点v没有所述属性节点,判断所述节点v是否有兄弟节点;
若判断出所述节点v有所述兄弟节点,则对所述兄弟节点进行编码;或者,若判断出所述节点v没有所述兄弟节点,则按照所述节点v的祖先路径,逆向回退到存在未编码兄弟节点的祖先节点,对所述祖先节点的所述未编码兄弟节点进行编码;若按照所述节点v的所述祖先路径,逆向回退到所述根节点v0,则编码结束。
进一步地,对于则参照所述编码记录表,判断所述节点v的path(v)与parent(v)之间,是否存在前缀关系,即是否满足关系式:Code(parent(v))<Code(path(v));
若不满足,则重复所述判断节点v是否有孩子节点的操作;
若满足,则code(v)=(code(path(v))).j,其中j∈[1,2,3……)表示所述节点v是所述节点v对应祖先路径种类下的同名兄弟节点中从1开始计数的顺序,完成对所述节点v的编码后,重复所述判断节点v是否有孩子节点的操作。
按照本步骤对图2a所示的文档树进行编码的过程中,所产生的中间结果如图3a所示;按照本步骤对图2b所示的文档树进行编码的过程中,所产生的中间结果如图3b所示。
步骤103、按照预设映射规则对所述XML文档D进行映射存储。
本步骤中,所述按照预设映射规则对所述XML文档D进行映射存储,具体可以包括:
提取所述XML文档D对应的所有code(v)和value(v),将不同code(v)的作为编码-值CodeToValue表的列名,将value(v)作为所述CodeToValue表中,与code(v)对应的列的列值,一个所述XML文档D对应所述CodeToValue表中的一行,并将所述XML文档D对应的文档名字作为行关键字;其中,所述CodeToValue表用于存放所述XML文档D中code(v)和对应的value(v)。可以理解的是,如果code(v)不存在,则开辟一个新的列,如果code(v)已经存在,则直接存储value(v)作为列code(v)对应的值。
提取所有的节点v∈V-Text对应的path(v)及code(v),将不同path(v)的作为路径-编码PathToCode表的列名,每个path(v)对应的所有code(v)用预设间隔符间隔,所述XML文档D对应一个所述PathToCode表,并作为数据库HBase中的一行进行存储;其中,所述PathToCode表用于存放所述XML文档D中path(v)和对应的code(v)。
例如,对于示例文档1,提取示例文档1对应的所有的code(v)和对应的value(v)存入数据库Hbase的CodeToValue表中第一行。该行的数据可以如表一所示。
表一
列名 列值
1
1.1.1 2011
1.2.1
1.2.1.1.1 2011-05-31
1.2.1.2.1 P
1.2.1.2.2 P.S
1.2.1.3.1 Cloud computing
1.2.2
1.2.2.1.1 Sasikala1 1
1.2.2.2.1 2011-09-23
此时编码后的内存映射表值如表二所示。
表二
对于示例文档2,提取示例文档2对应的所有的code(v)和对应的value(v)存入数据库Hbase的CodeToValue表中第二行。该行的数据可以如表三所示。
表三
列名 列值
1
1.1.1 2012
1.2.1
1.2.1.1.1 2012-05-1
1.2.1.2.1 A
1.2.1.2.2 B
1.2.1.2.3 C
1.2.1.3.1 Cloud computing
1.2.2.1.1
1.3.1
1.3.1.1.1 M
1.3.1.2.1 Thinking in JAVA
1.2.2
1.2.2.2.1 2012-09-3
此时编码后的内存映射表值如表四所示。
表四
需要说明的是,所有XML文档共同构建同一个PathToCode映射表,并作为实际HBase数据库中的一行存储。即,将内存映射表二和表四分别作为一行存储在数据库HBase中的PathToCode表中。
本实施例的技术方案,有效利用云计算平台上分布式存储系统HBase,对于具备小型、格式相似特征的海量XML文档的存储问题提出一种新的存储方法。在新的存储方法中,本实施例提出一种海量XML到HBase的双向数据映射模型,在构造该模型过程中,提出一种集路径信息和节点位置信息为一体的新的XML文档节点编码方式,该编码方式既拥有优异的节点关系判断能力,又在一定程度上解决了传统XML编码方式在编码更新方面存在的不足,同时为相似结构的海量XML的压缩存储提供良好的支持。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种可扩展标记语言XML文档的存储方法,其特征在于,包括:
将所述XML文档D建模为文档树T;其中,文档树为T:T=(V,v0,E,Σ,P,<,path,parent,value),其中,V表示所述XML文档D中的节点集合,v0表示所述XML文档D中的根节点,E表示所述XML文档D中父子约束关系集合,有穷字母表Σ表示所述XML文档D中所有节点名称的集合,P表示所述XML文档D中祖先路径约束集合,<表示定义在P上的前缀关系,函数path:V→P,表示path(v)∈P返回节点v的祖先路径,函数parent:V→V表示返回节点v的父节点,其中函数value:Va|Ve→Vt表示返回在所述XML文档D中节点v的Text值;
按照预设编码规则对所述XML文档D进行编码;
按照预设映射规则对所述XML文档D进行映射存储。
2.根据权利要求1所述的方法,其特征在于:
所述节点集合V=Attr∪Elem∪Text,其中,Attr表示所述XML文档D中所有属性节点的集合Va,Elem表示所述XML文档D中所有元素节点的集合Ve,Text表示所述XML文档D中所有文本节点的集合Vt,∪表示交集。
3.根据权利要求2所述的方法,其特征在于,所述按照预设编码规则对所述XML文档D进行编码,包括:
按照深度优先遍历方式,对所述XML文档D进行编码。
4.根据权利要求3所述的方法,其特征在于,所述预设编码规则包括:
节点编码code(v)=code(path(v)).iv;code(path(v))表示节点v对应的路径的路径编码,iv表示所述节点v在当前层的编码;
路径编码code(path(v))=code(u).ipath(v),其中,code(u)表示路径u对应的节点的父节点的节点编码,ipath(v)表示所述路径u在当前层的编码。
5.根据权利要求4所述的方法,其特征在于,所述节点编码之间、以及所述路径编码之间均存在前缀关系,具体为:
若code1与code2之间满足关系式code2=code1.i,则判断出code1是code2的前缀编码;其中,code1和code2分别表示两个所述节点编码,或者,code1和code2分别表示两个所述路径编码。
6.根据权利要求5所述的方法,其特征在于,在属性节点的属性名称前添加符号。
7.根据权利要求6所述的方法,其特征在于,所述预设编码规则具体包括:
所述根节点v0的编码为1,判断所述根节点v0所在路径是否包含所述属性节点;
若包含,则按照所述属性节点在所述文档树中的顺序进行编码,并记录到编码记录表中。
8.根据权利要求7所述的方法,其特征在于,所述按照所述属性节点在所述文档树中的顺序进行编码,具体包括:
对于则path(v)是节点parent(v)的第i个被编码的孩子路径种类;所述孩子路径种类是指所述节点v的所有孩子节点中,同名孩子节点的祖先路径所构成的路径种类;
判断节点v是否有孩子节点,若是,对所述节点v的所述孩子节点进行编码;
若判断出所述节点v没有所述孩子节点,则判断所述节点v是否有所述属性节点;
若判断出所述节点v有所述属性节点,则对所述属性节点进行编码;或者,若判断出所述节点v没有所述属性节点,判断所述节点v是否有兄弟节点;
若判断出所述节点v有所述兄弟节点,则对所述兄弟节点进行编码;或者,若判断出所述节点v没有所述兄弟节点,则按照所述节点v的祖先路径,逆向回退到存在未编码兄弟节点的祖先节点,对所述祖先节点的所述未编码兄弟节点进行编码;若按照所述节点v的所述祖先路径,逆向回退到所述根节点v0,则编码结束。
9.根据权利要求8所述的方法,其特征在于,所述按照所述属性节点在所述文档树中的顺序进行编码,还包括:
对于则参照所述编码记录表,判断所述节点v的path(v)与parent(v)之间,是否满足关系式:Code(parent(v))<Code(path(v));
若不满足,则重复所述判断节点v是否有孩子节点的操作;
若满足,则code(v)=(code(path(v))).j,其中j∈[1,2,3……)表示所述节点v是所述节点v对应祖先路径种类下的同名兄弟节点中从1开始计数的顺序,完成对所述节点v的编码后,重复所述判断节点v是否有孩子节点的操作。
10.根据权利要求1所述的方法,其特征在于,所述按照预设映射规则对所述XML文档D进行映射存储,包括:
提取所述XML文档D对应的所有code(v)和value(v),将不同code(v)的作为编码-值CodeToValue表的列名,将value(v)作为所述CodeToValue表中,与code(v)对应的列的列值,一个所述XML文档D对应所述CodeToValue表中的一行,并将所述XML文档D对应的文档名字作为行关键字;其中,所述CodeToValue表用于存放所述XML文档D中code(v)和对应的value(v);
提取所有的节点v∈V-Text对应的path(v)及code(v),将不同path(v)的作为路径-编码PathToCode表的列名,每个path(v)对应的所有code(v)用预设间隔符间隔,所述XML文档D对应一个所述PathToCode表,并作为数据库HBase中的一行进行存储;其中,所述PathToCode表用于存放所述XML文档D中path(v)和对应的code(v)。
CN201410663532.3A 2014-11-19 2014-11-19 Xml文档的存储方法 Active CN104484337B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410663532.3A CN104484337B (zh) 2014-11-19 2014-11-19 Xml文档的存储方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410663532.3A CN104484337B (zh) 2014-11-19 2014-11-19 Xml文档的存储方法

Publications (2)

Publication Number Publication Date
CN104484337A true CN104484337A (zh) 2015-04-01
CN104484337B CN104484337B (zh) 2018-09-14

Family

ID=52758878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410663532.3A Active CN104484337B (zh) 2014-11-19 2014-11-19 Xml文档的存储方法

Country Status (1)

Country Link
CN (1) CN104484337B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017036348A1 (zh) * 2015-09-06 2017-03-09 阿里巴巴集团控股有限公司 一种可扩展标记语言xml文档的压缩、解压方法和装置
CN108733317A (zh) * 2017-04-18 2018-11-02 北京京东尚科信息技术有限公司 数据存储方法和装置
CN111125439A (zh) * 2019-12-06 2020-05-08 北京信息科技大学 一种xml数据处理方法、系统和存储介质
CN111752542A (zh) * 2020-06-26 2020-10-09 武汉众邦银行股份有限公司 基于xml模板的数据库查询接口引擎
CN113076721A (zh) * 2021-04-09 2021-07-06 航天信息(广东)有限公司 一种基于XPath的编码长度控制方法以及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2246940C (en) * 1991-03-28 2003-03-11 Ibm Canada Limited-Ibm Canada Limitee Method and means for encoding storing and retrieving hierarchical data processing information for a computer system
CN1845102A (zh) * 2006-05-12 2006-10-11 清华大学 一种可扩展标记语言文档树的序列化方法
CN102650992B (zh) * 2011-02-25 2014-07-30 国际商业机器公司 用于二进制xml数据的生成及其节点定位的方法和装置
CN102760173B (zh) * 2012-07-02 2015-04-08 河海大学 一种自下而上的xml分支模式匹配方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017036348A1 (zh) * 2015-09-06 2017-03-09 阿里巴巴集团控股有限公司 一种可扩展标记语言xml文档的压缩、解压方法和装置
CN108733317A (zh) * 2017-04-18 2018-11-02 北京京东尚科信息技术有限公司 数据存储方法和装置
CN111125439A (zh) * 2019-12-06 2020-05-08 北京信息科技大学 一种xml数据处理方法、系统和存储介质
CN111752542A (zh) * 2020-06-26 2020-10-09 武汉众邦银行股份有限公司 基于xml模板的数据库查询接口引擎
CN111752542B (zh) * 2020-06-26 2020-12-29 武汉众邦银行股份有限公司 基于xml模板的数据库查询接口引擎
CN113076721A (zh) * 2021-04-09 2021-07-06 航天信息(广东)有限公司 一种基于XPath的编码长度控制方法以及装置
CN113076721B (zh) * 2021-04-09 2024-03-08 航天信息(广东)有限公司 一种基于XPath的编码长度控制方法以及装置

Also Published As

Publication number Publication date
CN104484337B (zh) 2018-09-14

Similar Documents

Publication Publication Date Title
CN104484337A (zh) Xml文档的存储方法
CN108197226A (zh) Mptc账户状态树以及mptc区块链快速检索方法
CN109408906B (zh) 基于bim模型的工程数量表达及统计的方法
CN109472446B (zh) 基于bim模型的工程概预算编制方法
CN105356892B (zh) 网络编码的方法及系统
CN106599104A (zh) 一种基于redis集群的海量数据关联方法
CN102646039A (zh) 基于XML Schema的软件界面生成系统及方法
CN105005606A (zh) 基于MapReduce的XML数据查询方法和系统
US11070231B2 (en) Reducing storage of blockchain metadata via dictionary-style compression
CN103810247A (zh) 基于分桶算法的灾备数据比对方法
CN102591958B (zh) 基于tcam的确定性有穷状态自动机的匹配方法和装置
CN109933786A (zh) 基于编译规则的应答器报文工具的构建方法
CN104391899B (zh) 一种集中清算系统的数据管理方法及系统
CN101833588B (zh) 一种xml文档索引结构
CN110908992A (zh) 一种基于大数据平台的区块链核心存储算法的设计方法
CN103116654B (zh) 一种xml数据节点编码压缩方法
CN102043802B (zh) 基于结构摘要的xml关键字检索方法
CN115841094A (zh) 一种编码方法、装置、设备、介质及产品
CN101996161B (zh) 一种电子文档的历史版本数据处理方法及装置
CN101877005A (zh) 一种基于文档模式的gml压缩方法
CN113887171A (zh) 一种风力发电系统测点编码标准化自动转换方法
CN103716404A (zh) 一种云环境下远程数据完整性认证数据结构及其实现方法
CN104281632B (zh) 基于对象协议映射的编码解码方法及系统
CN115796127B (zh) 位置编码方法、装置、电子设备及存储介质
CN108776674A (zh) 一种电子凭证存储方法、装置及服务器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant