杨慧慧
(1. 山东科技大学,山东 青岛 266510; 2. 泰山医学院,山东 泰安 271016)
XML作为一种可扩展的标记语言在网络中得到了非常广泛的应用,己经成为网络数据交换事实上的交换标准。信息时代的飞速发展和网络应用的日益普及促使了类如电子商务等应用系统的产生,于各企业单位信息系统开发的阶段性,往往缺乏统一的数据库存储机制,很难得以实现通用的、直接的信息交换。所以,如何实现异构数据库之间数据的交换,同时确保数据在交换过程中的安全,就成为这些应用能否成功的关键问题。
XML是一种可扩展的标记语言,它与平台、语言和协议无关的格式描述和自描述性使之很适用于不同应用间的数据交换,逐渐成为一种在WWW上进行信息描述和交换的标准。
XML是数据交换的媒介,与关系数据库有很多相同之处,XML数据与数据库数据的转换对于保证数据传输至关重要,需要建立一个针对XML的安全通道,XML能够与现有的数据库管理系统实现自由的数据传递与转换。XML的数据是树状结构,是半结构化的,数据可能是嵌套的混合类型。而现在的主流数据库均是关系型的,是结构化的,字段数值是一些不可分割的最基本的实体属性。数据在网络中进行交换的格式都是以XML文档的形式表现的,它们在进行交换时有一个共同的特征,也即统一在一个相同的XML模式下。从这个角度来说,XML文档与底层数据库之间的转换实际上就是XML模式与数据库模式之间的转换或映射。但并非所有系统都可以通过XML直接进行数据交换。对于那些不能直接交换的系统,可以采用中间件技术转换后再通过XML实现数据交换。
两者转换的实质是:
(1) 从XML文档中的数据(存在方式可以是内容、属性值、元素名等)到关系模式中的字段的映射;
(2) 从XML文档中的数据的相互位置关系到关系模式中元组与元组的关系及元组与字段的关系的映射。
XML数据模型与关系数据模型之间的转换可以分为基于模板驱动的映射和基于模型驱动的映射两种形式。基于模板驱动的映射并不事先定义好XML文档与其他数据之间的映射关系,而是在一个模板中嵌入带参数的SQL命令,这些命令在转换过程中被系统所识别和执行,执行的结果被替换到命令所在的位置,从而生成目标XML文档。它以XML文档内嵌的SQL执行的数据结果集合为依据,不涉及数据库赖以存在的关系模式或对象模式。基于模板的转换方法的好处在于转换的步骤比较简单,使用灵活,只要给出模板,就可以快速地生成相应的XML文档。不足之处在于,它只适合将其他类型的数据转换为XML文档,对于反向的转换就无能为力了。基于模型驱动的映射实现过程是:当把数据从数据库传送到XML文档或把数据从XML文档传送到数据库时,用一个具体的模型来实现,而不是仅仅依赖内嵌的SQL命令。基于模型驱动实现数据在数据库和XML文档间的双向传输的关键是在数据库模式和XML Schema或DTD之间建立双向映射。具体的思路是把一个XML文档表示为由数据对象构成的树,每一个元素类型和对象模式中的对象相对应,因此主要在面向对象数据库中使用,当然通过传统的关系-对象模型也可以映射到关系模式中。基于模型驱动的映射又可以分为基于表映射和基于对象映射两种:基于对象的映射虽然应用广泛,但是比较复杂,其适用于XML文档与面向对象数据库和层次数据库数据之间的转换;基于表映射把XML文档看作是具有特定结构的序列表,直接与数据库中的一张表格相对应,虽然在应用上有所限制,但是操作非常简单。本文采用基于表映射来实现数据库的表与XML文档之间的转换。
基于表的映射是将具有特定结构的XML文档理解成一张表,直接与数据库中的表相对应。就数据库而言,一个最为简单的模型就是将文档结构定义为如下形式:
(1)打开从一个表上选取的数据集(数据集也可以通过多表之间的关系查询得来);
(2)以数据集相关的表名创建文档根元素;
(3)对于数据集中的每一条记录中的每一字段,创建一个列元素,并且把该记录对应于该字段的值作为该列元素的值,如:;
(4)关闭数据集。
生成的XML文档经过加密和签名之后将作为消息载体通过网络被传输,一旦接收方接收到,就可以首先验证XML文档的完整性,然后对加密的文档进行解密,最后读取XML文档生成标准SQL语句执行数据库操作。生成标准SQL语句的过程可以通过下面的步骤来完成:
(1)取得文档根元素的名称,即用于存储操作的表名;
(2)创建SQL语句模板如:Insert into tablename values...,然后提取列元素名称和元素值,分别将其加入到SQL语句模板中;
(3)在每个行元素结束时,执行上一步中创建的SQL语句,实现对数据库的存储操作。
要使XML能够真正地在电子商务的环境中应用,必须具有针对XML的安全传输机制。本文采用对XML文档进行加密和签名的双重安全保护的方法,用以保证数据在传输过程中的安全。基本过程如下图所示,
1、 XML加密技术
XML文档加密具有灵活的加密机制,它主要研究的是如何对同一文档的不同部分进行不同处理的情况。XML加密是W3C中的一个加密标准,定义了一个对明文加密产生密文以及对密文解密恢复明文数据的过程。它包括加密语法和处理规则两部分,前者描述加密数据的表示形式,后者描述加密的处理过程。其功能是对任意的数据(包括一个XML文档,一个XML元素,或XML元素里的内容)进行加密,加密后的文档仍然是格式良好的XML文档。标准的XML加密语法结构格式如下所示。
要加密的数据可以是整个XML文档、XML元素或XML元素内容,加密数据的结果是一个包含或引用密码数据的XML加密元素。当加密XML元素时,
2、 XML签名技术
XML加密文档在传输过程中的可靠性由XML签名来实现。它不仅可以保证数据传输过程中的完整性和检测可能对数据做的更改,而且也可以识别消息发送者的身份。消息通常采用发送者的私钥进行签名,而采用相应的公钥进行验证 。XML签名按形式可分为分离式、封装式和被封装式签名。下面是XML签名的统一格式:
(
(
(
)+
(
(
对XML数字签名的校验则包含两个必需的步骤,分别是签名校验(Signature Validation)和参考检验(Reference Validation)。
(1)签名校验(Signature Validation)
签名校验就是对
(2)参考检验(Reference Validation)
参考检验的过程则是先对
只有当上述两个步骤都成功时,该XML数字签名的校验才算通过。
XML由于其得天独厚的优势已经成为异构数据交换技术的事实标准,而且目前广泛使用的各种数据库产品无一例外地都对XML表现了强大的支持,最后从目前广泛应用的许多软件产品也逐渐将XML作为其进行格式转换的桥梁,这种趋势促使各种异构的关系数据库之间进行数据交换采用XML作为标准。
1、XML与数据库的API接口
要开发一个基于XML的数据交换系统需要同时借助于XML编程接口与数据库编程接口。前者用于对XML文档进行解析、定位与查询,所需要的技术可以是XMLDOM或XMLSAX;后者则是用于对数据库进行访问,如对数据的查询、更新与删除等,这就需要使用ODBC、JDBC或ADO等。
2、数据交换模型的体系结构
XML的应用框架分为三层:数据层、对数据进行处理的逻辑应用层、数据显示与进一步处理的客户层。数据层一般都是指后端数据库服务器,它们可能是SQL server,也可能是Oracle或DBZ;应用层一方面从WEB服务器接收用户的数据请求,另一方面完成在异构数据库之间通过XML进行数据交换,并将交换后的数据在客户端上发布;客户层实际上就是一个具有WEB浏览器的瘦客户端,用户借助它来定制、执行所需要的数据交换工作。
3、数据交换平台的总体架构模型
客户层:客户层只需要浏览器,所有的数据交换请求通过浏览器以Hr即发出,交换的结果也返回到客户端浏览器;
应用层:WEB服务器、数据交换核心、DJBC驱动构成平台的应用层,数据交换模块。
数据层:由各种不同的异构数据库构成,这些数据库可以是本地的,也可以是远程的。
4、数据交换规则字典
有了数据交换的规则字典后,用户首先在客户端根据交换的需要选择交换规则,如果没有所需要的规则可以先定制规则。规则选定后,系统中的规则解析模块对所选中的规则进行解析并分解,以形成实际的与数据库相对应的SQL命令,再通过数据的提取、数据的转换与数据写入等模块完成一次数据交换。
XML本身具有的与平台无关、易于扩展、交互性好、语义性强等特性,由于XML在数据表示和交换数据长期存档方面的优势,使得XML数据库必将在数据交换和公共数据平台建立方面获得广泛应用。
[1] Feng Tian,David DeWitt,Jianjun Chen.The Design and Performance Evaluation of Alternative XML Storage Strategies[J].ACM STG-MOD Recd.2002,31(1):5-10.
[2] 孙宏伟,张树生,周竞涛,等.基于模型驱动的XML与数据库双向映射技术[J].计算机工程与应用,2002,(4):201-202
[3] J.Fong,H.K.Wong,Z.Cheng.Converting relational database into XML documents with DOM[J].Information and Software Technology, 2003(45):335-355.
[4] 彭涛,张力.基于本体和XML的数据交换研究[J].计算机工程, 2006,1(32):25-27.