XML数据库

2024-08-15

XML数据库(共11篇)

XML数据库 篇1

1 XML与数据库

现在对XML数据库的应用一般分为支持XML的数据库系统和原生XML数据库。现在很多企业都把XML作为数据库的一个补充,大的数据库厂商都在数据库产品内置了对XML的支持,这样将XML与数据库配合使用,这样的相互配合利用可以使它们各自发挥出威力,也能提高信息产品的灵活性。但是基于关系型数据库管理系统的支持XML的数据库系统也存在着一些问题:映射过程复杂繁琐;对较复杂的数据结构,映射的速度很慢;映射过程中会丢失元数据信息;存入和取出的XML文件可能不一致;数据必须有严格的结构;不支持包含混合内容的文件;灵活性、扩展性较差。如果你要查询历史数据、存储Web页面、进行电子商务,而XML又在其中作为数据传输载体,则你就需要选择支持XML的数据库和中间件。原生XML数据库为XML文档定义了一个 (逻辑模型,并根据该模型存取文件。它有一个XML文档作为它的基本的逻辑存储单元,就像关系型数据库在表格里也有一行作为基本的逻辑存储单元。原生XML数据库并不需要一些特定的潜在的物理存储模型,例如它可以建立一个关系型、层次型或面向对象的数据库,或使用专有的存储格式,例如索引,压缩文件。

2 XML数据库与关系型数据库的比较

如表1所示,XML数据库有其自身的优点:可存储以文档为中心和以数据为中心的XML;有很大的灵活性;适用于处理结构复杂、深层嵌套的数据,适于处理半结构化数据和非结构化数据;它是多种异构数据源的数据共享和集成;异构系统间的互操作。但XML数据库也有自身的缺点:产品不成熟;许多标准仍处于发展过程中;技术不为大家所熟悉;不适合事务处理;支持的工具较少;产品间的可互操作性较差。

3 XML与数据库映射

为了在数据库和XML文档之间传递数据,必须在文档结构和数据库结构之间建立映射,这种映射可以有两个分类:模板驱动和模型驱动

1) 以模板驱动映射

模板驱动就是通过在XML文档中嵌入可以被中间层功能代理支持的sql指令来实现数据的映射。值得注意的是,当前基于模板驱动的映射只能应用于在关系数据库和XML文档之间传递数据。

2) 以模型驱动映射

模型驱动就是通过在DTD/Schemas中定义数据模型的方法,建立数据库中数据与XML文档中数据的映射。模型驱动的映射是一种深层次的映射,是模式和模式之间的映射。XML文档和面向对象数据库的结构都是树型结构,这两者的映射相较XML与关系数据库的映射来得简单。所以采用模型驱动。将XML文档映射到面向对象数据库,也就是根据DTD/Schemas生成数据库模式过程。具体实现步骤为:

(1) 按照深度有限原则从XML文档树的树叶往树根进行遍历;

(2) 每当碰到除叶结点和根结点以外的内部结点,就查看数据库中是否存在对应的抽象数据类型,若不存在,则创建,并保证该结点所有子结点是该抽象数据类型的域;

(3) 循环遍历XML文档树也就是重复2) ,直至根结点的直接子结点(次根结点);

(4) 创建基于次根结点所对应抽象数据类型的对象,该对象是根结点所对应的对象;

(5) 将XML文档中各元素的属性值填入对象的相应域。

3) 对DOM对象的操作

查找DOM对象的例子

操作dom对象的例子

总而言之,现在人们正在尝试通过把XML文档映射到不同数据库模型的模式定义的方法来表示层次化的数据。

4 XML数据库技术的应用

XML文档有两种用途,分别是:以数据为中心的文档(data-centric documents)和以文档为中心的文档 (document-centric documents) ,区分它们的目的在于它们各自不同的特性将影响到我们如何选择XML在数据库中的存储方式。

1) 以文档为中心 (Document-centric model)

XML作为标记语言最初的用意,提供一种比HTML更好的方法来描述内容,如:书本、电子邮件、广告、XHTML文件等,主要为人类设计的。它具有不规则的结构,而且数据的粒度也比较大。

2) 以数据为中心 (Data-centric model)

XML用作结构化数据的存储和交换格式。有非常规则的结构,主要是方便机器处理。例如:定货单、飞机时刻表、科学数据、股市报价等。从严格意义上讲可细分为结构化数据和半结构化数据 (semi-structured data) 。

5 关于xml文档解析或编程接口

对于XML文档之上的任何处理,比如转换后装入数据库,或是查询,都会经过一个XML数据解析器。

SAX和DOM是针对XML文档的两种不同的应用程序编程接口API,目前的XML数据库产品均支持这两种解析方式。

DOM的解析过程是将整个XML文档读入,然后构建一个驻留内存具有层次的树结构,应用程序则可用DOM提供的一组接口来操作这个树结构,因而DOM被认为是基于树或基于对象的解析。

SAX是基于事件的解析,SAX采用一种顺序访问快速读写XML数据的方式,解析文档时,会针对不同对象触发一系列事件,并激活相应的事件处理函数(程序员编写),从而完成对XML文档的访问。SAX事件是无状态的,事件仅仅给你发现的文本,但它不会告诉你什么元素包含这文本,你必须自己编写状态管理代码;另外SAX事件不是持久的。

6 从数据库读数据然后写到xml的例子

7 未来的技术发展方向

1)异构数据源的集成。如何从对数据的集成过渡到对系统的集成,从而在远景目标上实现类似于网格计算(grid computing)概念的系统,恐怕是XML数据库工作者的核心任务之一。

2)底层索引结构。B+并不是最好的。

3)并发加锁协议。

4) XML模式规范化是一个值得关注的方向。

8 结束语

无论如何,XML正在迅速地发展和不断地完善中,前景非常光明。例如,XML查询语言(XQL)即是针对XML在数据库方面的应用。在这个领域内,还有很多问题有待我们去研究和解决。

参考文献

[1]Chaudhri A B.XML数据管理-纯XML和支持XML的数据库系统[M].邢春晓, 译.北京:清华大学出版社, 2007.

XML数据压缩索引研究 篇2

关键词:XML;后缀树;后缀数组;自索引;BWT

中图分类号:TP311.13 文献标识码:A 文章编号:1674-7712 (2012) 06-0099-01

一、数据压缩知识

数据压缩技术的发展。

随着计算机技术的飞速发展,数据压缩作为解决海量信息存储和传输的支撑技术受到了人们的极大重视,对数据压缩算法的研究也不仅局限于信息论中有关信源编码的范畴,数字图像信号、语音信号的分析和处理等技术被大量引入到有关的研究领域。

1977年,两位以色列科学家Jacob Ziv和Abraham Lempel发表了名为“A Universal Algorithm for Sequential Data Compression”(顺序数据压缩的通用算法)的论文,提出了一种不同与以往的基于字典的压缩方法——LZ77,他们在1978年又提出了LZ77的改进算法——LZ78,这两个算法吧数据压缩的研究推向了一个全新的阶段。1984年,Terry Weleh发表的论文“A Technique for High Performance Data Compression”(高性能数据压缩技术)描述了对LZ78算法的改进和具体实现技术,成为LZW算法。目前,无损数据压缩领域中流行的数据压缩方法多是基于字典的压缩技术。UNIX系统上的一个实用压缩软件COMPRESS和Windows系统下的压缩软件Winzip和Winrar中所使用的压缩算法都是基于字典压缩技术的。

当数据压缩被用于减少存储空间时,可以减少程序的总执行时间。这是因为存储量的减少将导致磁盘存取次数的减少,虽然数据的压缩/解压缩过程会增加额外的程序指令,但由于程序的执行时间通常少于数据的存储时间,因此中的执行时间将减少。也正因如此,数据压缩技术在计算机技术飞速发展的今天仍然有着很重要的作用。

二、XML压缩索引

(一)XML压缩背景

上文中已经述说了XML的优点,但和其它形式的数据表示相比,XML文档往往很大。因此有些时候,传输速度和存储空间会非常重要。具体来说:

1.XML是一种清晰而易用的文本标记格式,但它的弱点就是当有大量数据需要交换,而程序内部处理部分又非常少时,会导致XML文档非常大,这样过大的空间占用意味着更大的处理代价;

2.由于本文压缩算法多年来一直是大量研究项目的课题,目前已经非常成熟。这种类型的算法都能方便的将XML进行压缩,但将XML文本作为一般文本文件进行压缩,这类算法都不大可能改善处理的速度,而且还会增加了解压后再解析的步骤;

3.我们把XML文档用于索引结构,这样就不能只保持了XML文档的结构而无法对XML进行索引搜索。也就排除了一些简单的XML压缩算法。

(二)XML压缩方法

当压缩文档时,通常首先考虑常用的压缩算法,如:Lempel-Ziv和Huffman,以及在它们上面实现变化的一些常用实用程序。在类Unix平台上通常是gzip;在其它平台上,zip更为常用,比如:PKZIP、Info-ZIP和WinZip。但这些实用程序实际上意在充分地减少XML文件的大小。但是,都没有保持了XML文档的结构,或是无法对XML文档进行索引。这样本文选择使用BWT压缩算法而不是顺序Lempel-Ziv算法。

(三)BWT数据压缩

