XML数据库技术.docx
- 文档编号:202070
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:38
- 大小:101.04KB
XML数据库技术.docx
《XML数据库技术.docx》由会员分享,可在线阅读,更多相关《XML数据库技术.docx(38页珍藏版)》请在冰点文库上搜索。
XML数据库技术
XML数据库技术大全
北京邮电大学
计算机学院
2010.3
(源码网整理:
)
目录
XML数据库1
1.数据库技术的发展3
1)传统数据库系统3
2)新兴数据库技术3
2.XML与数据库4
1)XML是数据库吗?
4
2)需要XML数据库吗?
4
3)数据与文档4
(1)以数据为中心的文档5
(2)以文档为中心的文档7
(3)数据、文档与数据库7
4)XML数据库模型8
(1)概念模式8
(2)任务9
(3)操作10
3.数据模型10
1)关系数据模型11
(1)数据模型11
(2)XML与关系模式的范式11
2)XML数据模型12
(1)简单的XML数据模型12
(2)面向W3C规范的XML数据模型13
(3)面向关系的XML数据模型14
(4)以节点为中心的XML数据模型14
(5)以边为中心的XML数据模型14
(6)通用XML数据模型14
4.数据存储14
5.系统结构16
6.查询与索引17
1)查询17
2)索引17
7.实现与商用系统17
1)实现17
2)商用系统17
3)XML数据库产品18
(1)Middleware18
(2)XML-EnabledDatabases20
(3)NativeXMLDatabases21
(4)XMLServers23
(5)Wrappers24
(6)ContentManagementSystems24
(7)DiscontinuedProducts25
1.数据库技术的发展
数据处理的发展经历了三大阶段:
1950年代中之前的无管理阶段、1950年代末到1960年代末的文件系统阶段、1970年代初至今的数据库系统阶段。
数据库系统的前身是文件系统,文件系统是数据库系统发展的基石。
但与数据库系统相比,文件系统的冗余大(数据不能共享、重复浪费)、缺乏数据独立性(数据和程序相互依赖、改变困难)、数据未集中管理(无统一管理,无法保证安全性和完整性)。
1)传统数据库系统
早期数据库的结构种类丰富,如:
●层次数据库——如1968年IBM推出的世界上第一个数据库管理系统IMS(InformationManagementSystem,信息管理系统)
●网络数据库——如1969年美国CODASYL(ConferenceonDataSystemLanguage,数据系数语言协会)下属的DBTG(DataBaseTaskGroup,数据库任务组)发表的DBTG报告
●关系数据库——由IBM的E.F.Codd与1970年提出,如IBM的SanJose实验室1977年推出的SystemR和加州大学的Berkeley分校于1973年推出的INGRES
(实际上,现实世界(如人际关系)是非常复杂的,一般为网状结构。
层次结构(如家族血缘关系)只是它的一个局部,便于理解和管理。
二元关系则是它们的简化和映射,如父-子关系、兄-弟关系。
)
后来基于二维表的平面关系数据库成为市场主流,主要产品有甲骨文公司的Oracle(谕示/圣人)、IBM公司的DB2和Imformix、微软公司的SQLServer和Access及FoxPro、Sybase公司的SybaseASE等。
关系数据库有标准的查询语言SQL(StructuredQueryLanguage,结构化查询语言),SQL是一种基于关系代数和关系演算的非过程查询语言,最初是由IBM公司随其关系数据库系统SystemR推出的,1986年成为国际标准(ISO/IEC9075:
Informationtechnology--Databaselanguages--SQL),2003年推出第二版。
(源码网整理,)
2)新兴数据库技术
SQL与当时盛行的结构化程序设计方法相对应,通常采用C/S构架。
后来面向对象(OO=ObjectOriented)的程序设计方法开始流行(与结构化方法相比OO方式更适合人类对世界的认识和表达),随之于1980年代中后期出现了OO方法与数据库技术相结合的产物——面向对象的数据库系统,主流的关系数据库产品也纷纷增加对OO的支持,新版的SQL国际标准中也加上了OO部分。
采用OO技术的数据库能够比较好的实现对多媒体数据的支持,加上多媒体应用的普及和多媒体数据的激增,因此出现了多媒体数据库系统,并开始了基于内容的查询技术的研究。
随着大型/巨型并行计算机系统的发展及应用的需要,又出现了并行数据库;而随着网络的发展与成熟,分布式数据库系统也出现了;万维网的普及,基于B/S架构应用的流行,使Web数据库系统也应运而生。
近年来,随着XML技术越来越热门,主流的关系数据库产品又纷纷增加对XML的支持,同时也出现了一批纯XML数据库(nativeXMLdatabase)管理系统。
总之,作为信息系统的核心部分,数据库系统总是时刻与时俱进,能够及时吸收各种先进技术与成果,不断改进与完善自己,以满足各种应用的需要。
(操作系统与编程语言的发展也是如此)
2.XML与数据库
(以下内容主要取自RonaldBourret的XMLandDatabases一文之中译版。
)
1)XML是数据库吗?
如果仅按数据库这个术语的本质来看,XML文件就是数据库,它是数据的集合。
作为一种“数据库”格式,XML有一些优势,如它是自描述的、可交换的(Unicode)、能够以树型或图形结构描述数据。
同样它也有缺点,如它显得有些繁琐,由于要对它进行解析和文本转换,所以数据访问速度较慢。
一个更有用的问题就是在较为宽松的意义上,XML及其周边技术是否可以算作“数据库”——数据库管理系统(DBMS)?
答案是“在某种程度上是”。
从正面来说,XML提供了许多数据库所具备的东西:
存储(XML文档)、模式(DTD,XMLschema,RElAXNG等等)、查询语言(XQuery,XPath,XQL,XML-QL,QUILT等等)、编程接口(SAX,DOM,JDOM)等等。
从反面来说,它缺少一些作为实用的数据库所应具备的特性:
高效的存储、索引、安全、事务和数据一致性、多用户访问、触发器、交叉查询多个文件等等。
因此,尽管在数据量小、用户少和性能要求不太高的环境下,可以将XML文档用作数据库,但是却不适用于用户量大、数据集成度高以及性能要求高的作业环境。
2)需要XML数据库吗?
如果你要查询历史数据、存储Web页面、进行电子商务,而XML又在其中作为数据传输载体,则你就需要选择支持XML的数据库和中间件。
例如,你有个电子商务的应用,将XML用作数据交换。
那么你的数据最好有个非常规则的结构并且可供非XML程序使用。
还有,XML文档所用的某些东西如实体和编码对你来说并不重要——总之,你感兴趣的是数据,而不是它在XML内如何存储。
在这种情况下,你大概需要一个关系型数据库以及在XML和数据库之间转换数据的软件。
如果你的应用程序是面向对象的,你甚至还需要一个在数据库或XML中存取这些对象的系统。
另一方面,假如你要从一些结构松散的XML文档建立一个网站。
你不但要管理这个网站,还要提供站点内容搜索。
你的文档看起来结构比较松散,其中的实体的使用对你来说可能更重要,因为它们是文档结构的重要部分。
这种情况下,你也许需要一个纯XML数据库或内容管理系统。
这使你可以保持文档的物理结构,支持文件级的事务处理,以及使用XMLQuery语言进行查询。
3)数据与文档
在选择数据库时最重要因素大概就是你想在数据库存储的究竟是数据还是文档。
例如,是简单地把XML当作数据库和(可能不支持XML)应用程序之间的数据转换工具,还是用于集成,就像XHTML和DocBook中的那样?
通常这是个偏好,但是却非常重要,因为这会影响到XML在数据库中如何存储。
如果想保存数据,则需要的是主要面向数据存储的数据库,如关系数据库或面向对象数据库,也可以是在数据库和XML文档之间转换数据的中间件。
如果想保存文档,则需要的是一个专门用来存储文档内容的内容管理系统(contentmanagementsystem)。
XML文档可以分为两类:
以数据为中心的(data-centric)文档和以文本为中心的(document-centric)文档。
(1)以数据为中心的文档
以数据为中心的文档将XML用作数据的传输载体,文档只提供给机器使用。
在此,XML通常并不是绝对必要的。
也就是说,对于应用程序或数据库而言,(在某个时间段内)数据是否以XML文档的形式存储并不重要。
以数据为中心的文档的例子有销售订单、航班时刻表、科研数据及股市汇率。
以数据为中心的文档的特点是结构相当规整,数据粒度小(即最小的独立数据单位只存在于PCDATA元素或属性这一级别),很少或没有混合内容。
除非在对文档进行验证的时候,同级元素或PCDATA的出现次序一般来说并不重要。
以数据为中心的文档中的这类数据可以来自数据库(此时要输入给XML)或在数据库之外(此时要将其存入数据库)。
前者的一个例子就是关系数据库现存的大量数据;而从测量系统采集并转化为XML的科研数据就是后者的例子。
例如,下面的销售订单就是以数据为中心的:
Turkeywrench:
Stainlesssteel,one-piececonstruction,
lifetimeguarantee.
Stuffingseparator:
Aluminum,one-yearguarantee.
除了像销售订单这种显而易见的以数据为中心的文档之外,许多以文本为主的文档也可以是以数据为中心的。
例如,A用来显示书籍信息的一个页面。
尽管页面上大部分内容都是文本,这些文本的结构是非常规则的,许多都和其它书籍的描述相同,每个页面特有的文本并不很多。
这样,就可以从数据库中取出书籍的相关资料,转换为简单的、以数据为中心的XML文档,再用XSL样式表生成页面。
一般来说,那些用数据库中的数据填充模板,动态生成HTML文件的网站都可以转而使用一系列以数据为中心的XML文档和XSL样式表。
例如,下面是个描述航班信息的文档:
non-stopflightsdailyfrom
15,
15,
and
15.Arrivaltimesareminuteslater.
从下面的XML文件和一个简单的样式表中创建这个文档:
15
16
15
16
15
16
(2)以文档为中心的文档
以文档为中心的文档通常是供人阅读的。
例如书籍、email、广告以及几乎所有人工写成的XHTML文件。
其特性为结构不太或根本不规则、数据粒度大(最小的独立数据单位可能存在于包含混合内容的元素甚至整个文档本身),混合内容多。
同级元素或PCDATA出现的次序一般来说总是非常重要的。
以文档为中心的文档通常是以XML手工写成,或从其他格式(如RTF,PDF,SGML)转换到XML的,与以数据为中心的文档不同,它们的来源通常不是数据库(将数据插入到模板而得到的文档是以数据为中心的)。
例如,下面这个产品说明是以文档为中心的:
The
FabricationLabs,Inc.is
butnotasbig.
handedversions(skyhookoptional),ismadeofthefinest
stainlesssteel.TheReadi-griprubberizedhandlequicklyadapts
toyourhands,eveninthegreasiestsituations.Adjustmentis
possiblethroughavarietyofcustomdials.
ordernow,comeswithahand-craftedshrimphammerasa
bonusgift.
(3)数据、文档与数据库
在现实当中,以数据为中心和以文档为中心的文档之间的差别不一定很明显。
例如,另一种以数据为中心的文档比如发票,可能含有大粒度的、结构不规则的数据比如零件说明;另一种以文档文中心的文件如用户手册,可能包含细粒度的结构规则的数据(通常为元数据)比如作者和修订日期。
其它例子包括法律和医学文书,虽然以松散的形式写成但是却包含离散的数据块例如日期、名称和操作程序,出于法规的原因通常要以完整的文件形式存储。
除此之外,弄清文件的这两种特点有助于选择数据库的类型。
一般来说,将数据存储于传统的数据库,例如关系型,面向对象型或层次型数据库。
这可由第三方的中间件完成或由数据库本身提供内在支持。
对于后者,该数据库被称作支持XML的(XML-enabled)。
文档可被存储在纯XML数据库(专为存储XML而设计的数据库)或内容管理系统(建在纯XML数据库之上专门用来管理文档的程序)。
这些原则并不是绝对的。
如果对XML特有的功能不很看重,数据,特别是半结构化的数据可以存储在纯XML数据库,文档也可以存储到传统数据库。
何况传统数据库与纯XML数据库之间的界限越来越模糊,传统数据库增加了纯XML的能力,而纯XML数据库增加了对文档存储在外部(通常为关系型)数据库的支持。
4)XML数据库模型
(以下内容取自MarkGraves的DesigningXMLDatabases一书。
)
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.数据模型
(以下内容主要取自MarkGraves的DesigningXMLDatabases一书。
)
模型是一个结构,用来表示实体的一些特性。
数据模型是对数据库表示语言的数学描述,用来描述数据库的结构、功能和数据约束。
数据模型是根据它的数据类型、操作符和约束来定义的。
实际上,没有商业数据库能够完全匹配所有领域的数据模型,但数据模型是一个好的机制,可以描述DBMS的基本功能,并可以作为与哪些声称实现了某个特定数据模型的系统进行比较的基础。
1)关系数据模型
现在的主流数据库系统采用的大多是关系数据模型,它也是面向对象数据库系统的基础,另外,也可以在关系数据库和XML文档之间实现某种转换,使得关系数据库也支持XML。
(1)数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- XML 数据库技术