频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Native XML数据库技术详解

来源: 作者: 出处:巧巧读书 2006-10-04 进入讨论组

  XML技术从诞生之日就预示了它辉煌的未来,特别是随着近一、两年Web Service的蓬勃发展,XML越来越多地活跃在数据交换和存储领域。

XML数据量指数级的增长,要求更有效的数据管理能力和更快、更精确的查询。在传统数据库厂商宣布支持XML的同时,一种新的数据库技术,Native XML DBMS(NXD)也已崭露头角,打破了RDBMS传统数据库一统天下的局面,为数据库技术的研究提供了一次良好的发展契机。

本文将向您介绍XML和数据库的关系,NXD的技术特点,传统数据库和NXD的比较和NXD的现状和前景。


XML和数据库的关系


XML是数据库吗?

XML文档具有"可自描述"、"无限嵌套"、"树形结构"等特点,因此在某种意义上,一个XML文档就是一个数据库或其中的一张表。

下面所示的XML文档Student.XML,描述了一个学生的信息:学号、姓名等。我们可以很方便的将其对应于传统RDBMS中一张二维表(table):标签student为行,标签id、name等作为列。

Student.XML

<student>
<id>19803001</id>
<name>
<lastname>Johnson</lastname>
<firstname>Jack</firstname>
</name>
<email>jack@ipedo.com</email>
...
</student>



我们可以把相关的XML文档放在一个目录下,利用文件系统来管理,提供查询、更改、增删操作。为更好地支持XML,W3C还制定了一些相关技术,如:文档模式(DTD、XML Schema),查询语言(XPath、XQuery等),编程接口(DOM、SAX等),来方便开发应用程序。

但如果从更高的技术角度出发,就会发现,对XML文档简单的文件管理是远远不够的:低效拇娲⒆橹⑺饕檠际酰惶峁┦挛瘛踩指椿疲薹ūVな莸耐暾院鸵恢滦裕挥胁⒎⒖刂啤⒁浦补ぞ叩取?

数据库在XML应用中的角色

事实上,XML作为数据交换的标准,更着重于统一数据格式,而不是提供数据库的特性。因此在XML应用中,数据库作为数据管理的位置依然没有改变。

XML数据本身的树形结构不同于关系模型中的二维表结构,这种差别反映在数据库产品处理XML数据的技术上,形成两大阵营:XML-Enabled DBMS(XED)和Native XML DBMS(NXD)。

XED是在原有数据库基础上扩展了XML支持模块,完成XML数据和数据库之间的格式转换和传输。从存储粒度上,可以把整个XML文档作为RDBMS表中一行,或把XML文档进行解析后,存储到相应的表格中。为了支持W3C的一些XML操作标准,如XPath,XED提供一些新的原语(如Oracle9iR2增加了一些数据包来操作XML数据等),并优化了XML处理模块。

NXD则出现在XML数据处理领域内,一般采用层次数据存储模型,保持XML文档的树形结构,省掉了XML文档和传统数据库的数据转换过程。详见2。

两种文档类型

“以数据为中心”(data-centric)

“以数据为中心”的XML文档着重于文档中的数据,而非文档格式,如航班信息、销售定单、科学计算结果等。这种文档的数据一般由机器产生,来源于传统数据库中的数据。主要应用在电子商务、ERP、EAI等领域,集成不同数据源的数据,交换信息。

“以数据为中心”的XML文档具有以下特点:

· 结构化的数据

· 数据粒度大小适中

· 很少或没有混和内容(Mixed Content)

· 文档顺序(Document-order)不重要

student.XML就是一个典型的"以数据为中心"的XML文档,记录了学生的信息。每个学生的信息都很规整,而且粒度合适,同级元素(element)间的顺序不重要,交换两个同级元素(element)并不会破坏文档的可读性。

“以文档为中心”(document-centric)

"以文档为中心"的XML文档主要是用来表示人类自然语言描述的数据,如电子邮件、书和用户手册。这种文档具有更复杂的结构,一般不是机器自动产生的。目前,Web上的大部分数据都可以表示成这种文档。

"以文档为中心"的文档具有以下特点:

· 半结构化或非结构化的数据

· 较多的混和内容(Mixed Content)

· 文档顺序(Document-order)重要

下面的products.XML就是典型的一个"以文档为中心"的XML文档。

products.XML

<Product>
<Intro>
The <ProductName>IPEDO Native XMLDB</ProductName> from
<Developer> Ipedo,Inc.</Developer> is <Summary>like a true native XML
Database, ...</Summary>
</Intro>
...
</Product>