利用BWT压缩算法,我们先把字符文本进行转换,然后进行压缩,这样就解决了XML文档过大的弊端。而且BWT压缩算法要比顺序LZ算法,解压时速度有所提高。BWT算法的具体介绍我们在第5章进行讲解。

三、系统设计

(一)XML文件整体输出

首先,我们先不考虑XML文件的结构,这样把XML数据文件提交给程序,会按照普通文本文件的方式进行处理。程序先读取整个文件的内容,之后将它们作为一个字符串,进行后缀数组排序,然后BWT转换。但是这样的结果并不如意,有以下两个缺点:

1.程序执行的效率不高,文件内容如过大,导致整体的速度下降;

2.不便于查找,整体进行排序换转后打乱了文件结构,不能成为索引;

(二)以XML文件结构进行输出

由于不能破坏XML文件的结构,只能按照XML现有的标签内容进行。这样我们就引入了XML解析器,它可以分析出XML文件的结果和具体内容。先用解析器解析XML文件,我们就方便的判断出,什么是标签,什么是数据。把每个标签或者数据,单独进行排序转换。

具体过程:

1.XML解析器读取分析XML文件;

2.建立一个空的XML文件,进行添加排序转换后的数据;

3.如分析出标签开始,则提取此标签,对其进行排序转换,把结果插入新的XML文件;并记住此标签的级别,用于插入下级标签时使用;

4.如分析出数据,则对数据进行排序转换,并直接把新数据插入包含它的标签中;

5.如分析出标签结束,则关闭此级标签,结束数据转换;并记录新的标签级别,用于插入平级标签时使用。

参考文献:

[1]Donald Knuth.Art of Computer Programming[M].2002,Volume,3

[2]N.Jesper Larsson.Structures of String Matching and Data Compression[D].Sweden:Lund University,1999

XML数据库存储策略探讨 篇3

底层的存储表达对上层的查询处理和优化有着重要的影响, 如何存储XML文档才是最好的方式已经成为一个重要问题。XML数据库的存储策略主要有几种:利用文件系统的平面文件、成熟的RDBMS (Rdational Database Management System, 关系数据库管理系统) 、对象管理器或OODBMS (Object-Oriented Database Management System, 面向对象数据库管理系) 、采用全新的Native XML数据库管理系统。

1.1 利用平面文件存储 XML文档

将每个XML文档存储成文本文件, 并实现一个查询引擎, 当查询被执行时, XML文件被解析成驻留在内存的一棵树。一般解析的时间影响着查询计算的时间, 这种方法速度慢。为提高这种方法的可用性, 必须建立索引。利用XML元素在文本文件中的偏移量作为id, 建立从标记tag (parent_ offset, tag) 映射到子偏移量child_offset的路径索引以及从标记tag (child_offset, tag) 映射到父偏移量parent_offset的反向路径索引。这两个索引有利于遍历XML文档或在XML文档中进行导航。其他索引建立从标记值 (tagname, value) 或属性值 (attribute nam, attribute_value) 到元素偏移量element_offset的映射, 这些索引有助于计算查询中的选择条件 (谓词) 。查询引擎可以利用这些索引检索与查询相关的XML文件的片段, 极大地减少了解析的时间。

1.2 传统的关系数据库系统方法

XML关系存储的核心是XML文档到RDB的模式映射 (schema mapping) 方法, 包括模型映射和结构映射。为了下面叙述方便, 图1给出了示例所使用的XML文档“Dept.xml”和 DTD文件“Dept.dtd”来说明它们的映射过程。也可用XML文档的树型结构来说明每一种方法是如何存储XML数据的:XML文档可以模型化为有向图, 图中用结点表示XML元素、属性和文本, 利用有向边表示父子关系, 矩形框表示元素结点, 而椭圆形表示属性或文本结点等等。

(1) 利用关系的DTD方法。

这种方法是共享内嵌法, 而且需要相应DTD的支持。用一个独立的表来捕获具有相同标记的元素与其子元素集之间的包含关系。表中的每个元组都被赋予一个ID, 而且该表还包含一个ParentlD列以标识该元组的父亲结点。一个元素在描述它的元素表中只能出现一次, 而且它的父结点内嵌为表的一列以便表示该元素的父亲。

(2) 利用关系的边的方法。

将XML文档的有向图存储在单个Edge表中。按照广度优先的顺序赋予有向图中每个结点一个惟一的id。Edge表中的每个元组对应有向图里的一条边, 并包含该条边所连接的两个结点的id值、目标结点的标记 (tag) 值以及一个顺序号, 该顺序号表示同一结点与其多个子结点对应边的顺序编码。当元素只有一个文本子结点时, 文本内容就内嵌到以该元素结点为目标结点的边所对应的元组里。

(3) 利用关系的属性方法。

“属性”方法是按照Edge的Tag字段对边表进行水平划分, 不同标记 (指Tag字段的值) 的元组存储在各自不同的表里。这种方法以牺牲Edge表的重要的属性Tag为代价而节省了存储空间 (不用存储Tag字段) 。对于属性方法来说, 查询处理器需要DTD来决定哪些表包含子元素, 因为子元素的标记没有存储在表中。需要注意的是, 对于有很多XML文档的一个大集, 属性方法可能导致大量的表。

1.3 Native XML数据库

Native-XML数据库是专门用来存储XML文档的和操作XML数据的数据库, 其数据可以通过XML和XPmh、XSLT、DOM、SAX等相关标准来访问。具体使用什么形式存储数据并不重要, 但底层数据表示形式必须维持完全的XML结构和相关的元数据。基本存储单元是一个XML文档, 存储数据时不需进行XML和数据库的映射转换。

2 存储方法策略的性能及特征分析

平面文件是存储XML文档最简单的机制, 但一般不支持索引查询, 也不容易修改文档。

关系型或面向对象数据库按照一定的粒度来存储XML文档, 这使得对XML文档的访问比较容易也比较灵活, 同时也提高了查询和修改XML文档的效率, 还可以方便地建立和维护各种索引。

在存储XML文档时, 一般有三种不同的簇集策略:第一种是对应于现实世界的同一对象的元素簇集存储, 例将Student的ID和Name存储在一起;第二种是将相同种类的元素一起簇集存储, 例把所有的Student元素存储在一起;第三种是按照和原始XML文本文件一样的顺序 (深度优先) , 将元素簇集存储。

关系-DTD方法积极地使用了策略一和策略二, DTD信息有助于产生更紧凑的数据表示, 但缺点是不能处理没有DTD的XML文档。利用关系数据库系统还有其他优势:可移植性和可扩展性。另外, 一个重要的因素是当前Web上的数据都驻留在关系数据库系统中, 因此使用关系DBMS来存储XML文档使得查询只有一个系统的数据类型和一种查询语言成为可能。边方法和属性方法都采用了簇集策略二。当查询须对相关的几个子元素应用谓词 (条件) 时, 或是在构造结果文档时, 簇集策略二都导致了非常糟糕的性能。XML元素之间的父子关系是由SQL的连接 (JOIN) 运算捕获的。对复杂的路径表达式, 这种策略产生了十几个连接运算的复杂的SQL查询, 使得关系数据库的查询优化器很难产生正确的查询执行。连接运算的数目也表明了这两种方法对路径表达式复杂性的敏感度。属性方法比边方法的数据表示更加紧凑。另一方面, 为了重构一个元素, 属性方法必须要DTD的信息。而且其重构的代价比较高, 原因就是需要更多的SQL查询来获取所有的子元素。

对象方法使用簇集策略三。由于在原始的XML文档中, 对应于一个现实世界对象的所有元素常被簇集在一起, 所以策略三共享了策略一的好处。当重构查询结果时, 策略三提供了非常好的性能;而与 DTD方法比较起来, 对象方法中相似的对象 (具有相同标记名的元素) 没有被簇集在一起的事实显著增加了查询处理的开销。另外, 在面向对象数据库基础上实现 XML数据的存储和查询, 而面向对象数据库在查询优化上存在的问题制约了XML数据的查询分解和优化。

3 结语

XML数据库的研究已从传统的RDBMS转向NX-DBMS, 这是XML数据库研究的发展趋势。由此也带来了许多挑战性的问题, 如XML的节点编码、x-代数、查询优化、实现x-代数的各种高效算法、支持查询优化的有效索引、XML的数据更新。这些问题给数据库研究人员提供了广阔的平台和机遇。

参考文献

[1]栗松涛编著, XML程序设计[M].北京:清华大学出版社, 2001.

[2] (美) Mark Graves著.尹志军, 等译.XMI数据库设计[M].北京:机械工业出版社, 2002.

XML数据库 篇4

XML是Extensible Markup Language的简写,一种扩展性标识语言,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言

可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言, XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

格式特性

XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。

XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。

XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows,Mac OS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。

为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。

简单语法

SGML常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XML的DTD。SGML的问题就在于,它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题:

1 某些起始标签不允许出现结束标签,例如HTML中标签。包含了结束标签就会出现错误。

2 某些起始标签可以选择性出现结束标签或者隐含了结束标签

3 某些起始标签要求必须出现结束标签,例如HTML中标签。

4 标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的,例如,This is a sample string是正确的。

5 某些特性要求必须包含值,例如中的src特性。

6 某些特性不要求一定有值,例如中的nowrap特性。

7 定义特性的两边有没有加上双引号都是可以的,所以和都是允许的。

