基于XML技术的数据库应用.docx

上传人:b****2 文档编号:20784632 上传时间:2023-04-25 格式:DOCX 页数:11 大小:23.51KB
下载 相关 举报
基于XML技术的数据库应用.docx_第1页
第1页 / 共11页
基于XML技术的数据库应用.docx_第2页
第2页 / 共11页
基于XML技术的数据库应用.docx_第3页
第3页 / 共11页
基于XML技术的数据库应用.docx_第4页
第4页 / 共11页
基于XML技术的数据库应用.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

基于XML技术的数据库应用.docx

《基于XML技术的数据库应用.docx》由会员分享,可在线阅读,更多相关《基于XML技术的数据库应用.docx(11页珍藏版)》请在冰豆网上搜索。

基于XML技术的数据库应用.docx

基于XML技术的数据库应用

基于XML的数据库应用

1关系型数据库

1.1关系模型

关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为数据库架构的主流模型。

简单来说,关系模型指的就是二维表格模型。

下面列出了关系模型中的常用概念。

●关系:

可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名。

●元组:

可以理解为二维表中的一行,在数据库中经常被称为记录。

●属性:

可以理解为二维表中的一列,在数据库中经常被称为字段。

●域:

属性的取值范围,也就是数据库中某一列的取值限制。

●关键字:

一组可以唯一标识元组的属性。

数据库中常称为主键,由一个或多个列组成。

●关系模式:

指对关系的描述,其格式为:

关系名(属性1,属性2,…,属性N)。

在数据库中通常称为表结构。

1.2关系型数据库

关系型数据库是支持采用了关系模型的数据库,简单来说,关系模型就是指二维表模型。

关系型数据库以行和列的形式存储数据,以便于用户理解。

这一系列的行和列被称为表,一组表组成了数据库。

用户用查询(Query)来检索数据库中的数据。

一个Query是一个用于指定数据库中行和列的SELECT语句。

关系型数据库通常包含下列组件:

  客户端应用程序(Client)

  数据库服务器(Server)

  数据库(Database)

StructuredQueryLanguage(SQL,结构化查询语言)是Client端和Server端的桥梁,Client用SQL来向Server端发送请求,Server返回Client端要求的结果。

现在流行的大型关系型数据库有IBMDB2、Oracle、SQLServer、SyBase、Informix等。

关系型数据库管理系统中储存与管理数据的基本形式是二维表。

1.3关系型数据库的优点

关系型数据库相比其他模型的数据库而言,有着以下优点:

●容易理解:

二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解。

●使用方便:

通用的SQL语言使得操作关系型数据库非常方便,程序员甚至于数据管理员可以方便地在逻辑层面操作数据库,而完全不必理解其底层实现。

●易于维护:

丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概率。

近几年来,非关系型数据库在理论上得到了飞快的发展,例如:

网状模型、对象模型、半结构化模型等。

网状模型拥有性能较高的优点,通常应用在对性能要求较高的系统中;对象模型符合面向对象应用程序的思想,可以完美地和程序衔接,而不需要另外的中间转换组件,例如现在很多的O\RMapping组件;半结构化模型随着XML的发展而得到发展,现在已经有了很多半结构化的数据库模型。

但是,凭借其理论的成熟、使用的便捷以及现有应用的广泛,关系型数据库仍然是系统应用中的主流方案。

2XML数据库

2.1XML文档类型

XML文档有两种类型:

面向文档处理和面向数据处理。

面向文档处理的文档是利用XML来获取自然(人类)语言的那些文档,如用户手册。

它们以复杂或无规则的结构和混合内容为特征,而且文档的物理结构非常重要。

这些文档的处理侧重于给用户提供信息的最终表示,因此它们也被称作面向表示的文档。

面向数据处理的文档主要利用XML来传送数据,这些文档包括销售订单、病人记录和科学数据等。

面向数据处理的XML文档的物理结构,如元素的顺序,或者数据被存储为属性还是子元素,通常不是很重要。

它们的特征是高度有序的结构,并且同时带有那些数据结构的多个副本,类似于关系数据库系统中的多条记录。

这些文档的处理通常侧重于应用程序间的数据交换,因此它们也被称作面向消息的文档。

这两类文档有时也简称为面向文档的(XML)文档和面向数据的(XML)文档。

面向数据处理和面向文档处理的XML文档之间的区别不大,然而文档上需要执行的操作是不一样的。

在一个面向文档处理的XML文档中,需要执行的操作包括检索整个文档、搜索关键词、修改一部分或重排一部分。

在一个面向数据处理的XML文档中,需要执行的操作包括检索文档的一个指定部分、搜索元素和数据的一个特定的结合、修改或删除一个简单的元素或一块简单的数据,或者给文档添加一个新元素。

2.2XML数据库