对于"以数据为中心"的XML文档,XED可以方便地将其中的数据抽取,存储在传统数据库中,但对于 "以文档为中心"的XML文档则显得力不从心了。NXD由于无需在两种模型之间转换数据,因此在处理"以文档为中心"的XML文档就很有优势。


NXD的技术特点


NXD是专门为存储XML文档设计,也兼有一般数据库的特性,例如支持事务,并发控制,查询语言,安全机制,二次开发接口等。唯一的不同之处在于其内部存储模型是基于XML文档树形结构,而非关系模型。

Ronald Bourret在其"XML and Databases"一文中,对NXD有如下定义:

“NXD的逻辑模型建立在XML文档,而非文档中的数据之上,并根据它来存取数据。该模型至少包括元素(element)、属性(Attribute)、PCDATA和文档顺序,例如XPath的数据模型……NXD的最小存储单位是XML文档,……”

一般认为,NXD应该具有以下几个特性:文档集合(Document Collection),查询、更新,事务、锁和并发控制、二次开发接口等。

文档集合

很多NXD产品都支持“文档集合”的概念,就像文件系统中的一个目录或RDBMS中的一张表,一个“文档集合”把一类文档聚集在一起,方便用户操作。集合级别上的查询、修改操作都会反映到集合内的每个文档。

一般说来,一个“文档集合”关联一种模式。将文档加入到有模式的"文档集合"时,会对要加入的文档进行模式检查。只有符合"文档集合"模式的文档才可以加入。

不同于RDBMS中表必须具有模式,NXD还提供"无模式"的文档集合,即将一个文档放入该集合中时,不必检查该文档的模式。"无模式"的文档集合大大方便了用户存储格式很难统一,半结构化的XML文档。

查询语言

XPath和XQuery是W3C推荐的针对XML文档的查询语言。目前大部分NXD产品都支持XPath,。另外还有一些NXD提供专有的查询语言。

XPath是基于XML文档树形模型,给出从某个结点起的查询路径,搜索文档。目前,XPath作为数据库查询语言还有不少缺陷:不能分组、排序、连接等。

而XQuery更像一种编程语言,支持循环等逻辑,支持分组、排序、连接等。相对于传统数据库的标准SQL语句, XQuery在对XML数据的查询方面,是一种功能更强大、更易于编程的方法。

事务、锁和并发控制

几乎所有的NXD都支持事务处理。但是,锁的粒度通常比较大,对整个文档的而不是对文档片断(Fragment)的,所以多用户并发性的支持相对较低。具体的并发程度取决于应用程序以及"文档"的构成。

二次开发接口

几乎所有NXD都提供编程接口:提供数据库连接、浏览元数据、执行查询和返回结果的方法。返回结果通常是XML字符串、DOM树、返回文档的SAX解析器。如果查询返回结果是多个文档或文档片断(Fragment)的话,通常都会提供枚举这些结果的方法。对于以Client/Server模式运行的数据库产品,还可以将结果通过网络协议(如HTTP)回传给客户端。

Round-tripping

NXD一个重要特性是它为XML文档提供了Round-tripping:可以将XML文档存放在NXD中,而且再取回"同样的"文档。对于以"文档为中心"的应用程序来说非常重要,因为易被XED忽略的CDATA部分、实体应用、注释和处理指令是这些文档不可缺少的组成部分。特别是对于法律和医学领域中格式不允许随意窜改的数据文档。

所有NXD都能够在元素(element)、属性(Attribute)、CDATA和文件顺序的级别上为文档提供Round-tripping,能达到的具体程度取决于数据库产品。


更新和可持久化的DOM

大多数NXD对XML文档的更新是通过其提供的API调用完成的,或者简单的替换整个文档来实现的。某些NXD还提供了可持久化的DOM(Persistent DOM,PDOM):在某种持久性存储介质上实现了DOM模型,对PDOM所作的改变直接反映在数据库中。由于PDOM树是"现场"的,数据库通常和应用程序在同一个进程空间。


传统数据库与NXD的比较


XED依靠传统数据库技术二三十年的积累,在与NXD竞争的前期,占据了XML应用市场的很大份额:在Intellor公司2001年3月份的调查报告中,XED的市场份额将近是NXD的3倍,约12亿美元。NXD虽然出场较晚,但市场份额增长速度却非常强劲,在短短的3年中,已经由1999年的2,300万美元发展到2001年的3.9亿美元,并在今后两年内将保持200%的增长率。目前,NXD主要应用在制造业、生物医药、电信等领域。

通过对比XED和NXD技术,我们可以更清楚地 <图 文 结 合:http://www.qqread.com/xml-soap/a227307.html 更多文章 更多内容请看数据库专栏数据库处理专题城域网专题专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章