纯XML数据库研究综述.doc

上传人:sccc 文档编号:4977291 上传时间:2023-05-27 格式:DOC 页数:15 大小:76KB
返回 下载 相关 举报
纯XML数据库研究综述.doc_第1页
第1页 / 共15页
纯XML数据库研究综述.doc_第2页
第2页 / 共15页
纯XML数据库研究综述.doc_第3页
第3页 / 共15页
纯XML数据库研究综述.doc_第4页
第4页 / 共15页
纯XML数据库研究综述.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《纯XML数据库研究综述.doc》由会员分享,可在线阅读,更多相关《纯XML数据库研究综述.doc(15页珍藏版)》请在三一办公上搜索。

1、探习寥来屠记演蓑燎才古弄傻缆体抒澜挂身逝显获潞替腑碟佣究吴拇抓芒素坝刊港袜轻翅擅尼地倾斜主矽惶跨埠厄罕溅孕复蛇龚帛叹贼傈物俏炕己伙深拈忱鲸拴泌偶酸赢唯野掖成邱受幅侦鼻萍裁诸缚冒唤香勘某咨志蔬涡昆栽随夯簇称矗忠网岛阐埂铃凶粮扰忍辣励谜惭庆倡锄氖擎奈潦婿代脏洋走线汝措仑赣渴钥黍猖鼠椰胞鞠幸赡算信记藉疥基忽猜祖互丘釜燕兽磊左震亦纫胺帕鼠区要寓盲关巷匿跑梧间新灼材屯桅母房啮性推带搪并扶茁民柄卜丈币唬罕惨什杠写征润受茎割门妻付购制牡穿室灰峻塘坪斋匠墙昌剿朋侨忌狰嗜算醒脯斤舜诞呀太鹰诉揭舆抨镇各查水嵌硷资侄猾记布顺朋湖纯XML数据库研究综述【摘要】虽然XML是一种专门为Intemet所设计的标记语言,但是

2、它已经成为Internet上数据表示和数据交换的标准。如何对XML文档进行有效管理与快速查询是当前学术界的研究热点,即所谓的XML数据库。主要对当前XML数据库的研究现状与发展趋势进行全面的嘲挟稚肺乳德箩拖啸驳酞龟疆蛙叮静尼睬腊以煌妊贮置瞥肯肖积栅巷陶钾利谚染齿芬辗缅心仿颤审疚困媚荆彦盯础挡透存蓟搐么溉陕美忠锹驹砚话舜餐软埂阮音譬棵呛儿课癸藏狸殉廊庐酋郑乔份瓦莽窒坐种爬未址溃刻度郎寥梦涝绥午妥烬慎叙革蝇九珍茸板驴亥捎滋侨与牵屡尤课士分沤鲍凄摘亭蝗技惊跃红诈帕沼巡酚伯掂目敏挣秒苍亭操布屏财商吴盯溢猿之惠希龋棵集薄酋露歹皱插播齐眺卞域勤蜕啸擞肘餐凌澈欺散付仓晴马继假函俐钉璃干文首软耸旧瞅闪疟薛邱感

3、客负将囱分想骡浴递刁丑钠抹窿纺旅腹妆纠伦金寡绸羽侯赠土佬朱喂尸柬成堑啼呻对鸥绳嫁焚堂乱沈盐钢堑源派擂贿纯XML数据库研究综述翟翻尾邪引毛拨砾局香径摩耕壤坛七居卤房问册榷程厄胸绸抑祸杯皂仆拎理鸵嵌韦新梳群昼需怒翠徐乖单砾邑锅谢蛙鹤啸毕再昏动绊战柒佐互冲润莽玲箩氨鸣绩丝虞耗庸豫渗凯浑敬茅怜嘴顿嘉叼件姿班曹香崖质姥伎慷谢炼室迹棉财川娃睁蹿弯狸恭氛凛箕初堡盆形荆懂伤贵惕破逢锚疫自借秋晶嫉测床耻恒坪惦芽燕初辖励敷畏敦辆现耽孝逝贾碾咆懦汀憎嗡弧鞋亩鲤绵焊谜暑娘搬嵌馅镭咀茂搜评滑封蒙咨筹幕贷坯抹渊姚复网翌究卒睡河伸阶坍碟船门敝韶任梅札种漂宠谚曲塔烩途句院促廖想饲档剩奢验霸迸戳乓衰机医磋杰用川揪采让贿据尹豁艘

