XML数据库技术.docx
《XML数据库技术.docx》由会员分享,可在线阅读,更多相关《XML数据库技术.docx(23页珍藏版)》请在冰豆网上搜索。
XML数据库技术
北华大学计算机科学技术学院数据库原理课程论文
XML数据库技术
班级名称计10-1班
姓名幸刚鸿
姓名201017020130
指导老师郑慧
摘要
XML正在成为Internet上数据描述和交换的标准,它将代替HTML而成为Web上存放数据的主要格式.XML及其一系列相关的标准已广为接受和使用,为XML成为数据库奠定了基础.文章针对XML数据库研究的现状,介绍了XML数据库的基本概念和相关技术,并对其应用领域和使用方法进行了分析和研究。
Abstract:
XMLisbecomingtheInternetdatadescriptionandexchangeofstandard,itwilltaketheplaceofHTMLandbecomethemainformatofstoringdataontheWeb.XMLandasetofrelatedstandardhasbeenwidelyacceptedandused,whichlaidafoundationforXMLintothedatabase.Inthispaper,XMLdatabaseresearchpresentsituation,introducedthebasicconceptofXMLdatabaseandrelatedtechnologies,anditsapplicationfieldsandmethodsofuseareanalyzedandstudied.
关键词:
XML;数据库;HTML;Internet
1.数据库技术的发展
数据处理的发展经历了三大阶段:
1950年代中之前的无管理阶段、1950年代末到1960年代末的文件系统阶段、1970年代初至今的数据库系统阶段。
数据库系统的前身是文件系统,文件系统是数据库系统发展的基石。
但与数据库系统相比,文件系统的冗余大、缺乏数据独立性、数据未集中管理。
传统数据库系统有如:
层次数据库;网络数据库;关系数据库。
新兴数据库技术:
SQL与当时盛行的结构化程序设计方法相对应,通常采用C/S构架。
后来面向对象的程序设计方法开始流行,随之于1980年代中后期出现了OO方法与数据库技术相结合的产物——面向对象的数据库系统,主流的关系数据库产品也纷纷增加对OO的支持,新版的SQL国际标准中也加上了OO部分。
近年来,随着XML技术越来越热门,主流的关系数据库产品又纷纷增加对XML的支持,同时也出现了一批纯XML数据库(nativeXMLdatabase)管理系统。
总之,作为信息系统的核心部分,数据库系统总是时刻与时俱进,能够及时吸收各种先进技术与成果,不断改进与完善自己,以满足各种应用的需要。
2.XML与数据库
1)引入XML数据库原由
仅按数据库这个术语的本质来看,XML文件就是数据库,它是数据的集合。
如果你要查询历史数据、存储Web页面、进行电子商务,而XML又在其中作为数据传输载体,则你就需要选择支持XML的数据库和中间件。
例如,你有个电子商务的应用,将XML用作数据交换。
那么你的数据最好有个非常规则的结构并且可供非XML程序使用。
还有,XML文档所用的某些东西如实体和编码对你来说并不重要。
在这种情况下,你大概需要一个关系型数据库以及在XML和数据库之间转换数据的软件。
如果你的应用程序是面向对象的,你甚至还需要一个在数据库或XML中存取这些对象的系统。
另一方面,假如你要从一些结构松散的XML文档建立一个网站。
你不但要管理这个网站,还要提供站点内容搜索。
你的文档看起来结构比较松散,其中的实体的使用对你来说可能更重要,因为它们是文档结构的重要部分。
这种情况下,你也许需要一个纯XML数据库或内容管理系统。
这使你可以保持文档的物理结构,支持文件级的事务处理,以及使用XMLQuery语言进行查询。
2)数据与文档
在选择数据库时最重要因素大概就是你想在数据库存储的究竟是数据还是文档。
例如,是简单地把XML当作数据库和应用程序之间的数据转换工具,还是用于集成,就像XHTML和DocBook中的那样?
通常这是个偏好,但是却非常重要,因为这会影响到XML在数据库中如何存储。
如果想保存数据,则需要的是主要面向数据存储的数据库,如关系数据库或面向对象数据库,也可以是在数据库和XML文档之间转换数据的中间件。
如果想保存文档,则需要的是一个专门用来存储文档内容的内容管理系统(contentmanagementsystem)。
XML文档可以分为两类:
以数据为中心的(data-centric)文档和以文本为中心的(document-centric)文档。
(1)以数据为中心的文档
以数据为中心的文档将XML用作数据的传输载体,文档只提供给机器使用。
以数据为中心的文档的例子有销售订单、航班时刻表、科研数据及股市汇率。
以数据为中心的文档的特点是结构相当规整,数据粒度小,很少或没有混合内容。
除非在对文档进行验证的时候,同级元素或PCDATA的出现次序一般来说并不重要。
以数据为中心的文档中的这类数据可以来自数据库或在数据库之外)。
前者的一个例子就是关系数据库现存的大量数据;而从测量系统采集并转化为XML的科研数据就是后者的例子。
例如,下面的销售订单就是以数据为中心的:
ABCIndustries
123MainSt.
Chicago
IL
60609
981215
Turkeywrench:
Stainlesssteel,one-piececonstruction,
lifetimeguarantee.
9.95
10
Stuffingseparator:
Aluminum,one-yearguarantee.
13.27
5
除了像销售订单这种显而易见的以数据为中心的文档之外,许多以文本为主的文档也可以是以数据为中心的。
例如,A用来显示书籍信息的一个页面。
尽管页面上大部分内容都是文本,这些文本的结构是非常规则的,许多都和其它书籍的描述相同,每个页面特有的文本并不很多。
这样,就可以从数据库中取出书籍的相关资料,转换为简单的、以数据为中心的XML文档,再用XSL样式表生成页面。
一般来说,那些用数据库中的数据填充模板,动态生成HTML文件的网站都可以转而使用一系列以数据为中心的XML文档和XSL样式表。
例如,下面是个描述航班信息的文档:
ABCAirwaysprovidesthree
non-stopflightsdailyfromDallasto
FortWorth.Departuretimesare
09:
15,11:
15,
and13:
15.Arrivaltimesareminuteslater.
从下面的XML文件和一个简单的样式表中创建这个文档:
ABCAirways
Dallas
FortWorth
09:
15
09:
16
11:
15
11:
16
13:
15
13:
16
(2)以文档为中心的文档
以文档为中心的文档通常是供人阅读的。
其特性为结构不太或根本不规则、数据粒度大,混合内容多。
同级元素或PCDATA出现的次序一般来说总是非常重要的。
以文档为中心的文档通常是以XML手工写成,或从其他格式(如RTF,PDF,SGML)转换到XML的,与以数据为中心的文档不同,它们的来源通常不是数据库。
例如,下面这个产品说明是以文档为中心的:
TheTurkeyWrenchfromFull
FabricationLabs,Inc.islikeamonkeywrench,
butnotasbig.
Theturkeywrench,whichcomesinbothright-andleft-
handedversions(skyhookoptional),ismadeofthefinest
stainlesssteel.TheReadi-griprubberizedhandlequicklyadapts
toyourhands,eveninthegreasiestsituations.Adjustmentis
possiblethroughavarietyofcustomdials.
Youcan:
- Orderyourownturkeywrench
- Readmoreaboutwrenches
- Downloadthecatalog
Theturkeywrenchcostsjust$19.99and,ifyou
ordernow,comeswithahand-craftedshrimphammerasa
bonusgift.
(3)数据、文档与数据库
在现实当中,以数据为中心和以文档为中心的文档之间的差别不一定很明显。
例如,另一种以数据为中心的文档比如发票,可能含有大粒度的、结构不规则的数据比如零件说明;另一种以文档文中心的文件如用户手册,可能包含细粒度的结构规则的数据比如作者和修订日期。
其它例子包括法律和医学文书,虽然以松散的形式写成但是却包含离散的数据块例如日期、名称和操作程序,出于法规的原因通常要以完整的文件形式存储。
除此之外,弄清文件的这两种特点有助于选择数据库的类型。
一般来说,将数据存储于传统的数据库,例如关系型,面向对象型或层次型数据库。
这可由第三方的中间件完成或由数据库本身提供内在支持。
对于后者,该数据库被称作支持XML的(XML-enabled)。
文档可被存储在纯XML数据库或内容管理系统。
这些原则并不是绝对的。
如果对XML特有的功能不很看重,数据,特别是半结构化的数据可以存储在纯XML数据库,文档也可以存储到传统数据库。
何况传统数据库与纯XML数据库之间的界限越来越模糊,传统数据库增加了纯XML的能力,而纯XML数据库增加了对文档存储在外部数据库的支持。
3)XML数据库模型
XMLDBMS提供存储、修改、查询和删除数据库中的XML文档及其元素的机制。
文档可以保存在数据库中,用各种各样的方法来对其进行修改、基于其内容进行查询、按其成分进行删除。
可以通过添加、修改或删除其元素来修改文档。
“文档”本身提供了一种方便的机制来组织元素,但是从数据库的角度来看,它不是绝对必须的。
不过从文档处理的角度来看,文档当然是必须的。
W3C的标准规定了XML文档包含7种类型的结构,其中最实用的是元素、属性和字符数据。
(1)概念模式
为XML设计关系模式的第一步,就是创建概念模式。
如线性的XML文档可以形象化为树结构,每个元素和字符数据对应于树中的节点,这是一个图形概念模式。
为了定义XML的抽象概念模式,可以考虑XML规范中的如下定义:
●一个文档包含一个(根)元素
●一个元素包含一个类型名、一个属性集、若干有序的子元素和字符数据
●一个属性由一个名字和一个值组成
●字符数据由文档中不属于标签的字符串组成
为了保持数据库设计的表示简单,在设计阶段我们只表示文档的基本信息,而忽略大多数其他来自规范的信息,如注释、处理指令、引用和声明等。
XML的概念模式:
●一个(XML)文档定义为包括一个名字和一个元素
●一个元素定义为包括一个类型名、一个属性集、若干子元素和字符数据
●一个属性定义为包括一个名字和一个值
●一个元素包括一个(它引用的)元素和一个索引编号,此编号定义它与其他子元素和子字符数据相关的顺序
●一个字符数据包括一个值(字符数据)和一个索引编号(定义与其他子元素和子字符数据相关的顺序)
从概念模式开始,可以创建一个关系型或面向对象型的模式,从而开发一个XMLDBMS,它使用关系或面向对象DBMS来表示XML文档的内容。
除了描述数据看起来像什么之外,还需要描述数据应该怎样被使用。
因此,我们首先描述一些可能需要的示例任务,然后再开发一个支持这些任务的基本操作集合。
存储XML文档的简单图形概念模式
(2)任务
下面是XML数据库可以执行的若干任务,它们描述了XMLDBMS对数据访问语言的一些要求:
1.存储文档
2.检索文档
3.搜索具有给定元素类型名的所有元素
4.搜索具有给定属性值的所有元素
5.把4所得元素的属性值改为指定字符串
6.搜索具有给定元素类型名且包含以指定字符串为子字符数据的所有元素
7.删除6所得的所有元素
8.搜索包含给定子串的字符数据
9.对匹配8的首个元素添加一个特定属性
10.在某一指定元素的范围内替换某一元素名为指定元素名,如在html元素内,将p元素的名称替换为para
11.检索具有指定属性值的所有元素,且该属性值也是另一指定元素的指定属性的值。
如:
<客户售货员=”张三”>…
….
<售货员姓名=”张三”>…
…
则被检索元素”客户”的指定属性值为”张三”,且该属性值也是另一指定元素”售货员”的指定属性”姓名”的值。
似getElements(has-attrVal==”张三”,售货员.姓名==”张三”)
(3)操作
为满足数据库的功能和任务,需要为每种数据类型给出一些示例操作:
●数据库
⏹添加文档到数据库中
⏹从数据库中删除文档
⏹在数据库中检索具有指定名字的文档
⏹搜索数据库,获取满足指定约束的所有文档
●文档
⏹在文档内的指定位置上添加元素
⏹从文档内的指定位置上删除元素
⏹从文档内的指定位置上检索元素
⏹以原文档的顺序,检索文档中的所有元素和字符数据
⏹搜索文档中满足一组指定约束的所有元素
⏹搜索文档中匹配一组指定约束的(如匹配一个字符串)的字符数据
⏹用另一元素或字符数据替换指定位置上的元素
⏹用另一元素或字符数据替换指定位置上的字符数据
⏹其他操作,如拷贝或编辑,可以使用上面这些操作来实现
●元素
⏹对文档的所有操作也可以应用于元素,如添加、删除、从元素中的指定位置检索子元素等等
⏹给元素添加属性
⏹从元素中删除属性
⏹从元素中检索给定属性名的属性
⏹从元素中替换给定属性名的属性值
⏹检索元素的第n个子元素
⏹检索元素的所有子元素
●字符数据
⏹检索字符数据的文本
⏹检索字符数据的父元素
●查询约束
⏹元素类型名(不)等于某个值
⏹属性名(不)等于某个值
⏹字符数据(不)等于某个值
⏹元素具有等于(小于/大于/不等于)特定数量的子元素
⏹查询的约束由全为真(或任一个为假)的两种约束组成
⏹查询的约束由一个一定为假的约束组成
为了设计和开发一个XMLDBMS,需要描述数据类型是什么以及它们可能怎样被操作,做好的办法就是描述DBMS的数据模型。
3.数据模型
模型是一个结构,用来表示实体的一些特性。
数据模型是对数据库表示语言的数学描述,用来描述数据库的结构、功能和数据约束。
数据模型是根据它的数据类型、操作符和约束来定义的。
实际上,没有商业数据库能够完全匹配所有领域的数据模型,但数据模型是一个好的机制,可以描述DBMS的基本功能,并可以作为与哪些声称实现了某个特定数据模型的系统进行比较的基础。
1)关系数据模型
现在的主流数据库系统采用的大多是关系数据模型,它也是面向对象数据库系统的基础,另外,也可以在关系数据库和XML文档之间实现某种转换,使得关系数据库也支持XML。
(1)数据模型
关系数据库的
●数据类型——是关系;
●操作符——有7个操作符:
选择、投影、连接、乘积、联合、求差和相交;
●约束——有两个独立于数据库的约束:
⏹一个基本关系的主键的组成部分不能为空
⏹数据库不必包含不匹配的外键值
关系是一个类型构造器,能够创建一组关系,每个关系(元组)以同样的顺序具有同样数量的特征(属性),每个特征具有一个名字和一个域(一组可能值),这些域通常被建模成具体的数据类型。
每个关系由一个有序的数据类型集组成。
关系模型之所以流行的原因之一,就是它能清楚地把所有关系约束在一个关系之中,使这些关系具有一个类似的抽象特征(如接口),而不是很多无类型的点。
因此,只需要少量的操作符就可以操作这些关系。
关系模型中除了7个基本操作之外,还需要一些附加操作,以便在一个关系之中插入、更新和删除关系实例。
但是这些操作在历史上并没有被关系数据模型所规定。
关系模型中所描述的联合操作可以由已有关系来创建新的关系,这也为如何操作XML元素提供了想法。
关系数据模型可以被修改来描述面向对象数据库的功能,并且这些修改已被集成到一些对象-关系DBMS之中。
这些修改对XML也有用,为了理解它们,必须先理解关系数据库的范式。
(2)XML与关系模式的范式
关系模式具有第一~五范式及Boyce-Codd范式(BCNF),设计关系数据库时主要考虑是一个数据库是属于第三范式(3NF)还是BCNF。
而对XML数据库,相关的范式有第一和第五范式。
关系数据库必须满足第一范式(firstnormalform,1NF)——要求域的每个属性都由不能分割的值组成。
但是非1NF关系对用一个关系框架来对对象或XML建模是非常有用的。
因为取消所有关系只能引用原子值的这个限制,并且允许嵌入集合或关系,则可以处理对象和XML数据。
具有连接依赖性质的第五范式(5NF或PJ/NF=projection-joinnormalform投影连接范式)的关系能够被分解为任意数量的较小的关系,且未丢失将关系重新连合起来所必须的信息。
为了把XML元素的变体结构存储在一个仅支持1NF关系的关系数据库中,XML元素的结构必须被分解成最小的组成部分——二元关系。
除了1NF和5NF外,XML还与实体关系、语义和图这三种数据模型有关。
2)XML数据模型
W3C的XML规范提供了数据模型必须的数据类型和约束。
但是因为XML是一种标记语言,没有显式的操作,实际上只有一个在数据类型中创建元素的操作。
一个数据模型的数据类型和操作提供了一个严格规范,确定了XML文档和文档片段在XMLDBMS中如何被存储、检索和操作。
根据该规范,可以开发出一个实例,提供XMLDBMS的功能。
下面介绍6种可能的XML数据模型。
(1)简单的XML数据模型
简单数据模型为XML定义了一种非常简单的数据模型——描述如何创建文档的一个元素、属性和字符数据域。
该模型的实现不能表示XML文档的所有信息,但是它提供了一种简单机制,可以跟踪应用程序之间的数据交换的相关内容。
其他XML数据模型多数是在该模型的基础上改进而成的。
●类型
⏹文档定义为具有一个名字和一个(根)元素
⏹元素定义为具有一个类型名、一个属性集和一个有序的字符数据及子元素的集合,这些字符数据和子元素可能散布在该有序集合之中
⏹属性定义为具有一个名字和一个值,名字和值都是字符串
⏹字符数据具有一个字符串值
●附加类型
节点(node)定义为一个数据类型的联合,包含任意的数据类型的任何实例,类似于OOP的超类
⏹一个节点是一个元素和字符数据类型的联合
⏹一个属性集是一个属性的集合
⏹一个节点列表是一个有序的节点集合
●操作
操作有增加、删除和检索,但不包括搜索和扩展的查询能力。
根据数据类型的操作,可以定义一个XMLDBMS。
⏹文档——创建和访问文档的操作:
●DocumentnewDocument(Stringname);//创建具有指定名称的文档
●ElementcreateDocumentElement(Documentdocument,Stringtag);//创建根元素
●ElementgetDocumentElement(Documentdocument);//获取根元素
●StringgetName(Documentdocument);//获取文档的名称
⏹元素——创建/获取/删除