XML数据库技术.docx
XML数据库技术摘要:XML是一种非常好的数据交换语言,经被用于系统之间的通信。对XML数据库,用户和应用程序需要把XML加载到数据库中,用XML传输数据,从关系数据库中把数据检索为XML,从XML DBMS中检索数据,并且把关系型和XML型数据结合成XML。关键字:XML、数据库、体系结构1数据库技术的发展数据处理的发展经历了三大阶段:1950年代中之前的无管理阶段、1950年代末到1960年代末的文件系统阶段、1970年代初至今的数据库系统阶段。数据库系统的前身是文件系统,文件系统是数据库系统发展的基石。但与数据库系统相比,文件系统的冗余大(数据不能共享、重复浪费)、缺乏数据独立性(数据和程序相互依赖、改变困难)、数据未集中管理(无统一管理,无法保证安全性和完整性)。早期数据库的结构种类丰富,如:l 层次数据库如1968年IBM推出的世界上第一个数据库管理系统IMS(Information Management System,信息管理系统)l 网络数据库如1969年美国CODASYL(Conference on Data System Language,数据系数语言协会)下属的DBTG(Data Base Task Group,数据库任务组)发表的DBTG报告l 关系数据库由IBM的E.F.Codd与1970年提出,如IBM的SanJose实验室1977年推出的System R和加州大学的Berkeley分校于1973年推出的INGRES2XML与数据库2.1 XML是数据库吗?如果仅按数据库这个术语的本质来看,XML文件就是数据库,它是数据的集合。作为一种“数据库”格式,XML有一些优势,如它是自描述的、可交换的(Unicode)、能够以树型或图形结构描述数据。同样它也有缺点,如它显得有些繁琐,由于要对它进行解析和文本转换,所以数据访问速度较慢。一个更有用的问题就是在较为宽松的意义上,XML及其周边技术是否可以算作“数据库”数据库管理系统(DBMS)?答案是“在某种程度上是”。从正面来说,XML提供了许多数据库所具备的东西:存储(XML文档)、模式(DTD, XML schema,RElAX NG 等等)、查询语言(XQuery, XPath, XQL, XML-QL, QUILT等等)、编程接口(SAX, DOM,JDOM)等等。从反面来说,它缺少一些作为实用的数据库所应具备的特性:高效的存储、索引、安全、事务和数据一致性、多用户访问、触发器、交叉查询多个文件等等。因此,尽管在数据量小、用户少和性能要求不太高的环境下,可以将XML文档用作数据库,但是却不适用于用户量大、数据集成度高以及性能要求高的作业环境。2.2 需要XML数据库吗?如果你要查询历史数据、存储Web页面、进行电子商务,而XML又在其中作为数据传输载体,则你就需要选择支持XML的数据库和中间件。例如,你有个电子商务的应用,将XML用作数据交换。那么你的数据最好有个非常规则的结构并且可供非XML程序使用。还有,XML文档所用的某些东西如实体和编码对你来说并不重要总之,你感兴趣的是数据,而不是它在XML内如何存储。在这种情况下,你大概需要一个关系型数据库以及在XML和数据库之间转换数据的软件。如果你的应用程序是面向对象的,你甚至还需要一个在数据库或XML中存取这些对象的系统。另一方面,假如你要从一些结构松散的XML文档建立一个网站。你不但要管理这个网站,还要提供站点内容搜索。你的文档看起来结构比较松散,其中的实体的使用对你来说可能更重要,因为它们是文档结构的重要部分。这种情况下,你也许需要一个纯XML数据库或内容管理系统。这使你可以保持文档的物理结构,支持文件级的事务处理,以及使用XML Query语言进行查询。2.3 数据与文档在选择数据库时最重要因素大概就是你想在数据库存储的究竟是数据还是文档。例如,是简单地把XML当作数据库和(可能不支持XML)应用程序之间的数据转换工具,还是用于集成,就像XHTML和DocBook中的那样?通常这是个偏好,但是却非常重要,因为这会影响到XML在数据库中如何存储。如果想保存数据,则需要的是主要面向数据存储的数据库,如关系数据库或面向对象数据库,也可以是在数据库和XML文档之间转换数据的中间件。如果想保存文档,则需要的是一个专门用来存储文档内容的内容管理系统(content management system)。XML文档可以分为两类:以数据为中心的(data-centric)文档和以文本为中心的(document-centric)文档。(1) 以数据为中心的文档以数据为中心的文档将XML用作数据的传输载体,文档只提供给机器使用。在此,XML通常并不是绝对必要的。也就是说,对于应用程序或数据库而言,(在某个时间段内)数据是否以XML文档的形式存储并不重要。以数据为中心的文档的例子有销售订单、航班时刻表、科研数据及股市汇率。以数据为中心的文档的特点是结构相当规整,数据粒度小(即最小的独立数据单位只存在于PCDATA元素或属性这一级别),很少或没有混合内容。除非在对文档进行验证的时候,同级元素或PCDATA的出现次序一般来说并不重要。以数据为中心的文档中的这类数据可以来自数据库(此时要输入给XML)或在数据库之外(此时要将其存入数据库)。前者的一个例子就是关系数据库现存的大量数据;而从测量系统采集并转化为XML的科研数据就是后者的例子。(2) 以文档为中心的文档以文档为中心的文档通常是供人阅读的。例如书籍、email、广告以及几乎所有人工写成的XHTML文件。其特性为结构不太或根本不规则、数据粒度大(最小的独立数据单位可能存在于包含混合内容的元素甚至整个文档本身),混合内容多。同级元素或PCDATA出现的次序一般来说总是非常重要的。 以文档为中心的文档通常是以XML手工写成,或从其他格式(如RTF, PDF, SGML)转换到XML的,与以数据为中心的文档不同,它们的来源通常不是数据库(将数据插入到模板而得到的文档是以数据为中心的)。(3) 数据、文档与数据库在现实当中,以数据为中心和以文档为中心的文档之间的差别不一定很明显。例如,另一种以数据为中心的文档比如发票,可能含有大粒度的、结构不规则的数据比如零件说明;另一种以文档文中心的文件如用户手册,可能包含细粒度的结构规则的数据(通常为元数据)比如作者和修订日期。其它例子包括法律和医学文书,虽然以松散的形式写成但是却包含离散的数据块例如日期、名称和操作程序,出于法规的原因通常要以完整的文件形式存储。除此之外,弄清文件的这两种特点有助于选择数据库的类型。一般来说,将数据存储于传统的数据库,例如关系型,面向对象型或层次型数据库。这可由第三方的中间件完成或由数据库本身提供内在支持。对于后者,该数据库被称作支持XML的(XML-enabled)。文档可被存储在纯XML数据库(专为存储XML而设计的数据库)或内容管理系统(建在纯XML数据库之上专门用来管理文档的程序)。这些原则并不是绝对的。如果对XML特有的功能不很看重,数据,特别是半结构化的数据可以存储在纯XML数据库,文档也可以存储到传统数据库。何况传统数据库与纯XML数据库之间的界限越来越模糊,传统数据库增加了纯XML的能力,而纯XML数据库增加了对文档存储在外部(通常为关系型)数据库的支持。2.4 XML数据库模型XML DBMS提供存储、修改、查询和删除数据库中的XML文档及其元素的机制。文档可以保存在数据库中,用各种各样的方法来对其进行修改、基于其内容进行查询、按其成分进行删除。可以通过添加、修改或删除其元素来修改文档。“文档”本身提供了一种方便的机制来组织元素,但是从数据库的角度来看,它不是绝对必须的。不过从文档处理的角度来看,文档当然是必须的。W3C的标准规定了XML文档包含7种类型的结构,其中最实用的是元素、属性和字符数据。(1) 概念模式为XML设计关系模式的第一步,就是创建概念模式。如线性的XML文档可以形象化为树结构,每个元素和字符数据对应于树中的节点,这是一个图形概念模式。为了定义XML的抽象概念模式,可以考虑XML规范中的如下定义:l 一个文档包含一个(根)元素l 一个元素包含一个类型名、一个属性集、若干有序的子元素和字符数据l 一个属性由一个名字和一个值组成l 字符数据由文档中不属于标签的字符串组成为了保持数据库设计的表示简单,在设计阶段我们只表示文档的基本信息,而忽略大多数其他来自规范的信息,如注释、处理指令、引用和声明等。XML的概念模式:l 一个(XML)文档定义为包括一个名字和一个元素l 一个元素定义为包括一个类型名、一个属性集、若干子元素和字符数据l 一个属性定义为包括一个名字和一个值l 一个元素包括一个(它引用的)元素和一个索引编号,此编号定义它与其他子元素和子字符数据相关的顺序l 一个字符数据包括一个值(字符数据)和一个索引编号(定义与其他子元素和子字符数据相关的顺序)从概念模式开始,可以创建一个关系型或面向对象型的模式,从而开发一个XML DBMS,它使用关系或面向对象DBMS来表示XML文档的内容。除了描述数据看起来像什么之外,还需要描述数据应该怎样被使用。因此,我们首先描述一些可能需要的示例任务,然后再开发一个支持这些任务的基本操作集合。(2) 任务下面是XML数据库可以执行的若干任务,它们描述了XML DBMS对数据访问语言的一些要求:1. 存储文档2. 检索文档3. 搜索具有给定元素类型名的所有元素4. 搜索具有给定属性值的所有元素5. 把4所得元素的属性值改为指定字符串6. 搜索具有给定元素类型名且包含以指定字符串为子字符数据的所有元素7. 删除6所得的所有元素8. 搜索包含给定子串的字符数据9. 对匹配8的首个元素添加一个特定属性10. 在某一指定元素的范围内替换某一元素名为指定元素名,如在html元素内,将p元素的名称替换为para(3) 操作为满足数据库的功能和任务,需要为每种数据类型给出一些示例操作:l 数据库n 添加文档到数据库中n 从数据库中删除文档n 在数据库中检索具有指定名字的文档n 搜索数据库,获取满足指定约束的所有文档l 文档n 在文档内的指定位置上添加元素n 从文档内的指定位置上删除元素n 从文档内的指定位置上检索元素n 以原文档的顺序,检索文档中的所有元素和字符数据n 搜索文档中满足一组指定约束的所有元素n 搜索文档中匹配一组指定约束的(如匹配一个字符串)的字符数据n 用另一元素或字符数据替换指定位置上的元素n 用另一元素或字符数据替换指定位置上的字符数据n 其他操作,如拷贝或编辑,可以使用上面这些操作来实现l 元素n 对文档的所有操作也可以应用于元素,如添加、删除、从元素中的指定位置检索子元素等等n 给元素添加属性n 从元素中删除属性n 从元素中检索给定属性名的属性n 从元素中替换给定属性名的属性值n 检索元素的第n个子元素n 检索元素的所有子元素l 字符数据n 检索字符数据的文本n 检索字符数据的父元素l 查询约束n 元素类型名(不)等于某个值n 属性名(不)等于某个值n 字符数据(不)等于某个值n 元素具有等于(小于/大于/不等于)特定数量的子元素n 查询的约束由全为真(或任一个为假)的两种约束组成n 查询的约束由一个一定为假的约束组成为了设计和开发一个XML DBMS,需要描述数据类型是什么以及它们可能怎样被操作,做好的办法就是描述DBMS的数据模型。3数据模型模型是一个结构,用来表示实体的一些特性。数据模型是对数据库表示语言的数学描述,用来描述数据库的结构、功能和数据约束。数据模型是根据它的数据类型、操作符和约束来定义的。实际上,没有商业数据库能够完全匹配所有领域的数据模型,但数据模型是一个好的机制,可以描述DBMS的基本功能,并可以作为与哪些声称实现了某个特定数据模型的系统进行比较的基础。3.1 关系数据模型现在的主流数据库系统采用的大多是关系数据模型,它也是面向对象数据库系统的基础,另外,也可以在关系数据库和XML文档之间实现某种转换,使得关系数据库也支持XML。(1) 数据模型关系数据库的l 数据类型是关系;l 操作符有7个操作符:选择、投影、连接、乘积、联合、求差和相交;l 约束有两个独立于数据库的约束:n 一个基本关系的主键的组成部分不能为空n 数据库不必包含不匹配的外键值关系是一个类型构造器,能够创建一组关系,每个关系(元组)以同样的顺序具有同样数量的特征(属性),每个特征具有一个名字和一个域(一组可能值),这些域通常被建模成具体的数据类型。每个关系由一个有序的数据类型集组成。关系模型之所以流行的原因之一,就是它能清楚地把所有关系约束在一个关系之中,使这些关系具有一个类似的抽象特征(如接口),而不是很多无类型的点。因此,只需要少量的操作符就可以操作这些关系。关系模型中除了7个基本操作之外,还需要一些附加操作,以便在一个关系之中插入、更新和删除关系实例。但是这些操作在历史上并没有被关系数据模型所规定。关系模型中所描述的联合操作可以由已有关系来创建新的关系,这也为如何操作XML元素提供了想法。关系数据模型可以被修改来描述面向对象数据库的功能,并且这些修改已被集成到一些对象-关系DBMS之中。这些修改对XML也有用,为了理解它们,必须先理解关系数据库的范式。(2) XML与关系模式的范式关系模式具有第一五范式及Boyce-Codd范式(BCNF),设计关系数据库时主要考虑是一个数据库是属于第三范式(3NF)还是BCNF。而对XML数据库,相关的范式有第一和第五范式。关系数据库必须满足第一范式(first normal form, 1NF)要求域的每个属性都由不能分割的值组成。但是非1NF关系对用一个关系框架来对对象或XML建模是非常有用的。因为取消所有关系只能引用原子值的这个限制,并且允许嵌入集合或关系,则可以处理对象和XML数据。具有连接依赖性质的第五范式(5NF或PJ/NF=projection-join normal form投影连接范式)的关系能够被分解为任意数量的较小的关系,且未丢失将关系重新连合起来所必须的信息。为了把XML元素的变体结构存储在一个仅支持1NF关系的关系数据库中,XML元素的结构必须被分解成最小的组成部分二元关系。除了1NF和5NF外,XML还与实体关系、语义和图这三种数据模型有关。3.2 XML数据模型W3C的XML规范提供了数据模型必须的数据类型和约束。但是因为XML是一种标记语言,没有显式的操作,实际上只有一个在数据类型中创建元素的操作。一个数据模型的数据类型和操作提供了一个严格规范,确定了XML文档和文档片段在XML DBMS中如何被存储、检索和操作。根据该规范,可以开发出一个实例,提供XML DBMS的功能。4数据存储XML数据可以存储在一个支持对XML文档的操作和访问的DBMS中。具体地说,XML可以存储为平面文件、存储在美学对象的数据库中、或存储在关系型数据库中。XML DBMS是一门新技术,每有关系型和面向对象型的DBMS那么成熟。需要为XML DBMS开发一个系统结构,并把XML存储工具集成到现有的技术平台之上。图概念模型数据模型数据模型应用的图概念模型XML的图概念模型概念模式概念模式应用模式(XML)XML对象模式逻辑模式逻辑模式存储数据XML DBMS对象DBMS数据模式数据模式XML通用数据模型对象数据模型一般应用模式与XML数据库工程应用模式之间的关系5系统结构XML是一种非常好的数据交换语言,经常被用于系统之间的通信。系统结构描述了这些系统是怎样交互的。数据库系统结构描述应用程序和用户怎样访问和管理DBMS中的数据。对XML数据库,用户和应用程序需要把XML加载到数据库中,用XML传输数据,从关系数据库中把数据检索为XML,从XML DBMS中检索数据,并且把关系型和XML型数据结合成XML。数据库系统的体系结构包括C/S结构,其中的客户应用程序直接与DBMS进行交互;还包括三层结构,其中有一个独立的服务器介于客户和DBMS之间。数据服务器客户Web服务器命令DB服务器命令XML数据数据数据库Web数据库系统的三层结构6查询与索引6.1 查询查询可以根据数据源、生成报告的数据类型、及查询的拓扑结构来进行分类:l 数据源查询期间,从XML数据库中访问的数据源包括:XML文档、XML文档的一个片段、字符数据、或元素的集合l 报表类型检索的数据可以与数据库的其他数据相结合创建新的报表,报表可能包括如下数据类型:一个字符串、字符串集、文档节点、文档节点集、表、文档、或文档集l 拓扑结构查询有四种拓扑结构:节点、路径、树和图6.2 索引XML文档的索引在很多方面与关系和面向对象数据库的索引是相通的。索引并不总是适当的,意思倒这一点相当重要。在XML数据库内部索引双向链接有如下三种策略:l 无索引如果数据频繁改变或查询只访问少量节点时,不应该建立索引l 完全索引对一个相对较小且很少变化的数据库进行频繁访问,最适合建立完全索引l 部分索引只对访问最频繁部分元素进行索引总结为了将理论和系统相结合,可以实现一个简单的系统,重点描述设计和数据链接等方面,以阐明XML数据库系统所要求的基本功能。与其他数据库相比,XML数据库在域建模、概念设计和存储复杂关系等方面提供了更多的灵活性。XML DBMS是一门新技术,每有关系型和面向对象型的DBMS那么成熟。需要为XML DBMS开发一个系统结构,并把XML存储工具集成到现有的技术平台之上。参考文献:1 吴文国,XML入门经典,清华大学出版社,2009.22 李刚,疯狂XML讲义,电子工业出版社,1996.83 邱郁惠,visual studio 2010和xml黄金法则,机械工业出版社,1998.44 王春楠,刘永金xml高级编程清华大学出版社,1996.2