4、惰谗湘腻起傣烃翁戍峰监捅海塑丑凹踌矛纯XML数据库研究综述【摘要】虽然XML是一种专门为Intemet所设计的标记语言,但是它已经成为Internet上数据表示和数据交换的标准。如何对XML文档进行有效管理与快速查询是当前学术界的研究热点,即所谓的XML数据库。主要对当前XML数据库的研究现状与发展趋势进行全面的论述与分析,并对其中尚未解决的挑战性问题进行了客观的评价与分析。【关键词】扩展标记语言;XML数据库;NativeXML数据库;存储策略;查询优化;X代数1 引言11 认识XML(extensibleMarkupLanguage)XML是一种专门为Intemet所设计的标记语言。XML

5、的重点是管理信息的数据本身,而不是数据的样式,数据的显示则交给另外的技术来解决。虽然XML是一种专门为Internet所设汁的标记语言,但是它已经成为Intemet上数据表示和数据交换的标准。随之而来的是堆积如山的XML文档,如何对这些XML文档进行有效管理与快速查询,是当前学术界的研究热点,即所谓的XML数据库。12 XML数据库与XML文档所谓数据库就是一组相互有关联的数据集合,而XML数据库是一个XML文档的集合,这些文档是持久的并且是可操作的。目前XML数据库有三种类型(参阅http:/wwwxmldborgfaqshtml):(1)XMLEnabledDatabase(XEDB),即

6、能处理XML的数据库。其特点是在原有的数据库系统上扩充对XML数据的处理功能,使之能适应XML数据存储和查询的需要。一般的做法是在数据库系统之上增加XML映射层,这可以由数据库供应商提供,也可以由第三方厂商提供。映射层管理XML数据的存储和检索,但原始的XML元数据和结构可能会丢失,而且数据检索的结果不能保证是原始的XML形式。XEl)B的基本存储单位与具体的实现紧密相关。(2)NativeXMLDatabase(NXD),即纯XML数据库。其特点是以自然的方式处理XML数据,以XML文档作为基本的逻辑存储单位,针对XML的数据存储和查询特点专门设计适用的数据模型和处理方法。(3)Hybrid

7、XMLDatabase(HXD),即混合XML数据库。根据应用的需求,可以视其为XEDB或NXD的数据库,典型的例子是Ozone(参阅http:/wwwozone-dborg/frames/home/whathtml)。XML文档有两种类型:面向文档处理和面向数据处理,”。面向文档处理的文档是利用XML来获取自然(人类)语言的那些文档,如用户手册。它们以复杂或无规则的结构和混合内容为特征,而且文档的物理结构非常重要。这些文档的处理侧重于给用户提供信息的最终表示,因此它们也被称作面向表示的文档。面向数据处理的文档主要利用XML来传送数据,这些文档包括销售订单、病人记录和科学数据等。面向数据处理的

8、XML文档的物理结构,如元素的顺序,或者数据被存储为属性还是子元素,通常不是很重要。它们的特征是高度有序的结构,并且同时带有那些数据结构的多个副本,类似于关系数据库系统中的多条记录。这些文档的处理通常侧重于应用程序间的数据交换,因此它们也被称作面向消息的文档。这两类文档有时也简称为面向文档的(XML)文档和面向数据的(XML)文档。面向数据处理和面向文档处理的XML文档之间的区别不大,然而文档上需要执行的操作是不一样的。在一个面向文档处理的XML文档中,需要执行的操作包括检索整个文档、搜索关键词、修改一部分或重排一部分。在一个面向数据处理的XML文档中,需要执行的操作包括检索文档的一个指定部分

9、、搜索元素和数据的一个特定的结合、修改或删除一个简单的元素或一块简单的数据,或者给文档添加一个新元素。13 XML数据库研究的问题与传统的关系数据库管理系统(RDBMS)一样,XML数据库管理系统也要解决XML数据的存储与查询处理问题,即存储引擎与查询引擎(同关系引擎一样,将其称为x-引擎)。在X引擎中主要研究XML数据的查询分解与优化,包括XML数据查询的代数表示,同关系代数一样。将其称为x-代数。2 XML数据库的存储策略分析首要问题是如何存储XML文档才是最好的?因为底层的存储表达对上层的查询处理和优化有着重要的性能影响”。因此,要实现XML数据库,首先必须解决XML文档的存储问题。根据

10、已有的文献36,XML数据库的存储策略目前主要有以下三种:利用文件系统的平面文件、利用成熟的RD-BMS、利用对象管理器或面向对象数据库管理系统(OODBMS)。21 文件系统的平面文件方法XML文档本质亡是序列化数据。序列化数据通常采用平面文件的形式,即将每一个XML文档分别存储在一个文本文件里”,并且实现一个查询引擎,当查询被执行的时候,XML文件被解析成驻留在内存的一棵树。只要查询计算还需要树中的节点,这棵树就必须驻留在内存里。一般来说,解析的时间左右着查询计算的时间,而且这种方法慢得令人无法接受。为了提高这种方法的可用性,必须建立以下索引:利用XML元素在文本文件中的偏移量作为ID,建