XML数据库是一个XML文档的集合,这些文档是持久的并且是可操作的。

目前XML数据库有三种类型:

(1)XMLEnabledDatabase(XEDB),即能处理XML的数据库。

其特点是在原有的数据库系统上扩充对XML数据的处理功能,使之能适应XML数据存储和查询的需要。

一般的做法是在数据库系统之上增加XML映射层,这可以由数据库供应商提供,也可以由第三方厂商提供。

映射层管理XML数据的存储和检索,但原始的XML元数据和结构可能会丢失,而且数据检索的结果不能保证是原始的XML形式。

其核心方法是将XML的树型结构拆分为表。

XEDB的基本存储单位与具体的实现紧密相关。

(2)NativeXMLDatabase(NXD),即纯XML数据库。

其特点是以自然的方式处理XML数据,以XML文档作为基本的逻辑存储单位,针对XML的数据存储和查询特点专门设计适用的数据模型和处理方法。

(3)HybridXMLDatabase(HXD),即混合XML数据库。

根据应用的需求,可以视其为XEDB或NXD的数据库,典型的例子是Ozone(http:

//www.ozone-db.org/frames/home/what.html)。

3XED和NXD的比较

早期的XML数据以文档(文本文件)的方式存储,以关键字查询等信息检索手段进行查询,简单易用,适合XML文档不频繁更新的场合。

由于缺乏系统的存储和查询机制的支持,造成查询能力低,不能满足复杂条件的查询,更谈不上查询优化。

一些现有的商业数据库管理系统扩充了处理XML数据的功能。

利用现有数据库成熟的技术,把XML查询要求转换为数据库的查询表达,如SQL,由数据库的查询引擎优化查询表达,产生查询执行计划并执行,最后再将查询的结果转换为XML数据。

这种方法在一定程度上解决了查询复杂性的要求,但是多次转换带来的问题是效率的降低和查询语义的混淆,即阻抗失配的问题。

(1)从本质上讲,传统的RDBMS不支持层次的和半结构化的数据形式,只有经过转换处理才能把嵌套的XML数据放到简单的关系表中。

XML是具有动态结构的数据,这正是XML可扩展性的关键,而传统的RDBMS不能处理这种数据。

(2)SQL适合于查询受确定模式支配的表,它不是为具有动态、复杂特性的XML设计的。

(3)传统的RDBMS查询引擎需要把针对XML的查询翻译成很多关系表的检索和连接运算,这不仅造成查询性能的下降,而且往往不能产生代价较小的查询执行计划。

3.1XED的优、劣势

优势:

●用户不需要将传统数据库中原有数据重新移植到新系统中,只是稍加改变,就可以支持XML应用。

●传统数据库技术,例如并发控制、事务等,已经很成熟

●传统数据库知识和经验依然有效,用户不需要为了应用XML而再去学习一套新的数据库技术

劣势:

●XML文档存入到数据库时需要将其"打碎",取出时需要"组合",不仅耗时,而且文档的格式可能会不同

●XML文档和数据库之间的模式转换复杂,在前期开发阶段需要投入很大

●对"以文档为中心"、格式复杂的XML文档处理性能较差

●在采纳XML技术标准方面较落后

3.2NXD的优、劣势

优势:

●XML文档存取无需模式转换,存取速度快

●对格式复杂的XML文档支持比XED要好

●支持大部分的最新的XML技术标准

劣势:

●在传统数据库技术方面比较薄弱,没有经过时间的考验

●知识比较新,相应的支持人员和文档资源都比较少

●应用范围仅局限在XML应用领域中

事实上,两者的优劣并没有统一的答案,而是和具体的应用相关。

在开发格式较简单、数据内容比格式更重要的应用时,XED是不错的选择,特别是在已有的传统数据库上要提供XML的访问接口的情况下。

相反,如果XML文档格式复杂,数据本身就有层次性关系,或是只有XML数据的时候,就可以考虑NXD,因为它提供更好的性能,对XML标准有更完备的支持。

另外,由于NXD在事务、数据恢复等传统数据库技术方面还未得到时间的检验,因此对数据安全要求较高的一些应用,如银行、金融系统的数据库,建立在传统数据库上的XED相对来说更有优势。

4NativeXML数据库

NativeXML数据库管理系统(纯XML数据库管理系统,NXDBMS)以自然的方式处理XML数据,没有因数据模型转换而带来信息丢失和性能下降。

NXDBMS与非NXDBMS的区别在于”:

①有效地支持XML数据的自描述性、半结构化和有序性;②系统直接存储XML数据,而不是把XML数据转换成关系模型或者面向对象模型,由关系数据库或面向对象数据库存储;③直接支持XML查询语言,如XQuery,XPath,而不是转换成SQL或OQL(对象查询语言)。

什么是真正的NativeXML数据库(纯XML数据库,NXD)?

RonaldBourret在“XMLandDatabases”一文中给出有关NXD的定义。

一个纯XML数据库是指:

(1)相对于XML文档中的数据,定义了XML文档的逻辑模型,并且按照该模型来存储和检索文档。

这样的模型至少应该包括元素、属性、PCDATA以及文档顺序。

如Xpath数据模型、XMLInfoset(参阅http:

//www.w3.Or6/TR/xml-infoset/)以及由DOM和SAX1.0(参阅http:

//sax.sourceforge.net和ht-tp//www.saxproject.org)中的事件所隐含的模型都是这类数据模型。

(2)就像关系数据库以行作为表的逻辑存储基本单位一样,NXDBMS以XML文档作为NXD的逻辑存储基本单位。

(3)不要求有任何特殊的基本物理存储模型,它可以建立在关系的、层次的或面向对象数据库之上,或者使用诸如索引文件、压缩文件此类的专门存储格式。

从这个定义至少可以简单地总结以下三点:

①纯XML数据库是专门用来存储XML数据的,而且完整无缺地存储XML模型的所有成分;②文档进得去出得来;③NXD可能根本就不是真正独立的数据库。

随着对NXD的认识与技术的发展,人们越来越不认同上述定义的第三点。

在这一方面,德国的SoftwareAG(参阅ht-tp:

//www2,softwareag.corn/)公司走在了前面。

他们认为建立和设计NXD系统是用来处理XML数据的,而不仅仅是在任意数据模型的数据库系统之上附加一层对XML的处理。

用户可能一眼看不出它们之间有什么差别,但最根本的不同是在系统的内部。

在很多方面,XML都不同于其他著名的数据模型(如关系模型、面向对象模型)。

将XML映射到另一种数据模型常常引起“阻抗失配”,并导致功能和性能上的局限”。

因此,NXD必须直接存储XML数据。

一般认为,NXD应该具有以下几个特性:

文档集合(DocumentCollection),查询、更新,事务、锁和并发控制、二次开发接口等。

●文档集合

很多NXD产品都支持“文档集合”的概念,就像文件系统中的一个目录或RDBMS中的一张表,一个“文档集合”把一类文档聚集在一起,方便用户操作。

集合级别上的查询、修改操作都会反映到集合内的每个文档。

一般说来,一个“文档集合”关联一种模式。

将文档加入到有模式的"文档集合"时,会对要加入的文档进行模式检查。

只有符合"文档集合"模式的文档才可以加入。

不同于RDBMS中表必须具有模式,NXD还提供"无模式"的文档集合,即将一个文档放入该集合中时,不必检查该文档的模式。

"无模式"的文档集合大大方便了用户存储格式很难统一,半结构化的XML文档。

●查询语言

XPath和XQuery是W3C推荐的针对XML文档的查询语言。

目前大部分NXD产品都支持XPath,。

另外还有一些NXD提供专有的查询语言。

Path是基于XML文档树形模型,给出从某个结点起的查询路径,搜索文档。

目前,XPath作为数据库查询语言还有不少缺陷:

不能分组、排序、连接等。

而XQuery更像一种编程语言,支持循环等逻辑,支持分组、排序、连接等。

相对于传统数据库的标准SQL语句,XQuery在对XML数据的查询方面,是一种功能更强大、更易于编程的方法。

●事务、锁和并发控制

几乎所有的NXD都支持事务处理。

但是,锁的粒度通常比较大,对整个文档的而不是对文档片断(Fragment)的,所以多用户并发性的支持相对较低。

具体的并发程度取决于应用程序以及"文档"的构成。

●二次开发接口

几乎所有NXD都提供编程接口:

提供数据库连接、浏览元数据、执行查询和返回结果的方法。

返回结果通常是XML字符串、DOM树、返回文档的SAX解析器。

如果查询返回结果是多个文档或文档片断(Fragment)的话,通常都会提供枚举这些结果的方法。

对于以Client/Server模式运行的数据库产品,还可以将结果通过网络协议(如HTTP)回传给客户端。

●Round-tripping

NXD一个重要特性是它为XML文档提供了Round-tripping:

可以将XML文档存放在NXD中,而且再取回"同样的"文档。

对于以"文档为中心"的应用程序来说非常重要,因为易被XED忽略的CDATA部分、实体应用、注释和处理指令是这些文档不可缺少的组成部分。

特别是对于法律和医学领域中格式不允许随意窜改的数据文档。

所有NXD都能够在元素(element)、属性(Attribute)、CDATA和文件顺序的级别上为文档提供Round-tripping,能达到的具体程度取决于数据库产品。

5四个主流的Native-XML数据库

随着XML日益广泛的应用,XML数据存储的问题摆在了我们的面前。

如何有效地管理大量的XML文档是亟待解决的问题。

最初,通常的做法是先把XML数据转换为关系映射将其存入关系数据库中,写入和读出都要进行相应的转换。

但是随着XML数据量的日益增加,这显然不是最好的解决办法。

于是诞生了专门为XML文档存储设计的Native-XML数据库,也被称为原生XML数据库或纯XML数据库。

本文介绍了四个主流的Native-XML数据库,并略作比较,以为需要大量存储XML数据的用户提供Native-XML数据库的选择参考。

5.1Tamino数据库系统

Tamino是SoftwareAG公司提供的原生XML数据库服务器产品,它于1999年发布第一个版本。

Tamino将XML文档以原生的方式存储在Tamino数据库中,而不是映射到其他的数据库模型。

Tamino数据库具有以下特点:

(1)支持HTTP方方法GET、PUT、DELETE和HEAD读取文档、存储或替换文档、删除文档那个和取得文档的有关信息,并支持SSL安全机制;

(2)提供Java、ActiveX、JavaScript和.net等语言的API访问;

(3)支持XMLSchema模式验证;

(4)也可存储其他类型的对象,如图像、声音文件、Word文档、HTML页面文件等;

(5)方便与其他数据库进行集成与数据转化;

(6)支持XQuery查询语言;

(7)提供图形界面和命令行方式的交互。

TaminoXML服务器提供了用于处理XML的现代数据库系统必需的完整功能。

它支持一个数据库系统所应该具有的所有特性,包括多用户操作、事务支持、强大的备份功能,海量处理能力、可扩充性和高性能。

5.2eXist数据库系统

eXistz是一个开放源代码的纯XML数据库系统,于2001年开始研究。

eXist数据库具有以下特点:

(1)完全用Java语言实现;

(2)不支持XMLSchema模式验证;

(3)支持XPath查询;

(4)支持可插拔的存储后端,即后端既可以纯XML数据库也可以是关系数据库;

(5)支持HTTP、XML-RPC、SOAP和WebDAV接口访问和Java专用的XML:

DBAPI;

5.3Xindice数据库

Xindice是一个开放源码的Native-XML数据库。

它也是Apache自由软件基金会下的一个项目。

Xindice可以以XML本身的格式存储和检索XML数据,它有个缺点是不能处理较大的XML文档数据。

这个大小没有严格的定义,通常1M字节以上的就可以认为比较大。

Xindice具有以下特点:

(1)完全用Java语言写成,因此需要JDK的支持;

(2)支持DOM和SAX编程接口;

(3)仅支持wellformed的XML文档,不支持Schema验证。

(4)提供Java语言的XML:

DBAPI接口和其它语言的XML-RPC的接口;

(5)提供命令行管理工具。

Xindice目前已经足以运用于一般的内容管理系统,但其不支持XML校验和不能处理较大的XML文档,因此在大型应用中有所限制。

5.4BerkeleyDBXML嵌入式数据库

BerkeleyDBXML是一个开放源码的嵌入式Native-XML数据库。

它是在BerkeleyDB(一种通用的嵌入式数据库引擎)的基础上开发而成。

BerkeleyDBXML存储XML文档,对它们进行索引并提供一个XPath检索接口。

XML文档被组织在不同的容器内,这些容器可以共用一个通用的模式定义或者不规定特定的模式。

BerkeleyDBXML数据库具有以下特征:

(1)它是一个库而不是一个数据库服务器,它与应用程序运行在同一个进程;

(2)提供基于XQuery的接口访问存储;

(3)支持XMLSchema验证;

(4)对外提供编程接口API支持C++、Java、Perl、Python、PHP、Tcl、Ruby等语言;

(5)开放源代码、底层采用C/C++语言实现;

(6)支持操作系统包括Windows、Linux、BSD、UNIX、MacOS/X和任何POSIX兼容的操作系统;

(7)提供命令行方式与数据库进行交互操作。

(8)支持大用户量的并发访问,存储容量可达256TB;

BerkeleyDBXML也是Oracle数据库产品解决方案的一部分,这一点表明它的可用性及性能上值得信赖。

5.5四个Native-XML数据库简单比较

Tamino是个功能强大的商业Native-XML数据库产品,而且提供图形界面。

缺点是要花钱。

eXist和Xindice都是完全用Java语言写的开源数据库,eXist更适合用于管理以文档为中心的XML数据,Xindice不适合大文档的处理,它们两者差不多在内容管理领域都有应用。

BerkeleyDBXML的功能比较强大,支持Schema验证是其优点之一。

BerkeleyDBXML嵌入式数据库跟应用程序运行在相同的地址空间,因此它既可以支持小的、但用户应用程序,又支持拥有大量内存和硬盘空间的多处理器计算机上处理数以千计的并发用户访问。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1