【聚杰网XML】基于XML的数据库总体分析
支持XML的数据库系统(XML-Enabled Databases):数据库提供了扩展的功能,能够在XML文档和数据库之间进行数据的传输。通常是设计成为能够存储和提取以数据为中心的文档。一般来说是把XML文档进行解析以后,存储到相应的表格中,当然,也可以存储以文档为中心的文档,也就是说把整个文档作为一个单一的表中的一个字段,然后通过文本检索机制进行查询。因为许多数据库现在能够把内容发布到网站上,基于XML的数据库和XML服务器之间的差别就变得很模糊。
典型的产品有:微软的SQL Server 2000。SQL Server2000通过三种方式支持XML技术:
1 在SELECT语句中增加了FOR XML条件子句:FOR XML条件子句有三种选择,用来指定如何把SELECT语句映射到XML上去。RAW模式指定结果集为一个表格,表格中的每一行对应一个元素,每一列对应元素的属性或者是它包含的子元素。AUTO和RAW的区别在于:行的元素名称和表格名称一致,产生的XML文档是线性嵌套的,和表格在SELECT语句中出现的顺序相对应。EXPLICIT允许你使用一系列的SELECT语句的UNION来构建一个XML文档。
2 通过XPath进行信息定位:通过模式映射的方式,也就是在XML文档的元素和属性以及在数据库中的表和字段之间建立映射关系。这里把XML看成是一棵对象树,而使用XPath的一个子集来进行查询。
3 在存储过程中使用OpenXML函数:OpenXML函数被用来提取XML文档的任何一个部分,并把它当作一个表格,然后就可以用SELECT语句中的FROM指定这个表格,并通过INSERT语句在XML文档和数据库之间传递数据。并可以用XPath来指定具体的元素或者属性。
原始的XML数据库(Native XML Database):实际上,在一个数据库中存储XML文档可以有四种选择:
1. 以文本形式存储整个文档,比如在关系数据库中用BLOB类型,在文件系统用文件类型。
2. 在文件系统中以修改过的形式存储整个文档,比如,以压缩的形式或者事先解析过的形式。
3. 把文档结构映射到数据库中,比如把DOM模式映射成为数据库中表格的形式。如何建立映射,各个数据库可以有不同的实现,。
4. 把数据结构映射到数据库中,比如,把一个包含销售订单的XML文档映射到Order,Itmes,Parts和客户等表格中去。
原始的XML数据库和支持XML的数据库的区别在于原始的XML数据库一般使用方法2和方法3。而支持XML的数据库一般选用方法4。
典型的产品有斯坦福大学开发的Lore系统,它的数据库实际上是一个半结构化的数据库。所谓半结构化的例子就是我们的简历,其中既有一些结构化的信息,比如性别,年龄,通讯电话等等,也有非结构化的信息,比如个人特长等的描述。XML本身就是一个非常好的半结构化数据模式的例子,它本身是自描述的,包含了很多元数据。而且它同时可以扩展或增加新的元数据(或者说是新的字段)。
Lore是用来存储半结构化的数据库。它最开始是用来存储HTML文档数据的,但现在已经可以被用来作为XML数据库。它包括了一个查询语言(Lorel),多索引机制,查询优化器,多用户支持,日志记录和恢复等功能,并且能够倒入外部数据。因为Lore支持半结构化,所以它也能够存储没有DTD定义的XML文档。
XML服务器:一般认为,XML服务器是一个提供数据服务的平台,而这里的数据就是以XML形式出现的,而这些数据主要是为分布式应用程序服务的,比如电子商务和B2B应用等。XML服务器通常包括了一个完整的应用开发环境,并通过各种数据存储方式来使应用程序可以方便的获取和使用这些数据。存储的数据包括传统的数据库数据、电子邮件信息和文件系统等等。我们知道传统的Web服务器都是基于HTML文本进行信息传送的,随着XML技术的出现,对于基于XML的Web服务器的需求也就产生了。那么到底什么是XML服务器呢?准确定义XML Server这个概念是困难的,因为这实在是一个比较新,而且概念很广泛的东西,虽然已经有许多的产品称自己为XML Server,比如DataChannel公司的DataChannel Server 4.1;Software AG公司的Tamino;Excelon公司的excelon,但在应用的范围上以及功能上,每种产品都各不相同,因此这里也就不为XML Server进行定义,而是归纳这几种产品的共同拥有的一些特点,以说明的方式来向大家解释XML Server这个概念。 简单地讲,XML Server是一个提供数据的平台,它能够以XML文档的形式与分布式的应用进行数据交互。比如电子商务这一类的应用。这听上去和传统的数据库非常的相似,它和数据库一样提供数据的存贮与提取功能,但数据的格式的是基于XML的,因此在数据的处理方面,所用的是和传统数据库完全不同的技术了。
所以XML Server被认为是XML Database其中的一种,XML-enabled Server则相对来讲比较容易理解,因为它本质上就是一个Web Server,对于客户端而言,浏览Web,客户端不会感觉它和传统Web Server有什么太大的区别,但实际上Server端在对请求(REQUEST)处理方法上,XML-enabled Web Server和传统Web Server是完全两种不同的方式,这是由于XML文档与HTML文档本身的特性所决定的。我们大家都知道,XML文档是一种以数据为中心的文档,XML文档本身没有表示格式化的信息,而是通过特定的XSL或者CSS来表现,也就是说数据和表现是分离的。而在客户端提交需求后由XML-enabled Web Server将内容与形式结合后把最终结果发布给客户端的Web Server。因此这是一种胖服务器,瘦客户的模式。这种模式同微软将XSL Parser集成到IE中的设计思想是完全不同的。它的优点是能够对不同的设备浏览Web的提供各自相应的格式的文档,而不需要人工的干涉。
从另外一个角度讲,XML Server可以提供比单纯XML文档更强的管理XMl格式数据的能力,而且可以避免用传统数据库时需要进行数据转换的过程(因为XML是标准的扩展标记语言,并不是各个公司专属的技术,而数据库厂家对自己的数据库都有不同的格式,所以必须通过一些中间件进行转换),而获得高效。
当然,任何技术都不是尽良尽美的,任何一项新的技术在没有完全成熟以前都会存在许多的缺点,XML Server同XML-enabled Server也不会例外,它们分别存在下面一些缺点或问题:
对于XML Server而言:XML Server的性能如何还没有得到验证,因为它采用的是一种全新的数据组织方式,而这种方式在过去还没有得到过广泛的应用。正如我们有理由看好XML Server发展前景的同时,我们也有理由对这种没有经过大范围使用的产品持怀疑态度。我们可以看一下几种典型XML Server产品的配置需求。
△ DataChannel Server 4.1 在Windows环境下的硬件要求:
500MHz or faster Pentium III processor with at least 256MB of RAM
△ DataChannel Server 4.1 在Windows环境下的硬件要求:
Sun Ultra 10 or equivalent. At least 256MB of RAM
△ Tamino 在Windows环境下的硬件要求:
At least 300MHZ or faster. At least 256MB of RAM
对于XML-enabled Web Server而言:最大的问题是XML-enabled Web Server太复杂了,比较起原来用Html和传统Web Server建设Web,懂得使用XML这些先进技术的人还是太少了,而且Server的安装也显得太复杂,而开发工具则又太专业了。如何使电脑的初级用户能很快的学会使用它,是它需要解决的另外一个问题。 基于XML的Web服务器体系结构如下所示:

最后,我们看一下微软对基于XML的Web服务器的支持,它的实际实现方法是通过IIS的ISAPI扩展用以提供通过HTTP直接访问SQL Server并将查询结果形成XML返回到客户端而完成的。最简单的访问方法是直接HTTP的URL中使用SQL语句:
http://IISServer/VirtualRoot?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO
同时需要注意的,我们可以在URL中执行存储过程和使用xml文档模板。