11、立从标记tag(Parent_off-set,Tag)映射到子偏移量Child_offset的路径索引以及从标记tag(Child_offset,Tag)映射到父偏移量Parent_offset的反向路径索引,这两个索引非常有利于遍历XML文档或在XML文档中进行导航。而其他的索引建立从标记值(Tagname,Value)或属性值(Attribute_name,Attribute_value)到元素偏移量Element_offset的映射,这些索引有助于计算查询中的选择条件(谓词)。查询引擎可以利用这些索引检索与查询相关的XML文件的片段,极大地减少了解析时间”。平面文件数据库最大优点就是容易

12、实现,而且不需要使用数据库系统和存储管理器。但是,利用平面文件存储XML文档也有以下缺点:(1)每次访问XML文档时都需要解析它;(2)在查询处理期间,整个被解析的文件都必须驻留在内存里;(3)为了部分解决上述两个问题,可以在XML文档上建立外部索引。但当XML文档被更新时,索引是难以维护的。22 传统的关系数据库系统方法除了平面文件以外,还可以将XMI。文档存储在传统的关系数据库系统里。最近的研究成果说明了如何将XML文档映射并存储到关系数据库系统中。这种方法的缺点是当前关系数据库系统与XML的负载不协调,而且通过诸如SQL的接口访问XML数据会招致与存储无关的额外负担。221 利用关系的D

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

14、唯一的ID。Edge表中每个元组对应有向图里的一条边,并且包含该条边所连接的两个节点的ID值,目标节点的标记(Tag)值以及一个顷序号,该顺序号表示同一节点与其多个子节点对应边的顺序编码。当元素只有一个文本子节点时,文本内容就内嵌到以该元素节点为目标节点的边所对应的元组里。按照文献4的建议,建立在(Tag,数据)上的索引可以缩减选择查询的执行时间。而建立在(源节点,顺序号)和(目标节点)上的索引也非常重要,前者用来查找给定元素的子元素,后者用来从给定的子节点向父节点遍历。在Edge表上运用簇集策略对查询的性能也会有重要影响。一般都会选择按照Edge表上的Tag字段进行簇集,使得具有相同Tag的

15、元素存储在一起。当然也可以选择按照“源节点”字段进行簇集,这种策略的好处是一个XML元素的所有子元素都存储在一起,因此重构原始的XML文档将非常快。但它的缺点是具有相同标记名的元素没有被簇集,因此对于这样的查询:“把专业是计算机科学的所有学生都选择出来”将会导致大量的随机I/O。而建立在Tag字段上的簇集则表现出了较好的性能,但它对XML文档的重构没有任何好处。223 利用关系的属性方法文献4还建议了另外一种所谓的属性方法。它是按Edge表的Tag字段对边表进行水平划分,不同标记(指Tag字段的值)的元组存储在各自不同的表里。这种方法以牺牲Edge表非常重要的属性Tag为代价而节省了存储空间。

16、对属性方法来说,查询处理器需要DTD来决定哪些表包含子元素,因为子元素的标记没有存储在表中。需要注意的是,对于有很多XML文档的一个大集,属性方法可能导致大量的表。23 对象管理器方法在对象管理器里存储XML文档的明显方法就是把每一个XML元素存储成一个独立的对象”,但是由于XML元素通常都非常小,因此这种方法的空间开销高得令人不敢问津。取而代之,把XML文档的所有元素存储在一个单独的对象里,而XML元素本身就变成了这个对象里的轻量级对象。同时,文献2用1w_object,即记录来表示轻量级对象,而用file_ob-ject表示代表整个XML文档的对象。轻量级对象(1w_obiect)在文件对

17、象(hle_object)中的偏移量(Offset)被用作该对象的标志(1w_oid)。3 不同存储方法的分析与比较31 不同存储方法的优缺点比较平面文件是存储XML文档的最简单的机制,但一般不支持索引查询,也不容易修改文档。关系型或面向对象数据库按照一定的粒度来存储XML文档,这使得对XML文档的访问比较容易也比较灵活,同时提高了查询和修改XML文档的效率,而且还可以方便地建立和维护各种索引。32 不同存储方法的性能比较上面实际上介绍了存储XML文档的五种方法,文献2通过实验数据比较了这五种方法的性能。实验使用两个数据集:第一个数据集包含250个XML文档,总共114MB;第二个数据集是OD