这些问题使建立一个SGML语言的解析器变成了一项艰巨的任务。判断何时应用以上规则的困难导致了SGML语言的定义一直停滞不前。以这些问题作为出发点,XML逐渐步入我们的视野。

XML去掉了之前令许多开发人员头疼的SGML的随意语法。在XML中,采用了如下的语法:

1 任何的起始标签都必须有一个结束标签。

2 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如。XML解析器会将其翻译成。

3 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如this is a samplestring。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。

4 所有的特性都必须有值。

5 所有的特性都必须在值的周围加上双引号。

这些规则使得开发一个XML解析器要简便得多,而且也除去了解析SGML中花在判断何时何地应用那些奇怪语法规则上的工作。仅仅在XML出现后的前六年就衍生出多种不同的语言,包括MathML、SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同时也将HTML改进为XHTML,

因为XML是W3C制定的,XML的标准化工作由W3C的XML工作组负责,该小组成员由来自各个地方和行业的专家组成,他们通过email交流对XML标准的意见,并提出自己的看法 (www.w3.org/TR/WD-xml)。因为XML 是个公共格式, (它不专属于任何一家公司),你不必担心XML技术会成为少数公司的盈利工具,XML不是一个依附于特定浏览器的语言。

打开方法:用记事本,editplus等文本工具软件都可以打开,多用户保存配置文件或网页英语,手机阅读网站多是基于xml开发的,多用户网页制作相关的数据存储等

现在教你打开xml文件的方法和软件。

呵,其实最简单的就是用EXCEL表格打开了。。

也可以用Netscape 6来打开XML文档,并且也可以用右键选择“察看源文件”

当你用Netscape 6打开XML文档后,

浏览器将用带颜色的代码显示根元素和子元素。

如何在 Excel 中打开文件

在 Excel 中打开 XML 文件时,系统将提示您选择下列方法之一来导入 XML 数据:作为 XML 列表

作为只读工作簿

使用“XML 源”任务窗格

作为 XML 列表打开文件

当打开 XML 源时,Excel 会查找 XML 样式表 (XSL) 的标记。XSL 说明数据的显示方式。如果存在相应的标记,Excel 将会提示您选择是否应用样式表。如果选择应用 XSL,则 XSL 将指示数据的显示方式;在这种情况下,本文中这一部分的其余信息将不再适用。

如果没有 XSL 标记,您将收到以下消息:

指定的 XML 源没有引用架构。Excel 将基于 XML 源数据创建架构。

然后,Excel 将导入 XML 源中的数据。如果 XML 数据在一个元素内包含重复的字段,Excel 会将数据分布到多个行上。每一行都包含一个唯一的数据集。这可能会导致 XML 中的小数据集在 Excel 中显示为很多行。

作为只读工作簿打开文件

如果选择作为只读工作簿打开 XML 源文档,则元素的第一个标记将被用作标题并被放入单元格 A1 中。其余的标记依照字母顺序排序,并放入第二行。当作为只读工作簿打开上文中的天气报告示例时,其中的数据将被排列到下面的列标题列表中: /area/city

/area/country

/area/region

/area/state

/date

/measurements/h-index

/measurements/humidity

/measurements/skies

/measurements/temperature

/measurements/uv-index

/measurements isibility

/measurements/wind/direction

/measurements/wind/windspeed

/time

如果有一个数据集,则每列的数据都放在电子表格的第三行上。如果 XML 数据在一个元素内包含重复的字段,Excel 会将数据分布到多个行上。每一行都包含一个唯一的数据集。这可能会导致 XML 中的小数据集在 Excel 中显示为很多行。

使用“XML 源”任务窗格

XML 数据文件的架构显示在“XML 源”任务窗格中。然后,可以将架构元素拖到工作表中,以将这些元素映射到工作表。

XML数据库 篇5

关键词:可扩展标识语言、关系型数据库、数据交换

一、引言

异构数据库分布在网络的不同位置,其异构性体现在DBMS(Database Management system)运行的系统环境和使用的数据模型的不同,以及用户各自独立对数据进行建模而引起的数据结构和数据语义表达的差异。系统异构给数据库间跨网络的互操作带来困难,模型异构使得用户无法使用本地的数据库语言访问异构数据库中的数据,结构异构和语义异构则使应用系统难以理解异构数据库中的数据并对其进行分析和处理。因此,这些异构数据库就象一个个“信息孤島”,彼此间的共享存在困难。

数据交换是实现异构数据库共享的途径之一。解决异构数据库的共享主要有远程访问、数据库集成、数据交换等方式,其中数据交换是用源数据库的使双方的数据互为补充,达到异构数据库共享的目的。

二、研究内容

XML是一种数据格式描述的元语言标准,具有系统独立性、可扩展性、自描述性、遵循严格的语法规范以及支持多语种等特点,自产生之后就迅速被作为中间数据格式标准应用到数据交换领域。作为数据交换的中介,XML不仅能够提供对数据的存储,还包含对数据结构的描述回。XML的系统独立性使得XML数据能够在不同的系统中使用各种编程语言解析和处理,屏蔽了异构数据库间系统环境的差异。因此,基于XML的数据交换方案已经被广泛用于解决网络环境下异构数据库的共享。

本文主要研究如何实现各个关系型数据库之间的信息交换。XML是一种新型的数据交换标准,通过XML和JDBC,Hibernate,J2EE等技术的应用可以实现不同数据库间信息的交换。为完成数据库到XML和XML到数据库之间数据的交换与传递,系统解决了XML文档结构和数据库结构之间的映射,研究XMLSchema与关系模式之间的映射,这一步采用的是Xmlbeans与Java反射机制。还研究了基于XML的数据交换系统的设计、运行机制等。

三、XML技术

XML为ExtensibleMarkupLanguage的简称,即可扩展标记语言。XML的出现就是为了要应用于各个不同的层面,可根据应用领域的不同,而以不同的方式来描述文件。简单地说,对XML是以一种简单、标准、并可扩充的方式,将各种信息如文本、表格,甚至图形等以原始数据的方式储存。在储存的过程中,加入一些可供识别的标记,而凭借这些可供识别的标记,在网络上的服务器可将信息内容做进一步的处理,从而得到所需的信息。

四、XML数据交换方案设计

(一)系统设计

基于XML的数据交换方案使用较为广泛,方案是实习依赖与XML模式与关系模式,在进行关系模式与XML模式转换时,需要对数据进行操作和处理以消除异构性,因此灵活性较差。针对这一问题,利用XMLSchema对数据的结构、类型和约束的强大表达能力,由源方和目标方分别对各自的关系模式进行描述,构造源XML模式和目标XML模式,然后在源XML模式和目标XML模式间建立匹配规则来实现异构数据库的交换。数据交换过程中,源方将关系数据转换为源XML模式的数据,然后由按照匹配规则将源XML数据映射为符合目标XML模式的数据,消除数据异构性,交付给目标方,目标方再将目标XML数据转换为关系数据入库。

异构数据库交换方案包括三个部分,源数据库方、数据转换方和目标数据库方。源数据库方负责提供源XML模式以及将关系数据封装为源XML数据交付给数据转换方;目标数据库方负责提供目标XML模式,按该模式接收XML数据并转换为关系数据装载入库;数据转换方负责将源XML数据映射为目标XML数据并交付到目标数据库方。数据转换方根据源XML模式和目标XML模式与目标数据库方交互生成,并保存在数据转换方,用于数据映射。由于数据交换是双向的,因此这里所说的源方和目标方是相对的,可以根据实际的数据交换方向来确定。所以,源方是交换中提供数据的一方,目标方是接收数据的一方,数据转换方则是提供交换服务功能的一方。

(二)系统实现研究

1、数据提取模块的实现

该模块完成从源数据库中提取数据的功能。本模块中我们用到了Hibernate框架,通过Hibernate建立关系——对象映射,方便数据的存取。

2、模式转换模块的实现

该模块是本系统的核心模块。该模块完成源数据库模式到目标模式的转换。消除数据库表结构,数据类型的异构性,达到数据库间进行数据交换的目的。

模式匹配的具体实现分两个步骤:

1)XML模式到JAVA对象的映射。

这一步是通过Apache的开源项目XMLBEANS来实现的。利用XMLBEANS,我们能很方便的完成XMLSCHEMA到JAVA对象的映射。

2)通过反射机制实现源方与目标方的模式匹配。

反射机制是java中十分重要的特性,利用它可以在运行时进行必要的处理。通过反射,我们可以得到源模式下的javabean对象的字段与目标模式下的javabean对象的字段,通过字段的对比以及预先定义的规则可以完成简单的映射,消除数据的差异。

3、生成目的XML数据文件及其入库

本模块通过数据转换模块的对象把数据提取模块的数据转换为目标模式下的javabean对象。然后再通过XML文档处理对象把javabean对象写入目标XML文档。最后,将目标XML文件导入目标数据库。

(三)模式转换

系统核心模块-模式转换的流程。这个过程是完全封装的,实现了平台和网络的透明性、数据模型的转换、模式转换和分布环境的支持的透明性。

