《xml数据库技术》由会员分享,可在线阅读,更多相关《xml数据库技术(8页珍藏版)》请在金锄头文库上搜索。
1、XMLXML 数据库技术数据库技术摘摘要:要:X M L 是 一 种 非 常 好 的 数 据 交 换 语 言, 经 被 用 于 系 统 之 间 的 通 信。 对 X M L 数 据 库, 用 户 和 应用 程 序 需 要 把 X M L 加 载 到 数 据 库 中, 用 X M L 传 输 数 据, 从 关 系 数 据 库 中 把 数 据 检 索 为 X M L , 从 X MLD B M S 中 检 索 数 据, 并 且 把 关 系 型 和 X M L 型 数 据 结 合 成 X M L 。关键字关键字:XML、数据库、体系结构1 1数据库技术的发展数据库技术的发展数据处理的发展经历了三大阶
2、段:1950 年代中之前的无管理阶段、1950 年代末到 1960 年代末的文件系统阶段、1970 年代初至今的数据库系统阶段。 数据库系统的前身是文件系统,文件系统是数据库系统发展的基石。但与数据库系 统相比,文件系统的冗余大(数据不能共享、重复浪费) 、缺乏数据独立性(数据和程 序相互依赖、改变困难) 、数据未集中管理(无统一管理,无法保证安全性和完整性) 。早期数据库的结构种类丰富,如: 层次数据库如 1968 年 IBM 推出的世界上第一个数据库管理系统 IMS(Information Management System,信息管理系统)网络数据库如 1969 年美国 CODASYL(C
3、onference on Data System Language,数据 系数语言协会)下属的 DBTG(Data Base Task Group,数据库任务组)发表的 DBTG 报 告 关系数据库由 IBM 的 E.F.Codd 与 1970 年提出,如 IBM 的 SanJose 实验室 1977 年推出的 System R 和加州大学的 Berkeley 分校于 1973 年推出的 INGRES2 2XMLXML 与数据库与数据库2.12.1 XMLXML 是数据库吗?是数据库吗? 如果仅按数据库这个术语的本质来看,XML 文件就是数据库,它是数据的集合。 作为一种“数据库”格式,XML
4、 有一些优势,如它是自描述的、可交换的(Unicode)、 能够以树型或图形结构描述数据。同样它也有缺点,如它显得有些繁琐,由于要对 它进行解析和文本转换,所以数据访问速度较慢。 一个更有用的问题就是在较为宽松的意义上,XML 及其周边技术是否可以算作 “数据库”数据库管理系统(DBMS)?答案是“在某种程度上是” 。从正面来说, XML 提供了许多数据库所具备的东西:存储(XML 文档)、模式(DTD, XML schema,RElAX NG 等等)、查询语言(XQuery, XPath, XQL, XML-QL, QUILT 等等) 、 编程接口(SAX, DOM,JDOM)等等。从反面来
5、说,它缺少一些作为实用的数据库所应具 备的特性:高效的存储、索引、安全、事务和数据一致性、多用户访问、触发器、 交叉查询多个文件等等。 因此,尽管在数据量小、用户少和性能要求不太高的环境下,可以将 XML 文档用 作数据库,但是却不适用于用户量大、数据集成度高以及性能要求高的作业环境。 2.22.2 需要需要 XMLXML 数据库吗?数据库吗? 如果你要查询历史数据、存储 Web 页面、进行电子商务,而 XML 又在其中作为数 据传输载体,则你就需要选择支持 XML 的数据库和中间件。 例如,你有个电子商务的应用,将 XML 用作数据交换。那么你的数据最好有个非 常规则的结构并且可供非 XML
6、 程序使用。还有,XML 文档所用的某些东西如实体和编 码对你来说并不重要总之,你感兴趣的是数据,而不是它在 XML 内如何存储。 在这种情况下,你大概需要一个关系型数据库以及在 XML 和数据库之间转换数据的 软件。如果你的应用程序是面向对象的,你甚至还需要一个在数据库或 XML 中存取 这些对象的系统。 另一方面,假如你要从一些结构松散的 XML 文档建立一个网站。你不但要管理这 个网站,还要提供站点内容搜索。你的文档看起来结构比较松散,其中的实体的使 用对你来说可能更重要,因为它们是文档结构的重要部分。这种情况下,你也许需 要一个纯 XML 数据库或内容管理系统。这使你可以保持文档的物理
7、结构,支持文件 级的事务处理,以及使用 XML Query 语言进行查询。 2.32.3 数据与文档数据与文档 在选择数据库时最重要因素大概就是你想在数据库存储的究竟是数据还是文档。 例如,是简单地把 XML 当作数据库和(可能不支持 XML)应用程序之间的数据转换工 具,还是用于集成,就像 XHTML 和 DocBook 中的那样?通常这是个偏好,但是却非 常重要,因为这会影响到 XML 在数据库中如何存储。 如果想保存数据,则需要的是主要面向数据存储的数据库,如关系数据库或面向 对象数据库,也可以是在数据库和 XML 文档之间转换数据的中间件。如果想保存文 档,则需要的是一个专门用来存储文
8、档内容的内容管理系统(content management system)。XML 文档可以分为两类:以数据为中心的(data-centric)文档和以文本为中心的 (document-centric)文档。 (1) 以数据为中心的文档 以数据为中心的文档将 XML 用作数据的传输载体,文档只提供给机器使用。 在此,XML 通常并不是绝对必要的。也就是说,对于应用程序或数据库而言, (在某个时间段内)数据是否以 XML 文档的形式存储并不重要。以数据为中心的 文档的例子有销售订单、航班时刻表、科研数据及股市汇率。 以数据为中心的文档的特点是结构相当规整,数据粒度小(即最小的独立 数据单位只存在
9、于 PCDATA 元素或属性这一级别) ,很少或没有混合内容。除非在 对文档进行验证的时候,同级元素或 PCDATA 的出现次序一般来说并不重要。 以数据为中心的文档中的这类数据可以来自数据库(此时要输入给 XML) 或在数据库之外(此时要将其存入数据库) 。前者的一个例子就是关系数据库现 存的大量数据;而从测量系统采集并转化为 XML 的科研数据就是后者的例子。 (2) 以文档为中心的文档 以文档为中心的文档通常是供人阅读的。例如书籍、email、广告以及几乎所有人工写 成的 XHTML 文件。其特性为结构不太或根本不规则、数据粒度大(最小的独立数据单位可能 存在于包含混合内容的元素甚至整个
10、文档本身) ,混合内容多。同级元素或 PCDATA 出现的次 序一般来说总是非常重要的。 以文档为中心的文档通常是以 XML 手工写成,或从其他格式(如 RTF, PDF, SGML)转换 到 XML 的,与以数据为中心的文档不同,它们的来源通常不是数据库(将数据插入到模板而 得到的文档是以数据为中心的) 。 (3) 数据、文档与数据库 在现实当中,以数据为中心和以文档为中心的文档之间的差别不一定很明显。 例如,另一种以数据为中心的文档比如发票,可能含有大粒度的、结构不规则的 数据比如零件说明;另一种以文档文中心的文件如用户手册,可能包含细粒度的 结构规则的数据(通常为元数据)比如作者和修订日
11、期。其它例子包括法律和医 学文书,虽然以松散的形式写成但是却包含离散的数据块例如日期、名称和操作 程序,出于法规的原因通常要以完整的文件形式存储。 除此之外,弄清文件的这两种特点有助于选择数据库的类型。一般来说,将 数据存储于传统的数据库,例如关系型,面向对象型或层次型数据库。这可由第 三方的中间件完成或由数据库本身提供内在支持。对于后者,该数据库被称作支 持 XML 的(XML-enabled)。文档可被存储在纯 XML 数据库(专为存储 XML 而设计 的数据库)或内容管理系统(建在纯 XML 数据库之上专门用来管理文档的程序) 。 这些原则并不是绝对的。如果对 XML 特有的功能不很看重
12、,数据,特别是半 结构化的数据可以存储在纯 XML 数据库,文档也可以存储到传统数据库。何况传 统数据库与纯 XML 数据库之间的界限越来越模糊,传统数据库增加了纯 XML 的能 力,而纯 XML 数据库增加了对文档存储在外部(通常为关系型)数据库的支持。 2.42.4 XMLXML 数据库模型数据库模型 XML DBMS 提供存储、修改、查询和删除数据库中的 XML 文档及其元素的机制。 文档可以保存在数据库中,用各种各样的方法来对其进行修改、基于其内容进行查询、 按其成分进行删除。可以通过添加、修改或删除其元素来修改文档。 “文档”本身提供了一种方便的机制来组织元素,但是从数据库的角度来看
13、,它 不是绝对必须的。不过从文档处理的角度来看,文档当然是必须的。 W3C 的标准规定了 XML 文档包含 7 种类型的结构,其中最实用的是元素、属性和字符数据。 (1) 概念模式 为 XML 设计关系模式的第一步,就是创建概念模式。如线性的 XML 文档可以形象化 为树结构,每个元素和字符数据对应于树中的节点,这是一个图形概念模式。 为了定义 XML 的抽象概念模式,可以考虑 XML 规范中的如下定义: 一个文档包含一个(根)元素 一个元素包含一个类型名、一个属性集、若干有序的子元素和字符数据 一个属性由一个名字和一个值组成 字符数据由文档中不属于标签的字符串组成 为了保持数据库设计的表示简
14、单,在设计阶段我们只表示文档的基本信息,而忽略 大多数其他来自规范的信息,如注释、处理指令、引用和声明等。 XML 的概念模式: 一个(XML)文档定义为包括一个名字和一个元素 一个元素定义为包括一个类型名、一个属性集、若干子元素和字符数据 一个属性定义为包括一个名字和一个值 一个元素包括一个(它引用的)元素和一个索引编号,此编号定义它与其他子元素 和子字符数据相关的顺序 一个字符数据包括一个值(字符数据)和一个索引编号(定义与其他子元素和子字 符数据相关的顺序) 从概念模式开始,可以创建一个关系型或面向对象型的模式,从而开发一个 XML DBMS,它使用关系或面向对象 DBMS 来表示 XM
15、L 文档的内容。 除了描述数据看起来像什么之外,还需要描述数据应该怎样被使用。因此,我们首 先描述一些可能需要的示例任务,然后再开发一个支持这些任务的基本操作集合。 (2) 任务 下面是 XML 数据库可以执行的若干任务,它们描述了 XML DBMS 对数据访问语言的 一些要求: 1. 存储文档 2. 检索文档 3. 搜索具有给定元素类型名的所有元素 4. 搜索具有给定属性值的所有元素 5. 把 4 所得元素的属性值改为指定字符串 6. 搜索具有给定元素类型名且包含以指定字符串为子字符数据的所有元素 7. 删除 6 所得的所有元素 8. 搜索包含给定子串的字符数据 9. 对匹配 8 的首个元素
16、添加一个特定属性 10. 在某一指定元素的范围内替换某一元素名为指定元素名,如在 html 元素内,将 p 元素的名称替换为 para (3) 操作 为满足数据库的功能和任务,需要为每种数据类型给出一些示例操作: 数据库 添加文档到数据库中 从数据库中删除文档 在数据库中检索具有指定名字的文档 搜索数据库,获取满足指定约束的所有文档文档 在文档内的指定位置上添加元素 从文档内的指定位置上删除元素 从文档内的指定位置上检索元素 以原文档的顺序,检索文档中的所有元素和字符数据 搜索文档中满足一组指定约束的所有元素 搜索文档中匹配一组指定约束的(如匹配一个字符串)的字符数据 用另一元素或字符数据替换指定位置上的元素 用另一元素或字符数据替换指定位置上的字符数据 其他操作,如拷贝或编辑,可以使用上面这些操作来实现 元素 对文档的所有操作也可以应用于元素,如添加、删除、从元素中的指定位置检 索子元素等等 给元素添加属性 从元素中删除属性 从元素中检索给定属性名的属性 从元素中替换给定属性