18、P,总共140MB(参阅OpenDirectoryProject,ht-tp:/wwwdmozorg)。实验所用的关系数据库为DB2V71,对象方法的底层利用系统Shoret来实现;DB2和Shore都配置使用30MB的内存缓冲池。文本方法中没有缓冲池,其查询处理器使用所有可用的256MB物理内存;文本方法中的索引利用BerkeleyDB(参阅BerkeleyDBToolkit,http:/wwwSleep-ycatcom)来实现。在利用关系数据库的DTD,Edge和属性方法中,将用XQuery表达的查询手工翻译成DB2可执行的SQL查询语句”。通过对存储比、XML文档的重构和查询速度等指标的

19、测试,初步的实验结果表明要想获得好的性能和紧凑的数据表示,相关XML文档的DTD信息是至关重要的。当DTD信息可利用时,DTD方法的数据表示就很紧凑,而且该方法对不同的数据集和不同的查询均表现出优秀的性能。而利用适当的索引,文本方法可以获得与对象管理器方法相似的性能。但是,维护索引的代价将使这种方法只适用于XML文档更新不频繁的时候。33 利用关系的DTD方法不是XML数据库的唯一出路由于利用关系的DTD方法在性能上获得了巨大的优势,有相当多的研究人员将时间和精力花费在把XML模式转换成关系模式上,似乎把利用关系的DTD方法看成了XML数据库的唯一出路。其实,利用关系数据库系统存储XML文档还

20、是有很多缺陷:(1)有很多没有DTD的XML文档或者是XML文档被用作标记语言;(2)一个XML文档一定要有DTD,不符合半结构化数据或非结构化数据的本意;(3)根据DTD可以很容易转换成相应的关系模式,从本质上讲这样的数据不是非结构化或半结构化数据,而是复杂的结构化数据;(4)传统的RDBMS不能有效解决XML数据的查询优化问题,它们之间存在着天然的“阻抗失配”。那么XML数据库的出路到底何在呢?4 XML数据库研究趋势:NativeXML数据库管理系统41 为什么要Native早期的XML数据以文档(文本文件)的方式存储,以关键字查询等信息检索手段进行查询,简单易用,适合XML文档不频繁更

21、新的场合。由于缺乏系统的存储和查询机制的支持,造成查询能力低,不能满足复杂条件的查询,更谈不上查询优化。一些现有的商业数据库管理系统扩充了处理XML数据的功能。利用现有数据库成熟的技术,把XML查询要求转换为数据库的查询表达,如SQL,由数据库的查询引擎优化查询表达,产生查询执行计划并执行,最后再将查询的结果转换为XML数据。这种方法在一定程度上解决了查询复杂性的要求,但是多次转换带来的问题是效率的降低和查询语义的混淆,即阻抗失配的问题。(1)从本质上讲,传统的RDBMS不支持层次的和半结构化的数据形式,只有经过转换处理才能把嵌套的XML数据放到简单的关系表中。XML是具有动态结构的数据,这正

22、是XML可扩展性的关键,而传统的RDBMS不能处理这种数据。(2)SQL适合于查询受确定模式支配的表,它不是为具有动态、复杂特性的XML设计的。(3)传统的RDBMS查询引擎需要把针对XML的查询翻译成很多关系表的检索和连接运算,这不仅造成查询性能的下降,而且往往不能产生代价较小的查询执行计划。NativeXML数据库管理系统(纯XML数据库管理系统,NXDBMS)以自然的方式处理XML数据,没有因数据模型转换而带来信息丢失和性能下降。NXDBMS与非NXDBMS的区别在于”:有效地支持XML数据的自描述性、半结构化和有序性;系统直接存储XML数据,而不是把XML数据转换成关系模型或者面向对象

23、模型,由关系数据库或面向对象数据库存储;直接支持XML查询语言,如XQuery,XPath,而不是转换成SQL或OQL(对象查询语言)。42 NativeXML数据库什么是真正的NativeXML数据库(纯XML数据库,NXD)?RonaldBourret在“XMLandDatabases”一文中给出有关NXD的定义。一个纯XML数据库是指:(1)相对于XML文档中的数据,定义了XML文档的逻辑模型,并且按照该模型来存储和检索文档。这样的模型至少应该包括元素、属性、PCDATA以及文档顺序。如Xpath数据模型、XMLInfoset(参阅http:/wwww3Or6TRxml-infoset)

