当开发人员谈及XML数据库时他们往往指是两个概念:存储XML数据数据库利用XML数据库DBMS绝大多数主要DBMS产品允许你无需改变现有数据库就可以集成XML数据到中现在让我们讨论下XML数据库并探讨其特性
原始XML数据库
个原始XML数据库(NXD)可以是很简单也可以是很复杂我这样定义个数据库概念:永久稳定数据集合在这样定义下个NXD能在逻辑上存储个XML文档当XML:DB initiative对个NXD还有更多要求时我想以上定义也可以满足
以下代码行可以用作于个NXD:
〈?xml version=”1.0”?〉
〈diet〉
〈meal mealName=”fast”〉
〈item itemName=“toast” unit=”slice” quantity=“2” /〉
〈item itemName=“bacon” unit=”strip” quantity=“2” /〉
〈/meal〉
〈/diet〉
很显然数据集合以XML格式存储如果它被存放在个flat文件它也会满足我们对NXD定义:永久稳定数据集合
个NXD使用相同方式来存储XML文档(比如:flat文件关系数据库或级别数据库对象数据库)
Flat文件
个简单flat文件是个最简单XML数据库模型作为种“变种”你可以存储很多XML文档在个目录层次为了扩展前面范例看看以下模型:
Diets\\
Diets\\Atkins
Day1.xml
Day2.xml
Day3.xml
Day4.xml
Diets\\3DayDiet
Day1.xml
Day2.xml
Day3.xml
Diets目录包含了子目录并且每子目录很多XMLflat文件
关系数据库
关系数据库中XML数据库可以分为 3种模型:coarse-grained(粗糙纹理型), medium-grained(中等级别纹理型)或 fine-grained(优良纹理型)
coarse-grained(粗糙纹理型)模型在逻辑上和flat文件模型有些区别你可以使用个关系数据库来存放每个XML文档例如以下代码可以存放个XML文档:
Create table diets
( dietName varchar2(30),
xmlDocument varchar2(32000)
)
fine-grained(优良纹理型)模型将XML文档每成分映射到关系数据库中为了能够将flat模型转移到关系数据库你必须使用两种改变方式对以上范例你不能再使用子目录名来代表diet名称你也不能再使用文件名称来传递diet日期表A显示了dietXML文档文件类型定义(DTD);表B显示了将DTD映射到关系表数据定义语言(DDL)除此的外表C还包括了相应XML语法
medium-grained(中等级别纹理型)模型介于coarse-grained(粗糙纹理)模型和 fine-grained(优良纹理)模型的间使用这模型你可以将信息存储在meals 表xml_items列中
对象数据库
你也可以通过使用个对象数据库来执行NXD有些对象数据库是基于文档对象模型(DOM)这允许XML和数据库有紧密结合例如旦你提供个食物方面DTD你可以开始保存这些食物而不需要额外配置
数据库管理系统
对于DBMS你可以有多种选择你可以通过使用开放如eXist或Ozone来建立自己DBMS或者购买商业产品如Tamino XML Server
绝大多数关系数据库卖主都使他们数据库能够使用XML至少XML数据库(XEDBs)能够返回XML文档查询结果另外很多也可以保存XML数据例如Oracle 提供了个XML剖析器个Xpath引擎个XSLT处理器个XMLSQL工具以及使用XML思路方法
所以使用关系数据库存储NXD和存储XML数据XEDB有什么区别呢?个NXD是基于XML文档概念而建立而XEDB和其它没有过多关联而且很多规范标准适用于NXD而DBMS只适用标准查询和存储数据XML文档比如Xpath
XML数据库不是新概念
XML数据库在逻辑观点上不是新概念虽然在逻辑执行上是新如果你想要执行个XML数据库你可以使用NXDXEDB或者是 2者结合然而如果你所在公司对现有数据库已经有定投资你所做第个调查就是核实你DMBS卖主是否提供使用XML工具无论你使用哪种XML数据库方式你都要非常理解每种数据库特性这才是最重要(zdnet china)
最新评论