第一步Hibernate把源数据库中的表关系映射到具体的Java对象,通过操作Java对象来处理关系数据库;第二步通过Xmlbeans处理目标XMLSchema的结构、元素等信息,建立目标XML模式到Java对象的映射以及目标XML文件处理对象;第三步通过反射机制,分析Hibernate映射对象与目标XML模式的Java映射对象,把Hibernate映射对象的数据信息转入目标XML模式的Java映射对象中,这样就能在第四步使用目标XML文件处理对象生成基于目标模式的XML文件;最后目标XML文件处理对象完成XML文件处理,得到目标数据库映射对象,再通过Hibernate存入目标数据库。

由于系统在不同的数据库间进行数据交换,可能由于数据库地址变化,或者数据库名称改变,所以系统提供了数据库配置功能,完成数据库配置,基本实现数据库位置的透明性。

五、总结

目前,对异构数据库的研究还处在发展阶段,它的研究不仅仅涉及到不同的数据库系统本身,还要考虑到许多复杂的因素:平台和网络的透明性、数据模型的转换、模式转换和分布环境的支持、位置的透明性等。

XML数据库的安全查询处理 篇6

XML已广泛应用于互联网上的数据共享交换,这也使XML数据安全成为重要关注问题。在XML安全的加密、数字签名和访问控制三方面中,访问控制机制是其中一个重要环节。访问控制有两个主要的方法:自主访问控制和强制访问控制。在自主访问控制下,用户授予“读”、“修改”等权限给其它用户,或将权限从其它用户收回;强制访问控制使用系统控制策略,禁止任何用户更改。

不像关系数据的检索和Web发布,由于本源XML数据是半结构化的,查询XML数据库本质上更为复杂。尽管研究人员作了大量努力,但仍遗留一个问题,即当实施访问控制时如何评估XML查询效率。据此,提出一个安全的XML查询方案并将其实现,它使用缓存改进查询的执行效率。传统的缓存策略仅存储查询结果,但该方案除缓存查询结果之外,还缓存安全信息。当执行一个查询Q,首先查找缓存并应用系统的访问控制规则,检查是否存在能解答Q的缓存查询结果。如果缓存命中,一个复合查询C被计算且被应用到缓存的查询结果,给出Q的结果;否则,Q被重写为一个安全的查询Q0且在源XML文档上被执行。

1 相关工作

关于XML数据库的安全性,国内外已进行了许多研究,提出了大量的XML访问控制模型。如文献[1]提出了一个细粒度的访问控制模型,该模型支持不同的访问控制粒度,也支持来自于祖先节点、段的权限传播。文献[2]基于建立的一个XML对象的分解与合成规则,提出了一个支持多实例的多级安全XML数据库模型。文献[3]分析了XML文档安全特性,提出了一种基于证书的XML访问控制模型。文献[4]提出了一种结合静态模型和动态模型的混合模型,利用客户端软硬件设施进行XML文档的动态访问控制管理。文献[5]对BLP(Bell2La Padula)信息安全模型扩充,提出了DBLP(Dynamic Bell2La Padula)模型。DBLP模型考虑了客体安全级别的动态变化,并给出了支持该变化的算法描述。然而,根据这些模型,当它访问控制与XML每一节点关联,处理超大XML文档时效率却很低。

研究者已开发许多XML访问控制技术。在文献[6]中开发了一个基于视图的XML安全模型,在导出安全视图的过程中实施访问规格,安全视图基于用户视图DTD和通过XPath查询定义的函数。在文献[7]中提出一个缓存XPath视图的新技术,并设计算法检查一个视图是否能回答一个新的查询,当能回答时,一个复合查询将被计算和应用到回答新查询的视图结果。文献[8]通过基于不确定的自动机的XML查询重写技术,实现了支持精细粒度的XML文档存取控制策略。

2 系统体系结构

提出的系统设计方案使用多级访问控制模型。安全级别指定为非负整数。访问控制规则简单但健壮,要求查询的安全级别应不小于允许访问数据的安全级别。访问控制规格定义在文档级。在XML文档中,对每个元素增加一个属性Security Level,指示该元素的安全级别。在XML树中,安全级别仅允许从根到叶单调递增,这意味着没有元素比其子孙节点有更高的安全级别。系统要求,每一节点的安全级别应注释给出,尽管这将需要额外的存储空间和增加额外的计算量,如果能够改进安全查询效率,这也很值得。

选用XPath查询语言遍历XML树及检索数据,并重新组织XPath查询,由提出的以下语法定义给出:

其中e为元素名,q谓词可为等式、比较式或者路径。

图1所示为提出的系统体系结构。首先,一个新的用户查询Q提交到系统,由查询解析器(query shredder)对其解析;然后,查找缓存(cache)并检查是否存在能够回答查询Q的视图V;如果缓存命中,即查找到视图V,将Q和V组合后形成一个复合查询C,最后由查询引擎(query engine)根据V的查询结果,计算C的查询结果;如果缓存不命中,Q重写为一个安全的查询Q0。最后Q0发送给查询引擎(query engine)并在源XML文档上执行查询。

3 相关方法

3.1 查询重写

对安全级别为n的用户,请求一个非安全的XPath查询Q,通过对Q中每一节点增加一谓词[@Security Level<=n]将它重写为一个安全的查询。然而,既然在访问控制模型中,安全级别沿着路径单调增加,可以仅对出现在XPath查询中最后轴节点之后的每个节点增加上述谓词。

在系统中,如果使用缓存的视图不能回答源用户查询,它将被按上述要求重写并发送到查询引擎。如果缓存视图能回答查询,那么一个复合查询被重写且在缓存的查询结果中执行评定策略。

3.2 缓存的数据结构

系统中使用缓存存储具体的视图及它们的安全信息。缓存使用RDBMS进行维护,选择采用文献[7]中的缓存基表,并增设若干个字段表示查询安全级别、结果信息,以及用于缓存替换的辅助查询信息。系统的缓存由以下两个表组成:

(1)View(view ID,prefix,predicate,all-predicates,comparisontags,query-security-level,result-flag,usage-count,timestamp)

(2)XMLData(view ID,data)

列view ID,prefix,predicate,allpredicates,comparison-tags的作用与文献[7]所述相同。query-security-level存储一整数,它是查询者的安全级别;result-flag取值为TRUE或FALSE,表示与视图相关的非空结果是否存在;usage-count记录这个视图用来回答新查询的次数;timestamp表示视图最后使用的时间。

3.3 缓存查找

为对查询处理,需要在缓存中查找一个视图,它不仅回答查询,而且应用访问控制规则。注意,缓存中或许存在许多视图均满足这两个条件。为了选择出在安全级别S上回答查询Q的最优缓存视图,设计出下列算法:

Prefix(Q,k)为Q中除去第k个轴心节点及其后所有轴心节点的谓词余下的查询;Con Preds(Q,k)为能映射到Q的第k个轴心节点的谓词的所有常态树的连接操作。

在系统中这意味着,如果用户安全级S1≥用户安全级S2,则在S1上执行相同查询的结果将包含所有那些在S2上执行的查询结果。从而,谓词View.query-security-level≥S将那些不回答Q的视图过滤,即使按其语义能回答的也被过滤掉。返回的视图也存储起来,因为回答Q的最优视图是query-security-level大于且最接近Q的级别的视图。

3.4 缓存预先填充

系统要求,不需为查询采取任何预热措施,即系统运行接受查询请求前,不需对缓存作任何的填充。伴随系统的运行,每遇到新的用户查询请求,在通过查询引擎查询源文档,得到查询结果的同时,系统将新处理的查询结果自动插入到缓存中存储起来,直至将缓存的存储空间填满为止。

3.5 缓存更新

插入发生在查询处理时,且缓存仍有空间。查询结果将插入表XMLData中,系统将给唯一键列View ID自动分配值,这个键值也返回且在表View中使用。表View中的prefix,predicate,all-predicates和comparison-tags等列根据文献[7]中计算得出;query-security-level将用查询者的安全级别值填充;如果查询结果为非空,result-flag为TRUE,否则为FALSE;usage-count设置为1;最后,timestamp设置为当前系统时间。

事实上,缓存的存储容量有限。当存储满时,必须丢弃记录腾出空间来缓存新的查询。系统支持三种缓存替换策略:

(1)LFU列usage-count值最小的视图,将从缓存中丢弃。如果存在相同值,系统将从相同值中随机地选择一个视图丢掉。

(2)LRU系统将从缓存视图中选择近期最少使用的丢弃。此时辅助列timestamp可指示出哪个视图的时间戳值最旧。

(3)LSL最低安全级别的视图将被选择出丢弃。不像LFU和LRU、LSL很特别。直观地看,在查询安全级高的视图可以潜在地回答许多低安全级别的查询,只要语义上该视图能够回答这些低级别的查询。除了插入和替换,在选择视图回答新查询时发生缓存更新。这包括将usage-count值增1并分配新的系统时间值给timestamp列。

4 实验及结果分析

系统运行在linux上用Java实现,硬件为2.80GHz Intel Pentium IV CPU和512 MB内存的PC机。所有XML文档用Xmark[9]产生,XPath查询是基于文档的DTD产生。系统缓存由Apache Derby DB维护管理,用Galax Xquery[10]程序处理XPath查询。

(1)缓存大小对命中率的影响

如图2所示,当存在的缓存数目相对少时,LSL给出最优缓存命中率,而LFU最差。当缓存增加时,缓存命中率也增加,但是增加幅度越来越低。当缓存相当大时,三个替换策略有相同的命中率。进一步增加缓存变得无关紧要。

