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