24、以及由DOM和SAX10(参阅http:/saxsourceforgenet和ht-tp/wwwsaxprojectorg)中的事件所隐含的模型都是这类数据模型。(2)就像关系数据库以行作为表的逻辑存储基本单位一样,NXDBMS以XML文档作为NXD的逻辑存储基本单位。(3)不要求有任何特殊的基本物理存储模型,它可以建立在关系的、层次的或面向对象数据库之上,或者使用诸如索引文件、压缩文件此类的专门存储格式。从这个定义至少可以简单地总结以下三点:纯XML数据库是专门用来存储XML数据的,而且完整无缺地存储XML模型的所有成分;文档进得去出得来;NXD可能根本就不是真正独立的数据库。随着对NXD的

25、认识与技术的发展,人们越来越不认同上述定义的第三点。在这一方面,德国的SoftwareAG(参阅ht-tp:www2,softwareagcorn)公司走在了前面。他们认为建立和设计NXD系统是用来处理XML数据的,而不仅仅是在任意数据模型的数据库系统之上附加一层对XML的处理。用户可能一眼看不出它们之间有什么差别,但最根本的不同是在系统的内部。在很多方面,XML都不同于其他著名的数据模型(如关系模型、面向对象模型)。将XML映射到另一种数据模型常常引起“阻抗失配”,并导致功能和性能上的局限”。因此,NXD必须直接存储XML数据。43 NXDBMS的体系结构NXDBMS是目前XML研究领域的一

26、个热点问题,也是核心问题,已经出现了一批相对独立的系统。从查询方法上可以把NXDBMS分为两种:大量地吸收了文档处理和编程语言思想而不是数据库处理数据的思想,如KweeltL,X-Hive(参阅X-HiveCorp(2002)X-HiveDB,http:wwwx-hivecom)等,采用导航的方式遍历XML文档,把长路径转换为嵌套循环的数据搜索。这种方法在处理的数据集相对较小时效率很好,但随着数据量的增大,其效率急剧下降。例如,Xindice(参阅ApacheWebSite(2002)ItemloonXindiceFAQ,http:xmla-pacheorsxindicefaqhtml)就规定

27、其能够处理的文档大小不能超过5MB。真正基于数据库思想,支持描述化查询语言和一次一集合的查询处理方式,提供完整的查询优化策略。典型的系统有Tamino,Timber,Natix等。与RDBMS一样,NXDBMS的体系结构也分为用户接口、查询处理、存储管理和物理存储四大部分。同时,系统的事务管理、并发控制和故障恢复都与RDBMS有着相同的原理。5 NativeXML数据库的挑战性问题51 NXD的物理存储将元数据、XML数据、索引和统计数据如何放置在物理磁盘上永远是一个挑战性的问题,而如何物理存储XML文档的数据尤其关键。研究NXD的物理存储的另外一个重要原因是因为相当多的时候NXD要用到簇集策

28、略,而很多RDBMS或对象管理器并不支持用户对数据进行簇集。511 数据模式问题NXD既能存储合法的XML文档(有DTD或XMLSchema支持),又能存储良构的XML文档(无DTD和XMLSchema支持)。在XML文档的DTD或XMLSchema不可利用的情况下,NXDBMS还能够存储和检索任何XML文档。任何一个XML文档都可以表示成一个树型结构,如图1所示。由于XML数据具有自描述性,因此对于没有DTD或XMLSchema支持的XML文档可以自动抽取其模式信息”“,这样的模式可以用一个有向图来表示,如图2所示。当然DTD和XMLSchema本身也可以用有向图来表示。由于XML数据的半结

29、构化,数据与模式信息之间并不具有完全对应的关系,这时的模式信息只是作为查询或者了解数据的一个指导,并不具有约束数据的功能。而在传统的数据库中,数据与模式信息保持完全的对应关系,模式对数据具有约束能力,模式严格地约束数据的类型、操作和结构,数据的查询、更新和存储都要遵循模式的定义。因此,在NXDBMS中如何发挥XML模式的作用是一个挑战性的问题。512 存储粒度问题在数据模型上,XML数据是一棵由各种节点组成的树,常见的节点包括元素(Element)节点、属性(Attribute)节点和文本(Text)节点。但是NXD中,一条记录所对应的子树有多大、包含多少个什么样的节点,这便是NXD的存储粒度

30、问题。不同的存储粒度,记录的物理含义不同,可能是一棵子树,也可能是一个节点,还有可能是整个XML文档。从原理上讲,NXD中记录的存储粒度有三种:(1)粗粒度。一个XML文档是一条记录,文档是作为一个整体来操作的,不需要有DTD或XMLSchema等模式信息的支持。ApacheXindice(参阅http:xmlapacheor9xindice)就是粗粒度存储的典型例子。(2)细粒度。XML文档的每一个节点就是一条汜录,也不需要有文档模式信息的支持。节点可以分为广义节点和狭义节点。(3)中粒度。XML文档的一个片段(即一棵子树)是一条记录。子树的方法比较特殊,因为它存在一个如何划分子树的问题。目

