探究Native XML数据库技术 (2)

所有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只能在数据层面实现信息的保留。

1. 对XML数据的查询支持

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

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

基于模板(Template-Based)的查询

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

2. 基于SQL(SQL-Based)的查询

通过在SQL语句的实现中增加对XML的支持,完成对XML数据的查询。例如Oracle9iR2中,增加了XMLTYPE类型和一些新的函数包以支持XMLDB。

3. XML查询

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

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

在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%的增长速度,我们没有理由不为它的前景看好。

参考资料:

关于XML数据库的资料:http://www.rpbourret.com/xml/XMLDBLinks.htm

Oracle XML数据库的资料:http://www.oracle.com/ip/index.html?xmldb_intro.html

Ipedo数据库的介绍:http://www.ipedo.com 或 http://www.ipedo.com.cn

你可能感兴趣的:(数据库)