CN1588368A - 基于模式的xml存储方法及应用 - Google Patents
基于模式的xml存储方法及应用 Download PDFInfo
- Publication number
- CN1588368A CN1588368A CN 200410073869 CN200410073869A CN1588368A CN 1588368 A CN1588368 A CN 1588368A CN 200410073869 CN200410073869 CN 200410073869 CN 200410073869 A CN200410073869 A CN 200410073869A CN 1588368 A CN1588368 A CN 1588368A
- Authority
- CN
- China
- Prior art keywords
- node
- record
- xml
- type
- storage
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种XML存储方法,包括:对XML事先给定一个模式,选取该模式定义的特定节点作为记录节点;把输入的XML文档划分成一个一个记录,并记录其类型;对得到的记录按类型进行分类,类型相同的记录存储在一起。本发明可使利用本发明存储结构的数据库更具可管理性,维护起来相当方便。同时,利用本发明存储结构的数据库占用的存储空间相对较小,节约了系统的宝贵存储空间。利用本发明存储结构的数据库可使查询的效率得到提高。
Description
技术领域
本发明涉及一种XML存储方法及应用,尤其涉及一种基于模式的XML存储方法及应用。
背景技术
XML文档是用标签自定义的文档,它包含元素节点,属性节点,文本节点等。XML文档具体如下:
<bib> <vendorl> <name>LongMark</name> <book1 isbn=″isbn1001″> <title>C++</title> <author1> <fname>Rose</fname> <lname>Smith</lname> </author> <price>50</price> </book1> <book2 isbn=″isbn1002″> <title>XML</title> <author2> <fname>Steven</fname> <lname>Tom</lname> </author2> <price>80</price> </book> </vendor1> <vendor2>...</vendor2> <bib>
如上所示,<bib>,<vender>等是元素节点,isbn是属性节点,C++是文本节点。元素节点可以嵌套,外层节点是内层节点的父节点,内层节点是外层节点的子节点。比如,<bib>是<vendor>的父节点,<vendor>就是name的父节点。
XML数据可以表示成树状的数据,比如上述的XML文档可以表示成图1中的结构。用于数据交换的XML文档通常是有模式定义的。模式定义XML的结构,比如元素节点可以有哪些类型的子节点和属性节点,子节点可以重复出现的次数等。图2是图1所示文档的模式定义。其中带“*”号的节点表示可以重复出现的节点。这里,vendor,book和author是可以重复出现的节点。
随着XML数据越来越成为数据交换和数据表示的标准,对XML数据高效的管理和查询的需求越来越强烈。而高效的管理和查询直接依赖于XML数据的存储方式。所以,一种高效的XML存储方法,是高效的XML管理和查询的关键和前提。
目前,在XML存储结构中,物理存取的最小单位是记录。记录即是一棵子树,它由一个或多个节点(如Element Node、Attribute Node、Text Node等)组成,是逻辑存取的最小单位。如果要读取某一个节点,必须把该节点所在的整个记录读取进来。
欲理解XML的存储,首先要弄清楚两个关键问题:一是记录的粒度,二是记录的存储顺序。
记录的粒度就是记录中包含有的几个节点。一般地,记录的粒度有三种。
节点级的,每一个节点就是一个记录。如vendor、book等分别是一个记录。
子树级的,一棵子树是一个记录。比如,bib(vendor(name))是一个记录。划分子树的标准是使每一个记录的大小尽可能地跟物理块的大小接近。这样划分出来的记录类型是没有规律的。
文档级的,整个文档是一个记录。比如,如图1所示的整棵树是一个记录。
如果记录的粒度是节点级的或者子树级的,那么接下来面临的问题就是记录的存储顺序,也就是记录在存储上的物理连接关系。记录的存储顺序一般有以下几种:
按深度优先顺序存储。这是最常见的存储顺序。比如,在图1中,如果按照深度优先方式,则遍历的顺序是:bib,vendor,name,book1,title1,author1,fname1,lname1,price1,book2,title2,author2,fname2,lname2,price2。假设一个物理块能容纳4个记录,那么第一个物理块存放bib,vendor,name,book1,第二个物理块存放title1,author1,fname1,lname1,以此类推。
按广度优先顺序存储。比如,在图1中,若记录按照广度优先的顺序则是:bib,vendor,name,book1,book2,title1,author1,price1,title2,author2,price2,fname1,lname1,fname2,lname2。仍假设一个物理块能容纳4个记录,那么第一个物理块存放bib,vendor,name,book1,第二个物理块存放book2,title1,author1,price1,以此类推。
目前,现有的存储方法大多数采用按照深度优先的顺序存储。节点的粒度是节点级,子树级或者文档级。它们都没有借助模式信息,导致同类数据不能存放在一起,从而不能为XML的查询提供高效的数据访问。比如,上述XML的文档中的两个author节点,它们实际上是同类节点,都表示了书的作者的信息。这两个作者节点在以上的存储方法中不会相邻存储在一起,而对书的作者的查询往往要求访问所有的作者信息,这样,就大大影响了查询效率。
发明内容
针对上述现有XML存储方法所存在的问题和不足之处,本发明提出了一种可提高查询效率的基于模式的XML存储方法及应用。
本发明是这样实现的:一种XML存储方法,包括以下步骤:
(1)对XML事先给定的模式,选取该模式定义的特定节点作为记录节点;
(2)按步骤(1)的方法把输入的XML文档划分成一个一个记录,并记录其类型;
(3)对步骤(2)中得到的记录按类型进行分类,类型相同的记录存储在一起。
优选地,所述步骤(1)中的节点满足以下条件的被选取:
节点是模式树的根节点;或
节点是可重复节点且有子节点。
优选地,所述记录在逻辑页的存储组织成链表结构,各记录之间用指针链接起来,每个记录有两个指针,prev指向前一个记录,next指向后一个。逻辑页的头部有头指针和尾指针,分别指向第一个记录,和最后一个记录。第一个记录的prev指针指向NULL,最后一个记录的next指针指向NULL。
优选地,所述聚簇存储具体为同类型的记录按照上述方法存储于一个逻辑页中,如果需要多个页,则各页之间又通过指针链接起来。
一种XML存储方法的应用,该方法可用于含有结构化数据的数据库中。
本发明根据XML模式树划分记录类型,并据此对XML文档数据划分记录,然后把相同类型的记录聚簇存储在一起。本发明的存储方式的粒度是子树级的。但是子树的划分有别于以前的任何方法,而且存储顺序也不是按照深度优先或者广度有限,而是同类记录聚簇的顺序。
具体而言,本发明具有以下优点:
1、提高了查询效率;大部分情况下,查询需要访问同类节点,本发明正是把同类的相关联的节点存储在一起,回答一个查询所需要的内外存交换的次数就大大减少,从而减少了查询时间,提高了查询效率。
2、便于数据管理;本发明将同类节点聚簇存储在一起,在进行数据更新等管理时,能使管理工作更加方便和迅速。
3、节省了存储空间;本发明的存储的粒度是子树级,相比节点级的存储方法,子树级需要更少的指针,因而需要更少的存储空间。可大大节约了存储容量。
附图说明
下面结合附图对本发明作出详细说明。
图1为现有XML文档的树状数据结构示意图;
图2为图1的模式结构示意图;
图3为本发明流程示意图。
具体实施方式
如图3所示,本发明借助模式信息,将XML文档的同类数据放在一起存储。若要求将同类型记录聚簇存储,关键问题是选定某些特定类型的节点作为记录节点。而这可以根据模式来完成。首先,给定一个具体的模式,如何选定模式定义上的特定节点作为记录节点呢?本发明选取记录类型的方法是这样的:
如果模式树上一个节点满足以下条件,则被选定为记录节点类型:
为模式树的根节点,或者
是可重复节点(即前面所述XML文档中带“*”,标志的),而且有子节点。
对于图2中的模式定义来说,按本发明方法选取出来的记录节点类型应该是:bib(vendor)、vendor(name、book)、book(title、author、price)、author(fname、lname)这四个。本发明选择记录类型的方法隐含了语义的信息。如果一个节点类型是可重复的而且有子节点的,说明它是比较完整的逻辑单位。比如,author表示作者信息,book表示了书的信息等等。在查询中,该逻辑单位内的节点可能要经常一起被查询。比如,查询book节点,可能经常以price为谓词判断,而以title为返回的结果节点等。
选择好记录的类型之后,下一步是把输入的XML文档划分成一个一个记录。比如,对于图1所表示的XML文档,根据前述方法划分出来的记录类型,可以生成记录如下:
类型1:bib(vendor1,vendor2...)
类型2:vendor(name,book1,book2,...)
类型3:book1(title,author1,price),book2(title,author2,price)
类型4:author1(fname,lname),author2(fname,lname)
生成好记录之后,下一步是要把这些记录按照类型存储在一起。比如,在第二步生成的记录中,有四种类型,相同的类型,如类型3中的book1和book2,将会相邻存储在一起。其存储利用指针结构,各记录顺序存放,记录之间用指针链接,存储页头部有两个指针,头指针和尾指针,分别指向第一个记录,和最后一个记录。第一个记录的prev指针指向NULL,链尾记录的next指针指向NULL。这样,相同类型的记录就组织成了一条链表,使从book1开始,可以顺着链表访问book2,book3,...,直到bookn。
本发明可使利用本发明存储结构的数据库更具可管理性,维护起来相当方便。同时,利用本发明存储结构的数据库占用的存储空间相对较小,节约了系统的宝贵存储空间。利用本发明存储结构的数据库可使查询的效率得到提高。
本发明的存储方法可用于任何含有结构化数据的数据库中。特别是应用到关系数据库的各系统中。
Claims (5)
1、一种XML存储方法,包括以下步骤:
(1)对XML事先给定一个模式,选取该模式定义的特定节点作为记录节点;
(2)按步骤(1)的方法把输入的XML文档划分成一个一个记录,并记录其类型;
(3)对步骤(2)中得到的记录按类型进行分类,类型相同的记录存储在一起。
2、如权利要求1所述的XML存储方法,其特征在于,所述步骤(1)中的节点满足以下条件的被选取的:
节点是模式树的根节点;或
节点是可重复节点且有子节点。
3、如权利要求1所述的XML存储方法,其特征在于,所述存储方式具体为指针结构,头指针指向第一个记录,尾指针指向链尾的记录,第一个记录的prev指针指向NULL,链尾记录的next指针指向NULL。
4、如权利要求3所述的XML存储方法,其特征在于,所述记录存储在一起具体为同类型的记录存储于同一个逻辑页中,或者多个通过指针相链接的逻辑页中。
5、一种权利要求1方法的应用,其特征在于,该方法可用于含有结构化数据的数据库中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410073869 CN1588368A (zh) | 2004-09-07 | 2004-09-07 | 基于模式的xml存储方法及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410073869 CN1588368A (zh) | 2004-09-07 | 2004-09-07 | 基于模式的xml存储方法及应用 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1588368A true CN1588368A (zh) | 2005-03-02 |
Family
ID=34604770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200410073869 Pending CN1588368A (zh) | 2004-09-07 | 2004-09-07 | 基于模式的xml存储方法及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1588368A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101326521B (zh) * | 2005-12-16 | 2012-08-15 | 艾利森电话股份有限公司 | Xml文档管理器服务器方法和装置 |
CN103177120A (zh) * | 2013-04-12 | 2013-06-26 | 同方知网(北京)技术有限公司 | 一种基于索引的XPath查询模式树匹配方法 |
US8862539B2 (en) | 2007-11-09 | 2014-10-14 | Alibaba Group Holding Limited | Statistical applications in OLTP environment |
CN106354834A (zh) * | 2016-08-31 | 2017-01-25 | 广州慧睿思通信息科技有限公司 | 一种xml数据差异化储存对全文检索的优化方法 |
-
2004
- 2004-09-07 CN CN 200410073869 patent/CN1588368A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101326521B (zh) * | 2005-12-16 | 2012-08-15 | 艾利森电话股份有限公司 | Xml文档管理器服务器方法和装置 |
US8862539B2 (en) | 2007-11-09 | 2014-10-14 | Alibaba Group Holding Limited | Statistical applications in OLTP environment |
CN103177120A (zh) * | 2013-04-12 | 2013-06-26 | 同方知网(北京)技术有限公司 | 一种基于索引的XPath查询模式树匹配方法 |
CN106354834A (zh) * | 2016-08-31 | 2017-01-25 | 广州慧睿思通信息科技有限公司 | 一种xml数据差异化储存对全文检索的优化方法 |
CN106354834B (zh) * | 2016-08-31 | 2020-01-31 | 广州慧睿思通信息科技有限公司 | 一种xml数据差异化储存对全文检索的优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7562087B2 (en) | Method and system for processing directory operations | |
US5752243A (en) | Computer method and storage structure for storing and accessing multidimensional data | |
CN101751406B (zh) | 一种实现基于列存储的关系型数据库的方法及装置 | |
CN100468402C (zh) | 一种数据存储及查询方法 | |
EP2069979B1 (en) | Dynamic fragment mapping | |
CN102867071B (zh) | 一种网管海量历史数据管理方法 | |
JP3318834B2 (ja) | データファイルシステム及びデータ検索方法 | |
CN109952568B (zh) | 用于高速搜索或过滤大数据集的系统和方法 | |
CN102609452B (zh) | 数据的存储方法及装置 | |
CN1838124A (zh) | 海量数据内存数据库中快速定位的网格+t树索引的方法 | |
WO2006046669A1 (ja) | データベース管理装置、方法、プログラム | |
CN102163232B (zh) | 一种支持iec61850对象查询的sql接口实现方法 | |
CN102411634A (zh) | 一种提升嵌入式数据库实时性的数据存储方法 | |
CN103440245A (zh) | 数据库系统的行列混合存储方法 | |
CN101833511A (zh) | 数据管理方法、装置和系统 | |
CN106777111B (zh) | 一种超大规模数据的时序检索索引系统及方法 | |
CN112000851A (zh) | 一种键值模型、文档模型和图模型数据的统一存储方法 | |
US7310719B2 (en) | Memory management tile optimization | |
CN1588368A (zh) | 基于模式的xml存储方法及应用 | |
US8312052B2 (en) | Process for transforming and consulting directed and attributed multigraphs based on the use of maps and bitmaps | |
CN116881243A (zh) | 基于时间序列数据特征的学习型索引方法及系统 | |
CN102597969A (zh) | 带属性的键值存储的数据库管理装置及其键值存储结构的高速缓存装置 | |
CN1369840A (zh) | 跨数据库的信息整合方法及其系统结构 | |
US20070078888A1 (en) | Method and System for Managing An Index Arrangement for a Directory | |
CN1641639A (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |