CN101986311B - 一种快速处理大型xml文件时节点元素的缓存方法 - Google Patents

一种快速处理大型xml文件时节点元素的缓存方法 Download PDF

Info

Publication number
CN101986311B
CN101986311B CN2010105473361A CN201010547336A CN101986311B CN 101986311 B CN101986311 B CN 101986311B CN 2010105473361 A CN2010105473361 A CN 2010105473361A CN 201010547336 A CN201010547336 A CN 201010547336A CN 101986311 B CN101986311 B CN 101986311B
Authority
CN
China
Prior art keywords
file
node
data
xml
xml file
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.)
Active
Application number
CN2010105473361A
Other languages
English (en)
Other versions
CN101986311A (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.)
ELECTRIC POWER RESEARCH INSTITUTE OF ZHEJIANG ELECTRIC POWER Co
Zhejiang Electric Power Test And Research Institute Technical Service Center
State Grid Corp of China SGCC
Original Assignee
Electric Power Research Institute of State Grid Zhejiang Electric Power Co Ltd
Zhejiang Electric Power Test and Research Insititute
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 Electric Power Research Institute of State Grid Zhejiang Electric Power Co Ltd, Zhejiang Electric Power Test and Research Insititute filed Critical Electric Power Research Institute of State Grid Zhejiang Electric Power Co Ltd
Priority to CN2010105473361A priority Critical patent/CN101986311B/zh
Publication of CN101986311A publication Critical patent/CN101986311A/zh
Application granted granted Critical
Publication of CN101986311B publication Critical patent/CN101986311B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

目前在处理大型XML文件的查询/更新任务时,需要占用大量的内存空间和时间,影响XML文件的处理效率,并且极大地增加了系统的负荷。本发明公开了一种快速处理大型XML文件时节点元素的缓存方法,将XML文件读入内存,在读入的同时对XML节点进行分析,将节点位置及类型作为附加信息一起存储在内存中,通过引入缓冲区以暂存用户修改过的XML节点,同时维护索引信息的完整性。本发明通过缓存用户修改过的内容,仅对用户修改过的内容进行处理,该处理方法减少了内存的占用量并降低了查询响应时间。

Description

