返回首页

纯XML数据库研究综述

时间:2010-10-27 16:04来源:知行网www.zhixing123.cn 编辑:麦田守望者

【摘要】虽然XML是一种专门为Intemet所设计的标记语言,但是它已经成为Internet上数据表示和数据交换的标准。如何对XML文档进行有效管理与快速查询是当前学术界的研究热点,即所谓的XML数据库。主要对当前XML数据库的研究现状与发展趋势进行全面的论述与分析,并对其中尚未解决的挑战性问题进行了客观的评价与分析。

【关键词】扩展标记语言;XML数据库;NativeXML数据库;存储策略;查询优化;X—代数

SurveyOfResearchonNativeXMLDatabases

FENGJian-hua QIANQian LIAOYu-guo LIGuo-liang TANa ZHOULi-zhu

Dept.ofCompuJcrScience&Technology,TsinghuaUniversity Beijing China 100084

【Abstract】AlthoughXMLisaspecialmarkuplanguageforInternet,ithasbeenbecomethestandardfordatarepresentationandexchangeOnInternet.WiththeemergenceOfalOtOfXMLdocuments howtOmanageandquerythemeffectivelyhasbeenbecomeahotspotfOrdatabaseresearchers.Thispaperdiscussesandanalyzesthestatusquoandtrend()fXMLdatabasere—search,andgivestheevaluatingtOtheopenandchallengingproblemsinXMLdatabaseresearch.

【Keywords】XML;XMLDatabase;NativeXMLDatabase;StorageStrategy;QueryOptimization;X-Algebra

1 引言

1.1 认识XML(extensibleMarkupLanguage)

XML是一种专门为Intemet所设计的标记语言。XML的重点是管理信息的数据本身,而不是数据的样式,数据的显示则交给另外的技术来解决。虽然XML是一种专门为Internet所设汁的标记语言,但是它已经成为Intemet上数据表示和数据交换的标准。随之而来的是堆积如山的XML文档,如何对这些XML文档进行有效管理与快速查询,是当前学术界的研究热点,即所谓的XML数据库。

1.2 XML数据库与XML文档

所谓数据库就是一组相互有关联的数据集合,而XML数据库是一个XML文档的集合,这些文档是持久的并且是可操作的。目前XML数据库有三种类型(参阅http://www.xmldb.org/faqs.html):

(1)XMLEnabledDatabase(XEDB),即能处理XML的数据库。其特点是在原有的数据库系统上扩充对XML数据的处理功能,使之能适应XML数据存储和查询的需要。一般的做法是在数据库系统之上增加XML映射层,这可以由数据库供应商提供,也可以由第三方厂商提供。映射层管理XML数据的存储和检索,但原始的XML元数据和结构可能会丢失,而且数据检索的结果不能保证是原始的XML形式。XEl)B的基本存储单位与具体的实现紧密相关。

(2)NativeXMLDatabase(NXD),即纯XML数据库。其特点是以自然的方式处理XML数据,以XML文档作为基本的逻辑存储单位,针对XML的数据存储和查询特点专门设计适用的数据模型和处理方法。