LSL比其它二者有更好的命中率,原因在于一般情况下,列query-security-level值较高的视图比那些query-securitylevel值较低的视图倾向为较好一些的选择。缓存中好的视图越多,命中率越高。既然LSL能选择那些query-security-level较高值的视图保留在缓存中,它将增加缓存命中的机会。

(2)查询数目对缓存命中率的影响

如图3所示,缓存命中率随着处理的查询数目增加而增加。这是由于重复的查询评估和缓存更新具有统计性地选择那些“坏的”视图丢弃,留下更加“好的”视图在缓存中。当“好的”视图数目变得越来越大,缓存命中率增加。在这三个替换策略上,LSL给出最优缓存命中率,而LFU最低。

(3)XML文件大小对平均查询处理时间的影响

为作比较,在相同条件下对相同查询文件也作不使用缓存的查询处理。图4所示很明显看出,当XML文件增大时,不使用缓存比那些使用缓存的增长幅度更快。当XML文件变得更大时,不用缓存与使用缓存之间的差距更大。当XML文件大小大约为25M和30M时,使用缓存的时间节省比率各自大约为15%和25%。

注意,当XML文件较小,不用缓存的平均查询处理时间更短。这是因为,使用缓存处理查询带来缓存查找和缓存更新等额外负担。当XML文件较小时,不用缓存处理,查询很快,足够用于克服使用缓存产生的负担,因此它花费更短的时间。

5 结语

提出一个安全的XML查询方案,它使用缓存存储查询的结果和安全信息;缓存的内容能有效地查找并重复地用来回答新的查询;并讨论了影响缓存命中率和平均查询处理时间的因素。实验结果表明,新提出的LSL是当前最优的缓存替换策略,并且在安全查询效率评估上,缓存能够显著地改进系统性能。

参考文献

[1]李斓,何永忠,冯登国.面向XML文档的细粒度强制访问控制模型[J].软件学报,2004,15(10):528-1537.

[2]冯学斌,洪帆.一个XML数据库强制访问控制模型[J].计算机科学,2007,34(10):155-158.

[3]陈传波,彭超逸.一种基于证书的XML访问控制模型[J].计算机工程与科学,2008,30(1):35-37.

[4]孙明,路长胜.面向XML文档的客户端混合访问控制模型[J].计算机工程,2007,33(11):144-146..

[5]于瑞萍,刘晓霞,谢倩茹,等.XML文档访问控制策略研究[J].计算机应用与软件,2008,25(3):73-75.

[6]Fan W,Chan C,Garofalakis M.Secure XML quering with security views[C]//Proceedings of ACM SIGMOD.2004.

[7]Mandhani B,Suciu D.Query caching and view selection for XML data-bases[C]//Proceedings of the31th VLDB Conference.2005.

[8]刘国海,虞慧群,杜丽萍.一种基于NFA查询重写的XML过滤技术[J].华东理工大学学报:自然科学版,2006,32(8):970-975.

[9]XMark-An XML Benchmark Project[EB/OL].2008-03.http://mon-etdb.cwi.nl/xml/downloads.html.

XML数据库 篇7

关键词:XML,关系数据库,数据交换

一.XML的理论

1.XML简介

XML (extensible markup language, 可扩展的标记语言) 是由World Wide Web Consortium (W3C) 的XML工作组定义地。这个工作组是这样描述该语言的[1]:"XML是SGML (standard generalized markup language, 标准通用标记语言) 的子集, 其目标是允许普通的SGML在Web上以目前HTML (hypertext markup language) 的方式被服务、接受和处理。XML被设计成易于实现, 且可在SGML和HTML之间互相操作。"

XML是一套定义语义标记的规则, 这些标记将文档分成许多部件并对这些部件加以标识。它不像HTML或格式化程序。这些语言定义了一套固定的标记, 用来描述一定数目的元素。XML是一种元标记语言, 用户可以定义自己需要的标记。这些标记必须根据某些通用的原理来创建, XML标记描述的是文档内容的结构和含义, 而不是描述页面元素的格式化。可用样式单为文档增加格式化信息。文档本身只说明文档包括什么标记, 而不是说明文档看起来是什么样的[2]。

XML是非专有并易于阅读和编写的。这使得它成为在不同的应用间交换数据的理想格式。XML不是第一种公共文档格式, 但它与已有的文档交换格式相比具有很多优点。XML是源文档的最佳格式, 因为它允许用最佳的输出格式, 例如HTML、PDF (portable document format) 和PostScript格式, 并格式化应用程序, 例如电子数据交换 (electronic data interchange, EDI) 。

2.XML与数据库的交互[3]

从技术角度讲, XML和关系数据同属于数据管理的手段。狭义的XML仅仅指一种语言和采用该语言所描述的XML文档, 广义的XML包括XML语言、XML文档以及所有与XML相关的工具和技术, 例如, XML解析器及解析技术, XML转换技术 (XSL、XSML) 等。

XML数据源有多种多样, 根据具体的应用, 大概可分为下面三种:

第一种是XML纯文本文档;

第二种是关系数据库;

第三种来源于其他各种应用数据, 如邮件、目录清单、商务报告等。

第一种来源是最基本的也是最简单的, 将数据存储于文件中, 其最大的优点在于可以直接方便地读取, 或者加以样式信息在浏览器中显示, 或者通过DOM接口编程同其他应用相连, 第二种数据来源是对第一种来源的扩展, 目的是便于开发各种动态应用, 其优点则在于通过数据库系统对数据进行管理, 然后在利用服务器端应用 (如ASP、JSP、Servlet) 等进行动态存取, 这种方式最适合于当前最为流行的基于三层结构的应用开发;第三种数据由于来源广泛, 因此需要具体情况具体对待。

二.关系数据库理论

1.关系数据库简介

关系数据库是目前各类数据库中最重要、最流行的数据库, 它应用数学方法来处理数据库数据, 是目前使用最广泛的数据库系统。关系数据库是建立在集合代数基础上, 应用数学方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。换句话说, 关系数据库是建立在关系模型基础上的数据库。关系模型是由IBM公司的埃德加·科德于1970年首先提出的。现如今虽然对此模型有一些批评意见, 但它还是数据存储的传统标准。

2.关系数据库的局限性

只要有程序, 就会有数据。IT行业最早具有商业价值之一的就是数据管理。自动的数据管理意味着业务能够扩展、具有竞争力, 没有它就不可能。所以毫无疑问机智的商业技术员很早把目光聚集在数据管理市场。在新的数据库产生之前的20年, E.F Codd博士提出的关系型理论找到了出路, 开发出商业的关系型数据库产品。在80年中期, 在IT领域有一个宗教式的信仰, 认为数据的所有理论问题都已经解决, 实践的问题也会随之解决。然而, 很明显, 事实并不是这样。

今天, 数据库所管理的数据发生了根本的变化, 它的基本标志就是从过去仅仅管理由键盘输入的数字、字符等简单数据, 到今天必须管理由各种设备、装置、计算所产生的多种类型的复杂数据。例如, 图形、图像、视频、音频、电子图书与档案、Web网页等等。这一变化给数据库技术带来了很多的挑战, 需要我们研究许多新的问题。关系数据库已经无法胜任这种变化了的应用需求, 可以说它使数据库技术的发展面临一个新的分水岭, 我们必须寻求新的解决办法。

(1) 数据库的一个基本问题就是要找到一个恰当的数据模型来表达它所管理的对象。关系数据库的模型可以简化为普通的表格, 它对于表达键盘输入的数据十分到位。但是, 如果我们用表格表达一本书, 而书里面有文字、图形、图像、数学公式, 还有很多特定领域特殊的内容, 还要分成章节, 这对关系数据库模型而言显然是件十分困难的事情, 它处理不了这么复杂的数据内容与它们之间的结构。

(2) 数据模型的变化意味着查询语言的变化。

(3) 数据的变化, 意味着后端对查询数据的处理要发生变化。过去的对象很简单, 都是一行一行的纪录。现在一个对象除了一部电影、一幅图像、一个电视节目这些对象本身以外, 还有很多关于它们的描述性的东西, 即对象的元数据 (对这些内容特征的描述) 。比如一张照片, 它的颜色、纹理等等, 这使得数据本身呈现一种多维的趋势, 数据库系统必须考虑这样的要求。

(4) 在存储方面, 过去数据存储不太考虑10年、20年这样长期的存储。一般的数据用了一年两年之后, 我们就采取备份的手段, 把它倒到磁带上, 变成离线的, 再放到架子上, 编目进行管理。现在则不同, 一本书, 一部档案, 可能10年、20年以后还要用, 用户只要有需要, 都希望能把它在线地调出来使用。从存储容量的要求来看, 现在的要求跟过去键盘输入时代的要求有天壤之别。如何在计算机里长期保存这样超大规模的数据, 并且实现随时可用的在线访问, 这就需要一个合理的存储系统, 这显然不是仅仅增加磁盘阵列就能解决的问题。

(5) 是对数据的使用。传统的关系数据库保存的都是键盘输入的数据, 对它的使用也很简单, 就是查一条或者一组记录, 然后在终端显示出来。今天, 当我们把一张照片调出来, 看照片要用特定的浏览器。我们把一本书调出来, 需要各种索引服务。存储的对象和服务都产生了很大的变化, 它会反过头来对数据库的支撑技术提出了很多的新要求。比如视频音频的索引技术, 都会与现在关系数据库所处理的常规数据索引有很大的不同。