一种快速处理大型XML文件时节点元素的缓存方法
技术领域
本发明涉及W3C标准《Extensible Markup Language(XML)1.1(Second Edition》,是关于在处理大型XML文件节点元素时,对输入、编辑过的元素在保存至磁盘之前的缓存处理方法。
背景技术
XML数据具有半结构化的特点,在节点元素之间存在结构关系,因此在其索引记录中需要保存必要的结构信息,这导致XML数据的更新通常会带来节点结构关系的变化。
目前针对XML的查询语言主要有Quilt、XML查询语言(XML Query Language,XQuery)、XML路径语言(XML Path Language,XPath)、XML转换语言(Yet AnotherTransformation Language,YA TL)。其中使用最广泛的是XQuery和XPath。这两种查询语言功能强大,语法简洁易懂,适用于各种XML数据源,具备很好的通用性,得到广泛的支持。
XPath是轻量的XML查询语言,也是其他XML查询语言如XQuery、XSLT的基础,它通过带有搜索路径表达式来在XML文档中定位文本数据、元素、属性以及其他信息。
XQuery是处理大量XML文档的功能性语言,它是依据对XPath和XQuery通用的数据模型而被描述的。在这种模型里,XML文档被看做树,称为“文档树”。目前XQuery已经增加了支持在XML文档上执行子文档更新的扩展,即W3C标准XQueryUpdate Facility。通过这些扩展可以添加新节点、删除或重命名已有的节点以及替换已有的节点和它们的值。
XQuery Update Facility在处理大型XML文件的查询/更新任务时,查询和更新文件需要占用大量的内存空间和时间,影响XML文件的处理效率,并且极大地增加了系统的负荷,延缓了查询响应的时间。
发明内容
本发明所要解决的技术问题是克服上述现有技术存在的缺陷,提供一种快速处理大型XML文件时节点元素的缓存方法,以避免在用户对文档仅做了少量修改时程序去处理整个大型文档。
为此,本发明采用以下步骤处理XML文件:
1)将XML文件读入内存,在读入的同时对XML节点进行分析,将节点位置及类型作为附加信息一起存储在内存中。
2)如果仅对XML文件进行读取操作,则不生成节点缓存文件;当出现对XML节点的增加、更新和删除操作时,生成缓存文件,所述的缓存文件包括文件头部和数据部分,数据部分保持发生变化的XML节点元素,每个元素数据的结构组成包括控制块元素数据、本元素的数据长度、下一个元素相对于本元素的偏移量和上一个元素相对于本元素的偏移量,控制块元素数据使用缓存控制块封装,所述的缓存控制块用于控制对节点元素的访问。
3)在对XML文件进行修改时,步骤1中导入的XML文件内容不做修改,仅在其中检索并根据需要修改节点元素的位置和类型信息,如果这是对文件的第一次修改,则生成缓存文件,将被修改节点的位置信息保存在缓存文件的数据部分中,将修改后的节点状态信息以及节点数据保存在缓存控制块中。
如果这不是对文件的第一次修改,则检索已经存在的缓存文件,对于节点的更新和删除操作,首先判断缓存文件中是否曾对相同节点做过修改,如有,则先删除缓存文件中已有的内容,然后将需要更新或删除的节点写入缓存文件的数据部分中;对于节点的插入操作,则直接将需要插入的节点保存在缓存文件的数据部分中。
用户在编辑、处理大型XML文件的时候,修改并且需要保存的通常只是文档的一小部分内容。本发明通过缓存用户修改过的内容,仅对用户修改过的内容进行处理,该处理方法减少了内存的占用量并降低了查询响应时间。
缓存文件结构如表1所示:
表1缓存文件结构
Figure BDA0000032695500000031
说明:
①“头部数据偏移量”的作用:
●从程序崩溃中恢复数据时,用来索引下一个元素。
●若缓存文件存在碎片,则数据偏移量用来正确定位元素数据部分。
②“保留数据”是为提高兼容性而保留的数据
③采用该缓存文件结构,所存储的每个“元素数据”最大长度为2GB。
缓存文件中的控制块元素数据使用缓存控制块(Element Cache Control Block,ECCB)来封装。ECCB的结构如表2:
表2ECCB结构
Figure BDA0000032695500000032
本发明是对W3C的XQuery Update Facility处理方法的改进。该方法在保持原始XML文件在内存中以字节数组形式存放的同时,通过引入缓冲区以暂存用户修改过的XML节点,同时维护索引信息的完整性,从而避免了在编辑大型XML文件的过程中,因为一个小的更新操作导致对整个文件的重新装载、解析的问题。这种缓存结构的引入,使得对XML文档的查询/更新处理更加灵活;并且由于在文档更新过程中只需要维护缓存和索引信息,因此可以大幅度提高XML文件的处理效率和处理速度,减少所需的系统资源开销。
下面结合具体实施方式对本发明作进一步说明。
具体实施方式
以对一个XML文件的插入操作为例,说明本发明的具体实施流程:
①<note>
②<to>George</to>
③<from>John</from>
④<heading>Reminder</heading>
⑤<body>Don′t forget the meeting!</body>
⑥</note>
1.将该文件导入计算机内存,导入的同时为每一个节点添加位置和类型信息。如:
  位置   类型  数据
  0   0  note
  6   0  to
  10   2  George
  21   0  from
  27   2  John
  38   0  heading
  47   2  Reminder
  65   0  body
  71   0  Don′t forget the meeting!
2.在XML文件的第4行之后插入一行:<date>2010-08-01</date>,则创建相应缓存文件。
元素数据1和元素数据2中的ECCB元素数据分别为:
Figure BDA0000032695500000052
Figure BDA0000032695500000053