(3)HybridXMLDatabase(HXD),即混合XML数据库。根据应用的需求,可以视其为XEDB或NXD的数据库,典型的例子是Ozone(参阅http://www.ozone-db.org/frames/home/what.html)。

XML文档有两种类型:面向文档处理和面向数据处理,”。面向文档处理的文档是利用XML来获取自然(人类)语言的那些文档,如用户手册。它们以复杂或无规则的结构和混合内容为特征,而且文档的物理结构非常重要。这些文档的处理侧重于给用户提供信息的最终表示,因此它们也被称作面向表示的文档。面向数据处理的文档主要利用XML来传送数据,这些文档包括销售订单、病人记录和科学数据等。面向数据处理的XML文档的物理结构,如元素的顺序,或者数据被存储为属性还是子元素,通常不是很重要。它们的特征是高度有序的结构,并且同时带有那些数据结构的多个副本,类似于关系数据库系统中的多条记录。这些文档的处理通常侧重于应用程序间的数据交换,因此它们也被称作面向消息的文档。这两类文档有时也简称为面向文档的(XML)文档和面向数据的(XML)文档。

面向数据处理和面向文档处理的XML文档之间的区别不大,然而文档上需要执行的操作是不一样的。在一个面向文档处理的XML文档中,需要执行的操作包括检索整个文档、搜索关键词、修改一部分或重排一部分。在一个面向数据处理的XML文档中,需要执行的操作包括检索文档的一个指定部分、搜索元素和数据的一个特定的结合、修改或删除一个简单的元素或一块简单的数据,或者给文档添加一个新元素。

1.3 XML数据库研究的问题

与传统的关系数据库管理系统(RDBMS)一样,XML数据库管理系统也要解决XML数据的存储与查询处理问题,即存储引擎与查询引擎(同关系引擎一样,将其称为x-引擎)。在X—引擎中主要研究XML数据的查询分解与优化,包括XML数据查询的代数表示,同关系代数一样。将其称为x-代数。

2 XML数据库的存储策略分析

首要问题是如何存储XML文档才是最好的?因为底层的存储表达对上层的查询处理和优化有着重要的性能影响”。因此,要实现XML数据库,首先必须解决XML文档的存储问题。根据已有的文献[3—6],XML数据库的存储策略目前主要有以下三种:利用文件系统的平面文件、利用成熟的RD-BMS、利用对象管理器或面向对象数据库管理系统(OOD—BMS)。

2.1 文件系统的平面文件方法

XML文档本质—亡是序列化数据。序列化数据通常采用平面文件的形式,即将每一个XML文档分别存储在一个文本文件里”,并且实现一个查询引擎,当查询被执行的时候,XML文件被解析成驻留在内存的一棵树。只要查询计算还需要树中的节点,这棵树就必须驻留在内存里。一般来说,解析的时间左右着查询计算的时间,而且这种方法慢得令人无法接受。为了提高这种方法的可用性,必须建立以下索引:利用XML元素在文本文件中的偏移量作为ID,建立从标记tag(Parent_off-set,Tag)映射到子偏移量Child_offset的路径索引以及从标记tag(Child_offset,Tag)映射到父偏移量Parent_offset的反向路径索引,这两个索引非常有利于遍历XML文档或在XML文档中进行导航。而其他的索引建立从标记值(Tagname,Value)或属性值(Attribute_name,Attribute_value)到元素偏移量Element_offset的映射,这些索引有助于计算查询中的选择条件(谓词)。查询引擎可以利用这些索引检索与查询相关的XML文件的片段,极大地减少了解析时间”。平面文件数据库最大优点就是容易实现,而且不需要使用数据库系统和存储管理器。但是,利用平面文件存储XML文档也有以下缺点:

(1)每次访问XML文档时都需要解析它;

(2)在查询处理期间,整个被解析的文件都必须驻留在内存里;

(3)为了部分解决上述两个问题,可以在XML文档上建立外部索引。但当XML文档被更新时,索引是难以维护的。

2.2 传统的关系数据库系统方法

除了平面文件以外,还可以将XMI。文档存储在传统的关系数据库系统里。最近的研究成果说明了如何将XML文档映射并存储到关系数据库系统中。这种方法的缺点是当前关系数据库系统与XML的负载不协调,而且通过诸如SQL的接口访问XML数据会招致与存储无关的额外负担。

2.2.1 利用关系的DTD方法

利用关系的DTD方法是文献[6]建议的共享内嵌法,而且需要相应DTD的支持。用一个独立的表来捕获具有相同标记的元素与其子元素集之间的包含关系,表中的每个元组都被赋予一个ID,而且该表还包含一个ParentlD列以标志该元组的父亲节点。一个元素在描述它的元素表中只能出现一次,而且它的父节点内嵌为表的一列以便表示该元素的父亲。如果描述XML文档模式的DTD图中包含环,则必须用一个独立的表来打破这个环。在这种情况下,XML数据库的索引可以完全建立在上述各个关系表上。

2.2.2 利用关系的边的方法

文献[4]描述了边的方法,将XML文档的有向图存储在单个Edge表中。按照广度优先顺序赋予有向图中每个节点一个唯一的ID。Edge表中每个元组对应有向图里的一条边,并且包含该条边所连接的两个节点的ID值,目标节点的标记(Tag)值以及一个/顷序号,该顺序号表示同一节点与其多个子节点对应边的顺序编码。当元素只有一个文本子节点时,文本内容就内嵌到以该元素节点为目标节点的边所对应的元组里。

按照文献[4]的建议,建立在(Tag,数据)上的索引可以缩减选择查询的执行时间。而建立在(源节点,顺序号)和(目标节点)上的索引也非常重要,前者用来查找给定元素的子元素,后者用来从给定的子节点向父节点遍历。

在Edge表上运用簇集策略对查询的性能也会有重要影响。一般都会选择按照Edge表上的Tag字段进行簇集,使得具有相同Tag的元素存储在一起。当然也可以选择按照“源节点”字段进行簇集,这种策略的好处是一个XML元素的所有子元素都存储在一起,因此重构原始的XML文档将非常快。但它的缺点是具有相同标记名的元素没有被簇集,因此对于这样的查询:“把专业是计算机科学的所有学生都选择出来”将会导致大量的随机I/O。而建立在Tag字段上的簇集则表现出了较好的性能,但它对XML文档的重构没有任何好处。

2.2.3 利用关系的属性方法

文献[4]还建议了另外一种所谓的属性方法。它是按Edge表的Tag字段对边表进行水平划分,不同标记(指Tag字段的值)的元组存储在各自不同的表里。这种方法以牺牲Edge表非常重要的属性Tag为代价而节省了存储空间。对属性方法来说,查询处理器需要DTD来决定哪些表包含子元素,因为子元素的标记没有存储在表中。需要注意的是,对于有很多XML文档的一个大集,属性方法可能导致大量的表。

2.3 对象管理器方法

在对象管理器里存储XML文档的明显方法就是把每一个XML元素存储成一个独立的对象”,但是由于XML元素通常都非常小,因此这种方法的空间开销高得令人不敢问津。取而代之,把XML文档的所有元素存储在一个单独的对象里,而XML元素本身就变成了这个对象里的轻量级对象。同时,文献[2]用1w_object,即记录来表示轻量级对象,而用file_ob-ject表示代表整个XML文档的对象。轻量级对象(1w_obiect)在文件对象(hle_object)中的偏移量(Offset)被用作该对象的标志(1w_oid)。

3 不同存储方法的分析与比较

3.1 不同存储方法的优缺点比较

------分隔线----------------------------
标签(Tag):数据库 XML
------分隔线----------------------------
推荐内容
猜你感兴趣
博聚网