三.数据交换的现有解决方案

1.利用数据库厂商提供的工具

数据库厂商为了帮助异构数据库进行转换数据, 提供了一些转换工具。但这些工具往往只是提供自己的DBMS访问异构数据库的机制, 通用性较差。常用的有:

(1) SQL Server的DTS工具

DTS工具是Microsoft公司开发的SQL Server数据转换工具。它允许用户在多中数据源之间导入和导出数据或在使用SQL Server的多个计算机之间转移数据库和数据库对象。

(2) Oracle导入/导出工具

Oracle导入/导出 (Export/Import) 主要是用来对Oracle数据库进行逻辑备份, 利用Export导出数据库的转储二进制文件作为数据库Import输入从而达到移植的目的。

2.利用第三方数据库

在网络环境下和不同的操作系统间进行数据转换时可以借助如Access等较小的桌面数据库系统。先对要转出的数据库生成脚本, 生成符合规范的SQL语句, 再在新环境的数据库系统中执行脚本。

3.通用数据库转换工具

通用数据转换工具可以实现不同数据库系统之间的数据定义模式转换和数据转换。此类工具利用ODBC、JDBC等数据访问技术访问各种不同的数据库, 进行类型转换, 然后使用SQL作为标准的数据访问语言进行数据定义、模式转换和数据转换。四.小结

随着各行各业的不断发展, 计算机网络化趋势的加速和网络性能的提高, 使得在关系数据库系统之间进行数据交换的需求越来越迫切, 同时对异构平台的数据交换的要求越来越高。同时随着XML技术的迅猛发展, 使其成为一种被广泛采用的数据表示格式。XML是可扩展的, 与平台无关的, 并且支持国际化。正是因为有了这些强大的功能, 出现了一些与XML相关的数据库管理技术, 数据库对XML的支持越来越好。因此如何利用XML来实现关系数据库系统间的数据交互, 具有现实意义和应用价值。

参考文献

[1].World Wide Web Consortium.Extensible Markup Language (XML) 1.0 (Third Edition) .W3C Recommendation, 4 February 2004.http://www.w3.org/TR/REC-xml/

[2].万常选.XML数据库技术[M].北京:清华大学出版社, 2005.

[3].邵敏, 李力鸿, 郑震川等, XML编程实践[M].北京清华大学出版社, 2005

[4].张正明, 伶俐鹃.异构数据库系统集成的研究.计算机科学[J], 2004, 31 (10增刊) :372~374

[5].张正明, 伶俐鹃.异构数据库集成的研究与实现.航空计算技术[J], 2004, 2:33~36

XML数据库 篇8

基于WEB的信息管理系统的发展, 使得网络中的分布式异构数据库的数据集成和互访成为研究热点之一。传统的关系数据库的安全性、完整性、多用户并发访问、数据恢复等突出优点成为绝大多数用户构建数据库的首选模式, 然而, 在实际的企业应用中, 由于各种历史和客观情况, 不同的企业构建应用平台所采取的数据库系统存储格式不一定相同, 这样导致大量的异构数据库的存在。当企业应用平台进行数据交换和集成时就会出现各种问题。

XML语言, 作为SGML语言的子集之一, 由于其定义严格、独立性、结构清晰、兼容性、灵活易懂等特点, 成为描述WEB应用中各种复杂数据的最适合的格式之一, 作为数据交换标准, 在各种应用平台, 尤其是基于WEB平台的EDI中发挥着重要的作用。因此, 研究传统数据库和XML数据库的结合, 实现两个数据库中的数据交换, 显得尤为迫切和重要。

2 XML文档向关系数据库的转换

XML文档转换为关系数据库, 一般采取模型和结构为中心的转化方法[1,2,3]。结构转化方法根据XML文档中固有的模式信息生成对应的关系模式, 然后对XML文档进行解析分解并存储于对应的关系 (即表) 中。例如利用Schema思想直接映射为关系模式, 采用混合内联法根据XML文档的语义信息, 实现从DTD映射为关系模式[4,5]。模型转化方法是指将所有的XML数据根据XML文档结构的方式存储于固定关系模式的数据库中, 然后提取对应的元素, 实现到关系模式的转化。例如利用四个固定格式的表来存储XML文档, 利用群模式的XML树方法来存储XML文档[6,7], 都是标识和提取XML文档中的元素, 然后以关系记录 (表) 的方式进行存储。

目前研究的大多数XML文档向关系数据库的转化都是基于Edge的映射算法[8], 其主要思路是把XML文档扫描成一棵带标记的树, 根据节点、边把树中所有的边都存储在关系表中。本着减少关系表连接数目, 提高查询效率的原则, 对Edge算法进行了改进。根据Edge的映射算法, 将XML文档进行抽象, 转化成一棵有向、有序的带标记的树。然后做如下定义:

定义1对任意节点m, 按照有向图的原则, 统计关于该节点m的度、入度、出度, 则节点m的度的总数应为以m为开始节点的出度和以m为终止节点的入度和之和。

定义2如果节点m的入度为0, 并且通过节点m可以浏览树中的所有节点, 则节点m必为根节点;如果节点m的入度为1, 并且节点m的出度为非0, 则节点m为元素节点;如果节点m的入度为1, 并且节点m的出度为0, 则节点m为值节点。

定义3关系数据表rel, 包含编号、父节点编号、节点名称三个字段。

算法描述:

(1) 对XML文档采用SAX的方式进行文档解析, 这种解析方法提供顺序访问机制, 把XML文档的元素作为对象处理, 占用内存少, 检测速度快。

(2) 根据Edge算法, 对要映射的XML文档进行深度优先扫描, 根据定义1的方式, 记录XML文档中任意两个节点之间的结构关系, 并对结构图中出现次数大于1的所有元素加上指定的特殊符号标记, 用于对元素进行检测重复元素的时候进行区分。根据定义2, 当一个任意节点第一次被遍历时, 加上已经访问标记, 当该节点下面的所有节点遍历完成时, 取消该节点的已经访问标记, 如果检测结束, 该节点仍然有已经访问标志, 则说明该元素必然有特殊符号标记, 存在重复访问的问题。

(3) 对于步骤2的检测结果分两种情况处理, 把所有带特殊符号标记的节点映射为单独的关系数据表;对于其它剩余的普通节点, 如果节点m为初始节点, 则关于该节点所能访问的下属节点作为属性, 存入一个关系数据表中。

(4) 根据定义3建立的节点之间的关系数据表, 保存处理过的XML文档中节点之间的关系, 然后重构XML文档数据库。

最后, 根据上述算法及处理结果, 采用Microsoft Visual Studio2003和C#语言在Windows内部组件之一的.NET Framework代码库中进行XML文档到SQL Server 2003关系数据库的转化。具体转换实例由于篇幅原因省略, 转换结果发现, 该算法生成的关系数据表比较简单, 表间关系相对比较清晰, 表内元素独立性相对较好。

3 关系数据库向XML文档的转换

关系数据库向XML文档的转换一般采用XML文档向关系数据库转化的逆过程的原理或者采用JDBC API的方式完成。逆过程一般流程是, 根据XML文档的要求对将要转化成的XML文档进行描述, 包括关系数据库中的每个表, 表中的字段名称, 表间的关系等都定义成元素或者子元素的形式, 然后设置XML文档格式中根元素的开始标记和结束标记, 接着从开始标记起对关系数据库中的表的所有记录以及表间关系进行扫描。这种逆向转化方式的缺点在于将XML文档转化成关系数据库后, 再将关系数据库转化为新的XML文档, 会导致新旧两个XML文档的数据不会完全相同, 这与映射算法存在关系, 从XML文档到关系数据库的映射过程中, 属性和子元素都映射到关系数据库表中的一个字段, 而且在映射的过程会遗弃本身既是属性又是子元素的信息。不过这对最终的结果影响不是太大, 不会影响Internet网中的数据传输和处理。

在实际的数据转化和处理过程中, JDBC API的方式简单且易操作, 所以采用其实现关系数据库到XML文档的转化。基本流程是, 利用Java API for XML Processing、SQL Server 2003、XML的文本编辑器等工具, 通过JDBC实现和即将转换的关系数据库建立连接, 定义并执行SQL语句中基本查询语句SELECT语句即将转换的数据库中的信息, 记录查询结果;然后利用API建立JDOM树, 将查询结果的记录添加到JDOM树中, 其中字段名和字段值分别对应于XML文档的子元素名称和子元素内容;然后根据XML文档的格式, 将JDOM树输出为XML格式的文档。

简要介绍一下具体操作实现过程。

(1) 建立JDBC和数据库的连接。在计算机上安装Java应用程序、创建好SQL Sever关系数据库及相关数据表、安装JDBC驱动程序, 然后装入数据库驱动程序, 设置Connection对象, 创建Statement和Result Set对象, 分别用于执行SQL语句和对查询结果进行检索。

(2) 在SQL Server中使用Select语句对关系数据库进行查询, 由Statement对象发起, 并由Result Set对象进行查询结果的存储。为第四步的XML文档转化做好合适的数据准备。

(3) 设置转换规则。这是关系数据库到XML文档转化的核心环节。利用Select语句的查询结果, 创建一个临时的类似XML结构的文档, 然后修改数据结构的形式符合XML文档的结构, 主要是对Date、Element、Root三种元素的形式、名称、内容的定义。