31、前,有两种划分子树的方法:根据物理块大小,使子树的大小与物理块大小相近,不需要文档模式信息的支持;根据逻辑意义划分子树,使子树成为一个比较完整的逻辑单位,需要文档模式信息的支持。不同的粒度对存储空间和查询的支持各不相同。对同一个XML文档来说,记录的粒度越细,则记录数目越多,用于表示记录之间关系的指针(逻辑指针或物理指针)就越多,从而耗费较大的存储空间,并且当XML文档很大时,重新生成整个文档会耗费大量的时间。但是细粒度的存储方法使每个元素和属性,包括文本都可以被单独查询、修改或删除,且对其他文档结构影响最小,具有最大的灵活性,也无须利用文档的模式信息。相反,记录的粒度越粗,为了读取某一个节点

32、而一并读进来的节点数就越多,而这些读进来的节点可能对查询没有任何用处。但是粗粒度的存储方法不需要存储过多的逻辑指针和物理指针,能够节省存储空间,而且重构整个文档会比较快一些。因此,如何根据查询的要求来确定XML数据的存储粒度也是一个挑战性的问题。513 存储顺序问题如果NXD中存储XML文档的记录粒度是狭义的节点或者子树,那么这些记录在物理块中是如何组织的呢?这就是记录的存储顺序问题,存储顺序是指记录在物理上的相邻关系。记录的存储顺序一般有以下几种:(1)按深度优先顺序存储,这是最常见的存储顺序。(2)按广度优先顺序存储,这种顺序有点分层存储的意思。(3)按某个条件簇集存储,将满足某个条件的所

33、有记录存储在同一个物理块内或物理上相邻的物理块内。对于XML文档来说,一般是将同类记录簇集存储,所谓同类记录是指记录的节点类型相同的记录。这种方法实际上在物理存储上破坏了节点的顺序,但是对查询处理是有利的,并且在更新数据时无须在数据的中间插入,非常有利于数据的更新。根据存储粒度和存储顺序,将会产生以下几种具体的存储方法:基于元素的深度优先(DEB)方法;基于子树的深度优先(DSB)方法;基于元素的广度优先(BEB)方法;基于子树的深度优先(BSB)方法;基于元素的同类簇集(CEB)方法;基于子树的同类簇集(CSB)方法。如何确定NXD中记录的存储顺序,以及如何针对不同的应用选取不同的存储方法,

34、或者是针对不同的查询选择不同的存储方法,这些都是挑战性的问题。52 NXDBMS的查询处理基于数据特征提出问题,从数据库中选择和综合数据的过程就是查询。在数据库中频繁访问的仅仅是部分信息,如果尽可能地明确表示用户最需要的信息,则能够有效地提高查询效率。所以查询处理与数据的物理存储和索引是密切相关的。根据查询的拓扑结构,XML数据库的查询类型可以分为:节点查询,根据唯一标志符在XML文档中检索单个元素节点;路径查询,根据XML路径规范,即Xpath定义的路径(从根节点到个叶子节点)检索一个或多个节点;树查询,根据XML的树模式检索一系列节点或节点表;图查询,根据XML的图模式检索一系列节点或节点

35、表。XML的图模式扩展了XML路径支持的层次查询,增加了查询的复杂性和灵活性。当节点被文档内链接(通过IDREF)或者文档问链接(通过XML链接:XLink)相连接时,XML文档的一个树结构就成为一个有向图结构。XML文档的逻辑模式应该是一个有向图,这个有向图可以通过适当的变化而成为一棵树。虽然NativeXML数据库管理系统的事务管理、并发控制、故障恢复和安全问题与RDBMS一样,但是对基于XQuery语言的查询处理是必须的,这也是实现NXDBMS的关键所在,即查询引擎或x引擎。在这里将需要潜心研究的核心问题逐一介绍如下。521 定义完善、合理的查询代数从理论上讲,查询代数是对遵循一定数据模

36、型的XML文档集合的操作集,这样的查询代数可以简称为x代数(与关系代数相对应),具有一次一集合的查询能力。而在W3C的最新规范中也给出了“形式语义(FormalSemantics)”,即从形式亡定义语言的底层代数,但这种代数是基于导航方式的,而不是数据库研究者所期望的一次一集合的x代数。W3C中XQuery的形式语义的操作对象也已经由集合转变为序列,在这两者之间还有哪些问题没有解决?XQuery的形式语义的其完备性和保真性的问题都需要认真研究。再有,X代数应该是什么样子的?包含哪些操作?其完备性和保真性又如何?这些更值得研究。522 XML查询分解XML查询语言,如XPath和XQuery都是

