欢迎光临
我们一直在努力

Native XML数据库技术详解-.NET教程,XML应用

建站超值云服务器,限时71元/月

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技术,我们可以更清楚地看到二者的差别,特别是反映到应用领域。这一点对那些需要选择数据库开发xml应用的用户非常有意义。

xed存取xml数据的技术特点

xed中这部分工作是由xml网关模块完成,它处于用户逻辑模块和数据库逻辑模块之间,将传统数据库包装起来,给用户提供了一个透明的xml数据源。

xed存取xml文档面临以下几个技术难点:

xml文档模式和xed模式的映射为了把xml文档存到xed中,我们必须将xml文档的模式(dtd或xml schema)映射到数据库模式。同样,将数据从xed取出来重新组合成xml文档,要完成相反的操作。这种转化发生在元素(element),属性(attribute)和文本(text)上。由于xed注重的是数据而非格式,所以在这个过程中,xml文档的大部分物理结构(cdata、实体等)和一部分逻辑结构(处理指令、注释等)都被忽略,而数据被保存。这种转换可能会丢失信息,一个xml文档存到xed里后再取出来,可能会变成另外一种格式。相对于nxd提供的round-tripping,xed只能在数据层面实现信息的保留。

对xml数据的查询支持

由于xml文档模式和xed模式很难保持一致,所以在存取过程中经常用xslt完成转换。但xslt非常耗时,这会对查询性能造成很大影响。所以较好的解决方法是xed提供一种查询语言来返回xml文档。

目前已经有很多xed产品提供了这种语言,主要分三类:

基于模板(template-based)的查询

这是目前rdbms xed最流行的方法,将sql语句嵌入到已写好的xml文档模板中,在实际查询时候用结果替换。

基于sql(sql-based)的查询

通过在sql语句的实现中增加对xml的支持,完成对xml数据的查询。例如oracle9ir2中,增加了xmltype类型和一些新的函数包以支持xmldb。

xml查询

包括xpath和xquery。与上面两种不同,这种查询是建立在xml文档模型上。也就是说,如果xed要支持这种查询方式,必须提供虚拟的xml文档。基本上目前的xed只支持xpath。

数据类型、空值,字符集等

在xml文档和xed的转换过程中,还会遇到数据类型的匹配、空值和字符集处理等问题。

xml文档中除了不被解析的一些实体外,所有数据的类型都以文本(text)来表示。在转换过程中,可能会遇到类型不匹配的问题,诸如受到jdbc驱动模块的限制、日期的不同国际化表示。

xml文档以灵活的方式来支持空值,如省略某个元素(element)、零长度的元素(element)和属性(attribute)等。而这些在xed中则有不同的意义。

同样问题还出现在字符集、二进制数据、对xml文档标签的处理上。

xed和nxd的比较

- xed的优、劣势

优势:

用户不需要将传统数据库中原有数据重新移植到新系统中,只是稍加改变,就可以支持xml应用。

传统数据库技术,例如并发控制、事务等,已经很成熟

传统数据库知识和经验依然有效,用户不需要为了应用xml而再去学习一套新的数据库技术

劣势:

xml文档存入到数据库时需要将其"打碎",取出时需要"组合",不仅耗时,而且文档的格式可能会不同

xml文档和数据库之间的模式转换复杂,在前期开发阶段需要投入很大

对"以文档为中心"、格式复杂的xml文档处理性能较差

在采纳xml技术标准方面较落后

- nxd的优、劣势

优势:

xml文档存取无需模式转换,存取速度快

对格式复杂的xml文档支持比xed要好

支持大部分的最新的xml技术标准

劣势:

在传统数据库技术方面比较薄弱,没有经过时间的考验

知识比较新,相应的支持人员和文档资源都比较少

应用范围仅局限在xml应用领域中

事实上,两者的优劣并没有统一的答案,而是和具体的应用相关。在开发格式较简单、数据内容比格式更重要的应用时,xed是不错的选择,特别是在已有的传统数据库上要提供xml的访问接口的情况下。相反,如果xml文档格式复杂,数据本身就有层次性关系,或是只有xml数据的时候,就可以考虑nxd,因为它提供更好的性能,对xml标准有更完备的支持。另外,由于nxd在事务、数据恢复等传统数据库技术方面还未得到时间的检验,因此对数据安全要求较高的一些应用,如银行、金融系统的数据库,建立在传统数据库上的xed相对来说更有优势。

nxd的现状和前景

在3、4年前it业界还在为应该选用nxd还是传统数据库争的不可开交时候,就已经有一些公司悄悄地投入到nxd的开发中。到今天,已有了十多种nxd产品。ibm,microsoft和oracle等传统数据库厂商,也正在踏入nxd的领域。

但走在nxd队伍前面的却是一些"小"公司。pc magazine在2002年6月份,针对市场上的4种主流产品做了详细评测,包括性能、安全、易用性和对新技术的支持等。这4种产品是excelon的extensible information server 3.1,ipedo的ipedo xml database 3.0,neocore的neocore xms 2.0和software ag的tamino xml server 3.1,其中ipedo xml database 3.0以满分5分获"editor choice"奖。下面我们以ipedo xml database 3.0(ixd3)为例,窥探一下nxd技术的现状。

ixd3支持

· 事务、并发控制,提供可靠的数据恢复机制

· 支持xpath和xquery两种查询和in-memory的高速索引

· 基于图形和命令行的用户界面,并提供了各种工具,如导入/导出,备份等

· 支持xml文档的多版本控制

· 支持dom、soap、com、ejb和java api多种数据库访问协议和开发接口

· 多种平台:windows,linux和solaris;

在去年7月份发布的ixd3.1版本中,还提供基于acl的安全控制、web_dav等新功能,并集成了内容管理模块,为基于web service等新技术的应用提供了一整套解决方案。详细介绍请参阅[2]。

可见,nxd发展到今天,技术已经日趋成熟,不仅提供传统数据库绝大部分功能,而且支持xml的最新技术标准,非常方便xml开发人员进行开发。最近在对ipdeo xmldb3.1、tarmino3.0和oracle9ir2内嵌的xmldb的测试过程中,笔者发现nxd在开发xml应用方面不仅开发速度快,而且提供了更为丰富的api接口。

同时我们也应该看到,nxd技术发展时间相对传统数据库来说还很短,技术基础还不是很牢固。在某些xml应用方面,nxd并不具有比xed很明显的优势,特别是在对数据安全要求很高的数据库应用领域。

但nxd在处理xml数据时拥有传统数据库所不能比拟的天生优势,已促使越来越多的目光聚焦到它上面。随着时间的推移,相信nxd也会得到检验。面对未来几年巨大的市场份额,以及它每年200%的增长速度,我们没有理由不为它的前景看好。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Native XML数据库技术详解-.NET教程,XML应用
分享到: 更多 (0)

相关推荐

  • 暂无文章