Claims (3)

1.一种快速处理大型XML文件时节点元素的缓存方法,其步骤如下:
1)将XML文件读入内存,在读入的同时对XML节点进行分析,将节点位置及类型作为附加信息一起存储在内存中;
2)如果仅对XML文件进行读取操作,则不生成节点缓存文件;当出现对XML节点的增加、更新和删除操作时,生成缓存文件,所述的缓存文件包括文件头部和数据部分,所述的文件头部由文件头部信息和文件头部数据组成,数据部分由多个元素数据组成,数据部分保持发生变化的XML节点元素,每个元素数据的结构组成包括控制块元素数据、本元素的数据长度、下一个元素相对于本元素的偏移量和上一个元素相对于本元素的偏移量,控制块元素数据使用缓存控制块封装,所述的缓存控制块的结构组成包括元素类型、元素状态、元素游标长度、元素游标、实体类数据长度和实体类数据,用于控制对节点元素的访问;
3)在对XML文件进行修改时,步骤1中导入的XML文件内容不做修改,仅在其中检索并根据需要修改节点元素的位置和类型信息,如果这是对文件的第一次修改,则生成缓存文件,将被修改节点的位置信息保存在缓存文件的数据部分中,将修改后的节点状态信息以及节点数据保存在缓存控制块中;
如果这不是对文件的第一次修改,则检索已经存在的缓存文件,对于节点的更新和删除操作,首先判断缓存文件中是否曾对相同节点做过修改,如有,则先删除缓存文件中已有的内容,然后将需要更新或删除的节点写入缓存文件的数据部分中;对于节点的插入操作,则直接将需要插入的节点保存在缓存文件的数据部分中。
2.根据权利要求1所述的快速处理大型XML文件时节点元素的缓存方法,其特征在于所述文件头部信息的结构由头部数据偏移量和缓存文件标识组成。
3.根据权利要求1或2所述的快速处理大型XML文件时节点元素的缓存方法,其特征在于所述文件头部数据的结构包括数据部分偏移量、文件创建时间、缓存的元素个数、源文件的完整路径长度、源文件的完整路径和保留数据。
CN2010105473361A 2010-11-17 2010-11-17 一种快速处理大型xml文件时节点元素的缓存方法 Active CN101986311B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010105473361A CN101986311B (zh) 2010-11-17 2010-11-17 一种快速处理大型xml文件时节点元素的缓存方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010105473361A CN101986311B (zh) 2010-11-17 2010-11-17 一种快速处理大型xml文件时节点元素的缓存方法

Publications (2)

Publication Number Publication Date
CN101986311A CN101986311A (zh) 2011-03-16
CN101986311B true CN101986311B (zh) 2012-07-04

Family

ID=43710657

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010105473361A Active CN101986311B (zh) 2010-11-17 2010-11-17 一种快速处理大型xml文件时节点元素的缓存方法

Country Status (1)

Country Link
CN (1) CN101986311B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102289445A (zh) * 2011-06-01 2011-12-21 宇龙计算机通信科技(深圳)有限公司 Xml文件解析方法、xml文件解析装置和终端
CN103914437A (zh) * 2012-12-29 2014-07-09 上海可鲁系统软件有限公司 一种基于dom模型的xml文本定位方法
CN104376008A (zh) * 2013-08-14 2015-02-25 深圳市众鸿科技股份有限公司 Xml绝对路径转换方法
CN104537084A (zh) * 2013-12-31 2015-04-22 上海可鲁系统软件有限公司 一种xml文本定位方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1790335A (zh) * 2005-12-19 2006-06-21 无锡永中科技有限公司 Xml文件数据存取的方法
CN101667190B (zh) * 2009-09-29 2011-07-27 天津大学 基于XQuery的查询引擎系统
CN101819596B (zh) * 2010-04-28 2011-11-02 烽火通信科技股份有限公司 一种基于内存的xml脚本缓存容器