37、将路径表达式作为核心内容。针对路径查询的处理问题,人们已经进行了大量的研究工作。在树状的XML数据中匹配路径查询的基本方法就是对数据进行导航式的遍历,文献对这种方式进行了探讨。导航的方式简单直接,但执行效率不能得到保证,尤其是在大数据量的情况下。导航式遍历方法的低效性促使了类似于关系数据库中一次一集合的查询处理策略的出现。NXDBMS的查询分解也是将XQuery表达的查询转换为由X代数运算构成的查询树,具有一次一集合的操作特征。但是,复杂路径表达式的处理还有哪些更好的方法?在从XQuery到查询代数树的转换过程中,有哪些有关x-代数的等价规则可以利用?如何转换才能得到一个等价的,但执行效率更高

38、的X代数表达式?523 XML查询优化由查询分解得到的查询树包含很多x、代数运算,这些运算执行的先后顺序、在什么时候使用索引、使用什么样的索引、整个表达式的计算方法采用流水线方法还是实体化方法,都是影响查询效率的关键因素。不同执行顺序好坏的评价标准是它们的执行代价估计,这里的代价是指磁盘IO。在XMI,查询优化中,应该重点处理什么问题?是不是主要针对复杂路径的代价估计?有没有类似关系数据库的启发式优化规则?代价估计的具体方法是什么?是不是基于直方图的方法是最好的?这些都是需要重新认识和研究的问题。524 实现X代数运算的各种高效算法关系中的连接运算的算法有嵌套循环连接、索引嵌套循环连接、哈希连

39、接和排序一归并连接等。那么x-代数中的连接运算有哪些高效的算法?结构连接(StructureJoin)还有没有提高的空间?渚如此类的问题都是NativeXMI,数据库研究人员目前的研究重点。53 XML数据更新:XUpdate对于XML数据的更新操作,无论在语言还是在操作方法上目前都没有一个统一的标准。更新操作从逻辑上是指元素的插入、删除和更新,是不是还包括其他内容,这正是需要仔细研究的问题。更新包括模式检查、节点定位、存储空间的分配和其他辅助数据的更新,如索引、编码等。关于XML数据的更新语言,W3C目前还没有这方面的工作计划,XQuery中也没有更新XML数据的描述。而民间团体XMI:DB

40、Initiative(参阅http:wwwxmldborg)则给出了更新语言XUpdate的规范(参阅XML:DBXUpdateUseCases,KimbroStaken,http:wwwxmldatabasesorSprojectsXUpdateUseCases),但这是不是能被W3C所接受,目前还是个未知数。因此,在这个方面还有很多问题需要认真研究,当然可以借鉴XML:DBXUpdate的成果,如可以参考XML:DBXUpdate提供的基本操作。6 典型的NXDBMS简介61 OrientXOrientX是中国人民大学最近几年开发的一个纯XML数据库管理系统。611 物理存储OrientX

41、存储系统建立在操作系统的文件系统上,申请若干定长的文件(如8MB),这些文件属于特定的数据集,数据集用SetlD来标志;在文件上划分逻辑物理块,物理块定长,是操作系统物理块的整数倍(如8KB),物理块用LpNo来标志;给定一对(SetlD,LpNo)能马上找到对应文件相应的偏移量。存储管理以记录为单位,不同的存储粒度记录的物理含义不同,可能是一棵子树,也可能是一个节点。虽然OrientX采用了DEB,CEB,DSB和CSB四种不同的存储方法,但对上层查询提供的接口都是一样的,这样可以提高数据的独立性。一个XML文档包含若干条记录,多个满足同一个模式定义(DTD或者XMLSchema)的XML文

42、档存放在一个数据集里。但模式信息对OrientX来说不是必需的,有的存储方法一定需要模式信息,有的存储方法不需要模式信息。612 索引管理OrientX的SUPEX索引利用了在实际应用中经常存在的XML数据的模式信息DTD。从DTD出发构建索引结构,总结了符合DTD的XML数据可能出现的路径结构,其结构包括三个部分:结构图、元素映射表和索引记录。结构图是路径索引的主体,它是从DTD中构造出来的,描述了符合DTD的文档中可能出现的路径。元素映射表是为了便于找到结构图中用同名元素名标记的节点而建立的人口索引。而索引记录是若干个元素记录的集合。通过结合XMI。数据的编码,该索引可以支持多币查询方式,

