XML数据库是一种支持对
XML(
标准通用标记语言下的一个应用)格式文档进行存储和查询等操作的数据管理系统。在系统中,开发人员可以对数据库中的XML文档进行查询、导出和指定格式的序列化。
定义
XML是eXtensible Markup Language(可扩展标记语言)的英文缩写。标记(Markup)通常是指一个文档中不需要实际打印输出的部分,主要用于告知文档编辑者(人或软件系统)文档格式的描述,即可以按照“标记”给出的“注解”进行文档格式的相应编排。广泛使用的
HTML(Hyper Text Markup Language)就是网页文档格式的标记化语言。XML现已经成为互联网上数据表示和交换的标准。XML的核心在于对数据内容进行描述,使得系统能够根据标记对数据进行有效管理,因此产生了相应XML数据库技术。
XML数据库是一种支持对
XML(
标准通用标记语言下的一个应用)格式文档进行存储和查询等操作的数据管理系统。在系统中,开发人员可以对数据库中的XML文档进行查询、导出和指定格式的序列化。
分类
XML本质上只是一种
数据格式,它的本意并不在管理数据,因此在XML应用中,数据的管理仍然要借助于数据库,尤其是数据量很大、性能要求很高的时候。XML数据库这一称谓并不是一个正式的术语,不能把它和关系数据库相提并论,它是一个比较模糊的称呼,这里所指的XML数据库是指能够管理XML数据的数据库管理系统。
XML数据库有三种类型:
(1)XMLEnabledDatabase(XEDB),即能处理XML的数据库。其特点是在原有的
数据库系统上扩充对XML数据的处理功能,使之能适应XML数据存储和查询的需要。一般的做法是在数据库系统之上增加XML映射层,这可以由数据库供应商提供,也可以由第三方厂商提供。映射层管理XML数据的存储和检索,但原始的XML元数据和结构可能会丢失,而且数据检索的结果不能保证是原始的XML形式。XEDB的
基本存储单位与具体的实现紧密相关。
(2)NativeXMLDatabase(NXD),即纯XML数据库。其特点是以自然的方式处理XML数据,以XML文档作为基本的逻辑
存储单位,针对XML的
数据存储和查询特点专门设计适用的数据模型和处理方法。
(3)HybridXMLDatabase(HXD),即混合XML数据库。根据应用的需求,可以视其为XEDB或NXD的数据库,典型的例子是Ozone。
XML数据库是一个能够在应用中管理XML数据和文档的集合的
数据库系统。XML数据库是XML文档及其部件的集合,并通过一个具有能力管理和控制这个
文档集合本身及其所表示信息的系统来维护。XML数据库不仅是
结构化数据和半结构化数据的存储库,像管理其它数据一样,持久的XML数据管理包括数据的独立性、集成性、访问权限、视图、完备性、冗余性、一致性以及
数据恢复等。这些文档是持久的并且是可以操作的。
当前着重于页面显示格式的HTML
标记语言和基于它的关键词检索等技术已经不能满足用户日益增长的信息需求。近年来的研究致力于将数据库技术应用于网上数据的管理和查询,使查询可以在更细的粒度上进行,并集成多个
数据源的数据。但困难在于网上数据缺乏统一的、固定的模式,数据往往是不规则且经常变动的。因此,XML数据作为一种自描述的半结构化数据为Web的
数据管理提供了新的数据模型,如果将XML标记数据放入一定的结构中,对数据的检索、分析、更新和输出就能够在更加容易管理的、系统的和较为熟悉的环境下进行,因而我们将数据库技术应用于XML数据处理领域,通过XML数据模型与
数据库模型的映射来存储、提取、综合和分析XML文档的内容。这为数据库研究开拓了一个新的方向,将数据库技术的研究扩展到对Web数据的管理。
特点
1、XML数据库能够对半结构化数据进行有效的存取和管理。如网页内容就是一种半结构化数据,而传统的关系数据库对于类似网页内容这类半结构化数据无法进行有效的管理。
2、提供对标签和路径的操作。传统数据库语言允许对
数据元素的值进行操作,不能对元素名称操作,半结构化数据库提供了对标签名称的操作,还包括了对路径的操作。
3、当数据本身具有层次特征时,由于XML数据格式能够清晰表达数据的层次特征,因此XML数据库便于对层次化的数据进行操作。XML数据库适合管理复杂数据结构的数据集,如果己经以XML格式存储信息,则XML数据库利于文档存储和检索;可以用方便实用的方式检索文档,并能够提供高质量的
全文搜索引擎。另外XML数据库能够存储和查询异种的文档结构,提供对异种信息存取的支持。
方法
利用数据库管理XML数据主要有两种方法:一是已有的关系数据库管理系统或
面向对象数据库管理系统的基础上扩充相应的功能,使得能够胜任XML数据的管理,称之为支持XML的数据库,亦称为XML使能数据库;二是为了管理XML数据而量身定做的数据库管理系统,称之为原生XML数据库,亦称为纯XML数据库。
支持XML的数据库
要使RDBMS支持XML存储和查询,必须有一个XML转换层,这个转换层可以是RDBMS中的一个模块,也可以是RDBMS之上的一个中间件。这个转换层完成XML数据/查询与关系数据/查询之间的转换,其中包括两个模块:一个
分裂器和一个查询翻译器。
其工作原理如下:首先,根据XML模式,分裂器产生对应的关系模式,XML模式到关系模式的映射会保留下来;然后,当载入XML数据时,分裂器根据XML模式到关系模式的映射将XML数据分裂到关系表中存储;用户提出XML查询,经查询翻译器翻译后,产生SQL查询,提交关系给关系引擎执行,返回关系结果,这些关系数据经过查询翻译器包装后,再以XML结果形式返回给用户。
支持XML数据库主要是基于关系数据库的。这种方法的优点是可以充分利用已有的非常成熟的关系数据库技术,集成体现有的大量存储在关系数据库中的商用数据,但这种处理方法不能利用XML数据自身的特点,如结构化、自描述性等特征,使得在处理数据的时候要经过多级复杂的转换,如存储XML数据时要将其转换为关系表或对象,在查询时要将XML查询语句转换为SQL或OQL语句,查询结果还要转换为XML文档等,多级的转换必将带来效率的降低,而且还会导致一些语义信息的丢失。
原生XML数据库
原生XML数据库这个术语,首先是由Software AG 公司为其开发的XML数据库产品Tamino所做的营销宣传中提出来的,后来这个术语在同类产品中成了通用叫法。但它只是一个营销术语,从来没有正式的技术定义。在Ronald Bourret 的网站上,Ronald Bourret 给出了一个定义(但这个定义并不是Ronald Bourret 本人提出来的),即满足以下三个条件的XML数据库才能称之为原生XML数据库:
(1)为XML文档定义一个(逻辑)模型,XML数据的存储和查询都是基于这个模型,这个模型至少包含
元素、属性以及
PCDATA等,保持文档顺序;
(2)将XML文档作为(逻辑)存储的基本单位,正如关系数据库将元祖作为它存储的基本单位一样;
(3)不要求只能使用某一特定的底层物理模型或某种专用的存储格式。
第一个条件要求原生XML数据库必须基于某种模型,这就像关系数据库基于
关系模型,层次数据库基于
层次模型一样。第二个条件的意思是在原生XML数据库中,数据只有在一个XML文档中才有意义,当然这并不妨碍查询一个文档的片段,就像在关系数据库中仍然可以查询一个元祖的片段(属性值)一样。第三个条件的意思是底层的存储格式并不重要。事实上,很多原生XML数据库是采用一些传统的数据库作为底层存储引擎的,当然也有很多是采用专有存储格式的。