欢迎投稿

今日深度:

基于XML的数据库总体分析(下)(1)

基于XML的数据库总体分析(下)(1)


本文我们继续介绍基于XML数据库总体分析,首先介绍基于XML的数据库产品分类:

根据Ronald Bourret在XML Database Products一文中的描述,XML Database中包含有七种类型的产品,分别为:

1.中间件Middleware )

1.与XML相结合能驱动XML的数据库XML-Enabled Databases),比如Oralce和微软都宣称在它们最新的数据库产品都都能够和XML进行无缝的衔接。

2.原始的XML数据库Native XML Database)。

3.XML服务器XML Servers)。

4.XML应用服务器,比如IBM的WebSphere。

5.内容管理系统Content Management Systems)。

2.可持久化的DOM实现Persistent DOM Implementations)

下面我们对每一种产品做一个具体的说明和介绍。

中间件:所谓中间件就是用来在XML文档和数据库之间进行处理和转化的软件。主要应用于以数据为中心的应用里面,它可以用各种各样的语言编写,一般来说它需要用到ODBC, JDBC,或者是 OLE DB. 尽管它可以通过Internet进行是数据的传输,但是一般它都是通过Web服务器来实现数据的传输。

下面我们需要考虑当把XML文档存储到数据库中,如何选择适合你应用程序的中间件。

实际上,在我们选择中间件的时候,我们要考虑下面一些因素

1.数据类型: XML不支持数据类型,也就是说,在XML文档中的所有数据都是文本,即使数据它本身代表了另外一种数据类型,比如日期或者整数。通常,数据传输中间件将把数据转化为其他类型。

2.二进制数据处理:有两种通常的方法存储XML文档中的二进制数据:未经过解析的实体(unparsed entities)和Base64编码。

3.Null类型处理:在关系数据库世界中,NULL表示该数据不存在,它和0或者是空字符串当然是不一样的。当然,XML也支持NULL的概念。如果一个可选择的元素类型或者属性是NULL的话,它就不包括在这个文档里面。当映射一个XML文档的结构到数据库或者根据数据库内容生成XML文档的时候,你需要考虑可选元素类型和属性跟可NULL的列之间的映射。

4.字符集:一个XML文档可以包含任何Unicode字符,而不幸的是,许多数据库并不支持Unicode。因此如果你的数据包括非ASCII字符的时候,需要注意数据库和中间件对这些字符的处理。

5.关于XML中的处理指令:处理指令并不是XML文档中的数据,因此中间件就很难决定如何存储它们。所以在选择中间件的时候,要看它们对处理指令的处理情况。

6.标记存储:注意不同的中间件对标记的处理是不一样的。而且在数据库中的存储模式也不同,见下面的例子:

  1. <description>  
  2.  
  3. <b>Confusing example:</b>   
  4.  
  5. </description> 

在数据库中存储的形式如下:

  1. <b>Confusing example:</b> <foo/> 

这主要是因为数据库不能识别<b>和<foo>是标记还是文字。

典型的中间件有:

ADO:它可以实现数据库和XML文档之间的双向转换。XML支持把一个记录集合对象保存为一个XML文档,它也能够把一个XML文档作为一个记录集合进行处理,这样就在XML文档和数据库之间提供了一个桥梁。这种映射实际上是模型驱动的,数据可以被看成是一棵对象树,一个具有嵌套结构的树可以作为一个嵌套的记录结果集被显示,反之也是如此。另外,如果记录集合数据有变化的话,可以反映到相应的XML文档中,而XML文档中内容的变化也可以导致数据库内容的变化。

ASP2XML:主要是通过一个COM对象实现XML文档和基于ODBC或者是OLE DB的数据库之间数据的传递。该产品实际上是基于模型驱动的,把XML文档看成是一个单一的表,当把数据从数据库传递到XML文档的时候,用户指定一个SELECT语句,输出包含了ASP2XML专用的标签。当把XML文档的数据传递到数据库的时候,XML文档必须包含ASP2XML专用的标签。该COM对象是支持自动化的,也就是说它能够在剧本语言中使用,比如ASP。

3.支持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来指定具体的元素或者属性。

4.原始的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文档。


www.htsjk.Com true http://www.htsjk.com/shujukukf/17015.html NewsArticle 基于XML的数据库总体分析(下)(1) 本文我们继续介绍基于 XML 的 数据库 总体分析,首先介绍基于XML的数据库产品分类: 根据Ronald Bourret在XML Database Products一文中的描述,XML Database中包...
评论暂时关闭