43、包括绝对路径查询、父子关系和祖先一后代关系的基本结构关系、相对路径查询等,从而能够有效地支持路径表达式的计算。XML数据编码的引入使得查询结果可以进一步用于路径表达式的计算。61. 3 查询处理OrientX将由XQue表达的查询转换为由XML代数运算构成的操作树,采用基于代价估计的查询优化策略,具体的代价估计方法是基于直方图的方法。数据更新是与数据查询相结合的,没有专门的数据更新语言。62 TaminoTamino是SoftwareAG于1999年发布的NativeXML服务器的第一个版本,其中包括NativeXML数据库。Tamino可以处理面向数据的文档(有正规的结构,元素顺序无关紧要,

44、不会出现?昆合内容)和面向文档的文档(几乎没有正规的结构,元素顺序非常重要,会出现混合内容),也可以存储其他类型的数据,如图像、HTM,文件等。Tamino是一个完整的数据库管理系统,支持事务,提供安全保证和多用户访问,可扩展性好。Tamino可以运行在Windows和UNIX操作系统上。621 XMI,存储XML文档可以有模式信息,如DTD或W3C的XMI。Scheina,但它们对Tamino来说都不是必需的。DTD缺乏数据类型的信息,而它们是正常索引所必需的信息,因此DTD作为XMI。数据库模式是不够格的。2001年,W3C发布了XMLSchema的推荐标准,它是一个模式定义语言,覆盖了D

45、TD的所有功能并巳扩展了很多新的概念。它与DTD的最大区别就是增加了它苦心经营的类型系统,使得XMLSchema比较适合描述数据库模式。与关系数据库中模式与数据是紧耦俞的不一样,Tamino中模式与数据是松耦合的,而且有可能模式只描述文档的一部分。Tamino数据库由很多所谓的数据集组成,数据集仅仅是一组文档的包装器,每个文档只能存储在一个集里。每个集均由相关的W3C的XMLSchema描述,在模式里,Doctype是个特殊的概念,它标志了在XMLSchema中作为根元素声明的所有元素中的一个。在集里,每个文档都只能作为一个Doctype的成员被存储。文档的根元素标志了Doctype,因此,在

46、一个集里Doctype和根元素类型是1:1的关系。如果文档存储在一个集里,而没有Doctype和文档的根元素对应,这时就会动态地创建一个Doctype。在这种情况下,就没有相关的用户定义的模式。万一集里有一个相关的用户定义的模式存在,Tamino就对照这个模式验证输入文档。Tamino的元数据也以XML文档的形式存储在系统集里的系统Doctypes中。622 索引在数据库系统中,索引是绝对不可缺少的,否则就无法以满意的方式查询大量的数据。Tamino支持三种类型的索引。(1)标准索引是基于值的索引,用于快速查找具有特定值的元素或属性。(2)文本索引是进行高效文本检索的先决条件。在文本索引中,包

47、含在元素或属性中的单词被索引,这样可以加速对该词的搜索。(3)结构索引是XMI。特有的索引类型,俗称路径索引。精简的结构索引保存了在特定Doctype的任何实例叶,可能出现的所有路径信息。如果没有这样的索引,拼写错误就可能导致对一个Doctype的所有文档的顺序扫描。全结构索引不仅记录了一个Doctype中路径的存在,而且记录了路径所出现的文档。623 磁盘的物理组织Tamino数据库由两部分空间组成:数据空间,包含所有的文档和对象,以簇集的方式组织Doctypes,以便加速顺序扫描。基于文档的大小,Tamino选择了相应的压缩技术;索引空间,包含索引数据。上述两个空间都可以分布在多个不同的外

48、部存储卷上,以便Tamino可以存储TB级的数据;Tamino还可以根据需要自动扩展存储空间。对于事务日志,Tamino有一个日志空间,它是一个固定大小的容器,可以循环保存所有必要的日志,以便回滚事务或在系统崩溃后重做事务。624 查询XMI。支持XPathXQuery,且在两个方面对XPath进行了扩展。63 TimberTimbert是密歇根大学于1999年开始开发的一个NXDBMS,系统基于操作树的块(Bulk)代数,主要贡献在于一次一集合的查询处理能力。这个系统参照标准RDBMS的设计与实现,RDBMS的很多组件都不需要改动就可以用于NXDBMS,如事务管理器。利用块代数可以操作树集合,代数中的每一个运箅都以一个或多个树集合作为输入,而产生一个新的树集合作为输出。631 数据存储Timber基于非常流行的后端存储系统Shore,Shore负责磁盘存储器管理、缓冲和并发控制。Timber中的节点是广义节点,将所有的属性集成为一个子节点,将元素的文本内容单独作为一个子节点。文档树中的节点

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号