(4) 将前两步存储的数据转化成XML文档格式。对前面建立的临时文档进行检索, 主要检索Data元素中存储的Result Set中的Select中的查询结果内容, 根据XML文档的结构形式抽取数据, 然后利用API建立JDOM树, 设置JDOM树的根节点, 利用Document对象把检索到的元素内容依次存储, 多次循环处理初始数据, 根据需要向临时文档加入元素及其相关属性, 直到把所有的数据都分析完。最后将得到的JDOM树按照指定的格式输出为XML文档。当然格式不指定也可以, 指定格式的输出文档可读性比较好。

4 结论

WEB的飞速发展和广泛应用, 尤其是物联网技术的带动, 使得XML语言在Internet数据传输中牢牢占据了主动地位, 在关系数据库模式中迅速有效的存储和转化XML文档也成为很多专家学者的研究热点, 但由于XML文档非结构化和结构化的关系数据库存在结构不匹配的原因, 二者的数据互换或者交换问题一直没有完美的解决方案。本文中提出的XML文档向关系数据库转化的改进的Edge算法以及利用JDOM树进行关系数据库向XML文档的转化, 在上机实现上相对比较简单, 基本上实现了结构化和非结构化数据之间的互换。但没有考虑到表的数据完整性和表间的关系的约束、参照完整性问题, 需要在以后的研究中进行补充完善。

摘要:简要介绍了XML文档和关系数据库进行数据交换的必要性, 并讨论了XML文档数据库和关系数据库之间进行数据相互转换的算法, 并对计算机上机操作的实验流程进行了简要的描述。

关键词:XML,关系数据库,交换,映射

参考文献

[1]Kei Fujimoto, Dao Dinh Kha, Masatoshi Yoshikawa, ToshiyukiAmagasa, “A Mapping Scheme of XML Documents into RelationalDatabases using Schema-based Path Identi.ers, ”wiri, pp.82-90, International Workshop on Challenges in Web Information Retrievaland Integration, 2005[1]Kei Fujimoto, Dao Dinh Kha, Masatoshi Yoshikawa, ToshiyukiAmagasa, “A Mapping Scheme of XML Documents into RelationalDatabases using Schema-based Path Identi.ers, ”wiri, pp.82-90, International Workshop on Challenges in Web Information Retrievaland Integration, 2005

[2]Dweib I, Aeadi A, Elrhman S E F, et al.Schemaless Approachof Mapping XML Document into Relational Database[C]//Proc.ofthe 8th IEEE International Conference on Computer and Informa-tion Technology.Sydney, Australia:[s.n.], 2008:167-172.[2]Dweib I, Aeadi A, Elrhman S E F, et al.Schemaless Approachof Mapping XML Document into Relational Database[C]//Proc.ofthe 8th IEEE International Conference on Computer and Informa-tion Technology.Sydney, Australia:[s.n.], 2008:167-172.

[3][6]SOLTAN S, RAHGOZAR M.A.A clustering-based scheme forlabeling XML trees[J].International Journal of Computer Scienceand Network Security, 2006, 6 (9A) , 84-89.[3][6]SOLTAN S, RAHGOZAR M.A.A clustering-based scheme forlabeling XML trees[J].International Journal of Computer Scienceand Network Security, 2006, 6 (9A) , 84-89.

[4]LEE D, CHU W.CPI:constraint preserving inlining algorithm formapping XML to relational schema[J].Data and Knowledge Engi-neering, 2001, 39 (1) :3 25.[4]LEE D, CHU W.CPI:constraint preserving inlining algorithm formapping XML to relational schema[J].Data and Knowledge Engi-neering, 2001, 39 (1) :3 25.

[5]Bohannon.From XML schema to relations:a cost based ap-proach to XML storage[C]//Proc of the18th International Conferenceon Data Engineering.2002:64 75.[5]Bohannon.From XML schema to relations:a cost based ap-proach to XML storage[C]//Proc of the18th International Conferenceon Data Engineering.2002:64 75.

[6]M Yoshikawa, T Amagasa, T Uemura, Shimura.A path-basedapproach to storage and retrieval of XML documents usingRDBMS.[J].ACMTOIT, 2001, 1 (1) :110 141.[6]M Yoshikawa, T Amagasa, T Uemura, Shimura.A path-basedapproach to storage and retrieval of XML documents usingRDBMS.[J].ACMTOIT, 2001, 1 (1) :110 141.

XML数据库 篇9

扩展的标记语言XML (Extensive Markup Language) 是一种简单的数据存储语言, 使用一系列简单的标记描述数据, 而这些标记可以用方便的方式建立, 易于用户掌握和使用。XML的简单使其易于在任何应用程序中读写数据, 这使XML很快成为数据交换的公共语言, 目前已经成为Internet 上主要的数据表示和交换标准之一[3]。

与传统的关系数据库要求有严谨的数据结构不同, XML描述数据是半结构化的, 即用户在建立自己的数据时有较大的自由度。然而数据本身有一定的规律性, 数据的结构不符合数据自身的规律将会造成数据冗余、不一致、不正确等缺陷, 或者所构建的数据不能恰当地反映实际应用。数据间的函数依赖分析在关系数据库理论中比较成熟, 对于关系数据结构的设计与维护起重要作用[5], 我们有理由相信函数依赖分析对于XML数据也有同等重要的作用。由于XML 在结构上的复杂性及对它的研究相对较晚, 对于XML的函数依赖问题, 目前尚无成熟和完善的理论体系[3]。本文旨在通过实例对关系数据库和基于DTD模式的XML数据的函数依赖分析方法和过程作出比较, 对XML文档与关系数据库间的转换及函数依赖在两者中的保持与传播有一定的参考价值[1,2,3,4]。

2 XML的函数依赖

XML文档有多种模式, 如XML-Data、XML-Schema和XML文档类型定义DTD (Document Type Definition) 等[3]。根据相关文献[1,2,3], 给出DTD的定义:

定义1 DTD定义为D = (E , A , P , R , r) , 其中

·E表示元素类型的有限集合;

·A表示属性的有限集合;

· P是从E到元素类型定义的映射;对于每一个e∈E, P (e) 是如下所示的正则表达式α

α∷= S|ε|e|α, α|α*,

其中S表示字符串类型, ε是空序列, e∈E, “, ”和“*”分别表示连接和Kleene 闭包;

·R 是从E到A的幂集P (A ) 的映射;

·r∈E是树根的元素类型。

给定DTD D , 符合D的XML文档实际上就是D的一个映像。在此给出XML文档的树形结构表示:

定义2 给定D= (E, A, P, R, r) , 称T= (V, lab, ele, att, val, root) 为符合D的XML树 (表示成T╞D) , 其中:

·V是节点的有限集合;

·lab是从V到E∪A∪{S}的映射;

·ele是从V到V*的部分映射, 满足对任意v∈V, 都有ele (v) =[v1, ……, vn ], 当且仅当lab (vi) ( i∈[1, n]) 在P (lab (v) ) 中有定义;

·att 是从V到A的部分映射, 满足对任意v∈V , 都有att (v) =R (lab (v) ) , 当且仅当lab (v) ∈E和R (lab (v) ) 在D中有定义;

·val 是从V到字符串值的部分映射, 满足对任意v∈V , val (v) 有定义当且仅当P (lab (v) ) = S或者lab (v) ∈A;

·lab (root) =r叫做T的树根。

相应地, 我们也可以定义XML树中的路径:

定义3 给定DTD D= (E, A, P, R, r) , XML树Γ= (V, lab, ele, att, val, root) , 满足Γ╞D, 路径p∈Paths (D) , 一个树元组t是从路径p到经过路径p的路径节点集s的last (s) 值的一个函数, 即t={t (p) =last (s) |p∈Paths (D) 且s是经过路径p的某个路径节点集}。

再给出完全XML树的定义

定义4 设X (D) 是XML数据库模式, D表示文档类型定义DTD, Γ是X (D) 上的一个符合D的XML树。此Γ若满足下面条件, Γ是完全XML树。在Paths (D) 中任意两个路径p1, p2, 并且p1

结合上述定义, 给出XML的函数依赖定义

定义5 设X (D) 是XML数据库模式, D表示文档类型定义DTD, Γ是X (D) 上的任意一个符合D的完全XML树。XML 树元组上的函数依赖 (FDXML) 表示为如下形式, p1, …, pk →tq, k≥1, 其中, p1, …, pk和q表示在Paths (D) 中的路径, 如果对于在tuples D (Γ) 中的任何两个元组t1, t2使val (t1 (pi) ) =val (t2 (pi) ) , i∈[1, k], 则val (t1 (q) ) =val (t2 (q) ) , 此时Γ满足函数依赖。

3 XML函数依赖实例分析及与RDB函数依赖的比较

下面是一个描述学校信息的数据库DTD D1, 表示产品 (product) 、客户 (customer) 和经销商 (dealer) 之间的关系:

图1是符合D1的XML文档, 如果根据实际的语义有这样一个约束: 对于一种确定的产品 (product) , 客户的代号 (cno) 能唯一地标识该XML 文档中的一个客户节点 (customer) , 表示成:

F1: (products.product, [products.product.orderby.customer.cno]→ [products.product.orderby.customer])