Also Published As

Publication number Publication date
CN101986311A (zh) 2011-03-16

Similar Documents

Publication Publication Date Title
Meier et al. Nosql databases
US8161001B2 (en) Relational database page-level schema transformations
AU2007254441B2 (en) Efficient piece-wise updates of binary encoded XML data
EP2181399B1 (en) Composite nested streams
CN103412803B (zh) 数据恢复的方法及装置
US8291310B2 (en) Delta-saving in XML-based documents
CN102346775A (zh) 一种基于日志的异构多源数据库同步方法
US8200702B2 (en) Independently variably scoped content rule application in a content management system
CN102063500A (zh) 一种数据迁移的方法及装置
CN104809237A (zh) LSM-tree索引的优化方法和装置
CN102799679B (zh) 基于Hadoop的海量空间数据索引更新系统及方法
CN105117417A (zh) 一种读优化的内存数据库Trie树索引方法
CN101986311B (zh) 一种快速处理大型xml文件时节点元素的缓存方法
US20080091714A1 (en) Efficient partitioning technique while managing large XML documents
CN108959587B (zh) 基于列存储的数据更新方法、装置、服务器及存储介质
CN103914483A (zh) 文件存储方法、装置及文件读取方法、装置
CN104461929B (zh) 基于拦截器的分布式数据缓存方法
CN102567419B (zh) 基于树结构的海量数据存储装置及方法
CN102768672B (zh) 一种磁盘空间管理方法和装置
KR101955376B1 (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
US20110078552A1 (en) Transclusion Process
CN112925835A (zh) 数据同步方法、装置和服务器
WO2008085359A1 (en) Accelerating queries using delayed value projection of enumerated storage
CN103914437A (zh) 一种基于dom模型的xml文本定位方法
CN108984720B (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
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: ZHEJIANG ELECTRIC POWER TESTING + RESEARCH INSTITU

Free format text: FORMER OWNER: ZHEJIANG ELECTRIC POWER TESTING + RESEARCH INSTITUTE TECHNOLOGY SERVICE CENTER

Effective date: 20121101

C41 Transfer of patent application or patent right or utility model
C56 Change in the name or address of the patentee

Owner name: ZHEJIANG ELECTRIC POWER RESEARCH INSTITUTE OF ZHEJ

Free format text: FORMER NAME: ZHEJIANG ELECTRIC POWER TEST AND RESEARCH INSITITUTE

CP01 Change in the name or title of a patent holder

Address after: The eight district of Hangzhou city in Zhejiang province 310014 Huadian Zhaohui under No. 1 Lane

Patentee after: Electric Power Research Institute of Zhejiang electric power company

Patentee after: ZHEJIANG ELECTRIC POWER TEST AND Research Institute TECHNICAL SERVICE CENTER

Address before: The eight district of Hangzhou city in Zhejiang province 310014 Huadian Zhaohui under No. 1 Lane

Patentee before: ZHEJIANG ELECTRIC POWER TEST AND Research Institute

Patentee before: ZHEJIANG ELECTRIC POWER TEST AND Research Institute TECHNICAL SERVICE CENTER

TR01 Transfer of patent right

Effective date of registration: 20121101

Address after: The eight district of Hangzhou city in Zhejiang province 310014 Huadian Zhaohui under No. 1 Lane

Patentee after: Electric Power Research Institute of Zhejiang electric power company

Patentee after: ZHEJIANG ELECTRIC POWER TEST AND Research Institute TECHNICAL SERVICE CENTER

Patentee after: State Grid Corporation of China

Address before: The eight district of Hangzhou city in Zhejiang province 310014 Huadian Zhaohui under No. 1 Lane

Patentee before: Electric Power Research Institute of Zhejiang electric power company

Patentee before: ZHEJIANG ELECTRIC POWER TEST AND Research Institute TECHNICAL SERVICE CENTER