上述约束不仅有它成立的前提条件, 即对于一种确定的产品;并且还涉及到节点的比较, 即客户的代号能唯一地标识该XML文档中的一个客户节点 (customer) 。进一步分析还可以得到两个XML的函数依赖:

而在关系数据库中, 同样的数据存储为表的形式, 则其函数依赖要简单的多:pno→pname;cno→cname;dno→dname;如果限定实际的语义规则为:确定的客户定购确定的产品, 则经销商是确定的, 那么还有: (pno, cno) →dno。

关系数据的结构是由表的形式限定了的, 结构上的限制使其函数依赖关系比XML文档要简单, 比较可知, 函数依赖在XML中和在关系数据库中有几点区别:

(1) 关系模式由实际的语义约束可直接得出[5], 而确定XML文档的函数依赖则需要根据它的层次树形结构结合语义约束才能得到。

(2) 关系模式表示的是属性的相互关联, 一般情况下, 关系数据库中的函数依赖是全局的 (文献[2]论及的条件函数依赖除外) , 不涉及函数依赖的成立范围;而XML文档是有层次的树形结构, 函数依赖在XML中往往会涉及到它在XML树中成立的范围, 要具体到某一个结点为根的子树中, 才存在函数依赖关系[4]。

(3) 关系数据库中的属性是简单类型, 函数依赖只需考虑属性的值是否相等; 而XML中既有简单数据类型, 也有节点类型, 因而在函数依赖中不仅要考虑简单数据类型是否相等, 还需考虑节点类型是否相等[3]。

4 结语

数据依赖问题在关系数据理论中研究比较成熟, 除了函数依赖外, 还有多值依赖、连接依赖等。XML文档给予了用户较大的自由度来定义数据的结构, 然而, 数据间固有的联系及语义规则的约束在XML的结构设计中应充分考虑, 否则, 数据冗余及数据的不一致依然会给实际的应用带来困难。研究XML中的数据依赖对XML的查询优化及规范化都有重要意义[2], 目前的文献显示XML的数据依赖研究集中于函数依赖范围。本文比较了XML文档与关系数据库在函数依赖上的差异, 进一步的工作将对XML特有的数据依赖形式作出研究。

参考文献

[1]Arenas M, Libkin L.“A normal form for XML documents”[J].ACMTransactions on Database Systems, 2004, 29:195-232.

[2]王庆, 周俊梅, 吴红伟等.XML文档及其函数依赖到关系的映射.[J].软件学报, 2003, 14 (7) :1275-1281.

[3]吕腾, 闫萍, 王真星.XML的函数依赖.[J].小型微型计算机系统.2005 (5) :864-868.

[4]曹步文, 周忠华.XML与关系数据库的函数依赖关系[J].福建电脑.2008 (5) :59.

XML数据库 篇10

关键词 GridView;Xml;数据

中图分类号:TP311.131 文献标识码:B

文章编号:1671-489X(2016)14-0033-02

1 前言

在ASP.NET架构中,GridView控件通常是与SQL数据进行绑定以实现显示数据功能。这种实现方法操作简易,容错性强,使用者不需要掌握太多的数据结构知识。但是在教学中为了能让学习者更好地理解GridView控件从数据源中读取数据的过程和数据存储的结构,使用Xml表作为数据源,其显示方式更加直观,严苛的编辑标准对于初学者的逻辑理解来讲也更加友好。

本文旨在提出一种逻辑较为简单易懂的命令来实现ASP.NET中通过GridView控件来对Xml表内数据进行删改的功能,命令行以易读性为第一标准,使学习者在了解根本数据传递方法之后,能够熟练掌握其命令逻辑,并在不同的环境下得以灵活运用。

2 核心代码分析

XML表结构 为了便于描述,本文采用图1所示的XML文档,该文档的根节点为,其中有两个子节点,分别为

显示数据 由于显示数据的此段在后续操作中会被多次用到,因此定义一个子函数MyDataBind。首先创建一个数据集,然后读取外部Xml表数据加载至该数据集(Xml文件应与当前页面文件处于同一文件),再将数据集中第一个表,以默认方式作为GridView控件的数据源,最后绑定数据源。代码如下:

void MyDataBind()

{ DataSet dsShowXml = new DataSet();

dsShowXml.ReadXml(Server.MapPath(″XMLFile1.xml″));

if (dsShowXml.Tables.Count > 0)

{ GridViewShowXml.DataSource = dsShowXml.Tables[0].

DefaultView;

GridViewShowXml.DataBind(); } }

删除数据 删除数据时,首先创建一个XmlDocument对象,读取Xml表数据加载至该文档对象,然后查找节点,通过ParentNode中的删除子节点的方法删除找到的节点,最后保存XML文档,刷新数据。整个过程如图2所示。

在本例中,节点的数据类型是日期型,精确到“秒”,所以查找节点是通过“SelectSingleNode(″//basic[e1=′″+Grid

ViewXmlDelete.Rows[e.RowIndex].Cells[3].Text+ ″′]″)”来实现的。

编辑和更新数据 编辑Gridview控件时,只需在RowEditing事件中获取用户选定的行号,然后通过调用MyDataBind函数显示数据。

更新数据时,需要在Gridview控件的RowUpdating事件中创建多个TextBox对象,从而获取在编辑状态时用户动态输入的信息(通过RowIndex和Cells定位,应该注意由于使用了GridView控件内置的编辑和删除按钮,在编辑时,GridView显示表的前两列被更新和取消按钮占用,因此在列定位时应该后移两列),再通过InnerText属性设置其所有子节点的值,最后保存XML文档,取消编辑状态,刷新数据。运行结果如图3所示。

3 总结

使用Xml表作为数据源时,由于与前台程序之间存在一个DataSet缓存区,数据先行载入后可以断开与数据源的连接;而在DataSet中数据的存储结构为同一节点里的所有元素储存在同一张DataTable中,其顺序和Xml表中节点的排列顺序一致。这些特性使得用GridView控件管理Xml表的规范数据时只用短时占用Xml表资源,大部分操作都在页面程序上进行,大大提升了运行速率。

参考文献

[1]王辉,等.ASP.NET 3.5(C#)实用教程[M].北京:清华大学出版社,2012.

从关系数据库到XML文档的转换 篇11

关键词:数据库,XML文档,JDBC,SQL

(一) 引言

XML (e Xtensible Markup Language, 可扩展标记语言) 因其具有支持信息系统交互和数据整合、生命周期长等方面的独特优势, 得到了信息技术界的普遍重视。另一方面, 传统的关系数据库依然是存储数据的主要手段, 是Internet信息的主要来源, XML为这些存储在不同关系数据库中的信息之间的交换提供了一条捷径。而与其他数据库编程环境相比, Java和JDBC有一个显著优点:使用Java和JDBC开发的程序可以跨平台运行, 且不受数据库供应商的限制, 具有很好的通用性。因此文中介绍如何利用JDBC从数据库中抽取数据, 并用Java实现数据到XML文档的转换。

(二) 从关系数据库到XML文档转换的系统结构

实现从关系数据库到XML文档转换的核心思想是, 利用JDBC从关系数据库中抽取数据, 通过java程序将抽取的数据转换为XML文档, 整个系统中数据的流程图如下所示:

(三) 通过JDBC访问数据库

JDBC是一种可用于执行SQL语句的Java API, 它由一些Java语言编写的类、界面组成。JDBC给数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口, 使开发人员可以用纯Java语言编写完整的数据库应用程序。通过使用JDBC, 开发人员可以很方便地将SQL语句传送给几乎任何一种数据库, 因此用JDBC来解析数据库, 具体的解析步骤如下:

(四) 生成XML文档

Java是一种广泛使用的网络编程语言, 它简单、面向对象、不依赖于机器的结构, 具有可移植性、安全性, 并且提供了并发的机制、具有很高的性能。其次, Java还提供了丰富的类库, 使程序设计者可以很方便地建立自己的系统, 因此使用Java来解析生成XML文档是一种很好的方式。

1. 从关系数据库结构到XML文档的映射

本文采用的方法是将命令语句嵌入模板的方法, 例如, 在元素中内嵌了SQL语句:

这种映射方法相当灵活, 在最后的结果中替换想要的内容, 包括在SELECT中使用的参数, 另外它还支持使用编程结构, 例如循环和条件判断结构。根据用户的需要生成相应的SQL查询语句, 把这些查询语句嵌入到模板的程序模块中, 最后生成文档。

2. 从关系数据库到XML文档转换基于模板映射的实现方法

(1) 生成DOM数代码实现

(2) 输出XML文档实现方法

(五) 结束语

XML是一个数据表示的开放标准, 其特点使得其在信息管理、数据交换, 应用集成等方面有着重要的用途, 基于XML的信息也将普遍存在, 它和现在很多信息数据库之间存在着大量的数据转换, 因此文中讨论了从关系数据库到XML文档的转换。基于JDBC和Java具有很好的跨平台性, 因此使用这两种工具语言来实现整个转换过程, 以做到整个转换系统具有很好的通用性。

参考文献

[1]Cay S.Horstmann, Gary Cornell.JAVA2核心技术[M].北京:机械工业出版社, 2006.

[2]Brett D.McLaughlin, Justin Edelson.Java与XML[M].南京:东南大学出版社, 2007.

上一篇:提高写作能力重在积累下一篇:ICU目标性监测论文