论文导读::异构数据库和XML的优势。技术优势。优势。基于XML和WebService的异构数据库数据交换研究。
论文关键词:异构数据库,XML,WebService
0前言
随着Internet应用的不断普及,Internet上连接着各种类型的数据库系统,形成了大量的信息资源库。由于种种原因,这些信息资源库采用的是不同数据模型的数据库,导致数据共享比较困难,造成了资源很大的浪费。为了共享分布在不同数据库中的信息资源,Internet的异构分布式信息系统正在迅速发展,最终实现不同数据库之间的数据信息资源、硬件设备资源和人力资源的合并和共享,实现数据的共享和透明访问[1][2][6][7]。
1异构数据库和XML的优势
1.1异构数据库
异构数据库系统是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的DMBS。异构数据库的各个组成部分具有自身的自治性,在实现数据共享的同时,每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制。异构数据库系统的异构性主要体现在以下几个方面:
(1)计算机体系结构的异构,(2)各个参与的数据库可以分别运行在大型机、小型机、工作站、PC或嵌入式系统中,(3)基础操作系统的异构,各个数据库系统的基础操作系统可以是Unix、WindowsNT、 Linux等,(4)DMBS本身的异构。所以异构数据库可以是同为关系型数据库系统的Oracle、 SQL Server等,也可以是不同数据模型的数据库,如关系、模式、层次、网络、面向对象,函数型数据库等共同组成一个异构数据库系统[6][7]。
1.2 XML技术优势
XML是世界互联网协会(World Wide WebConsortium,WSC)于1998年2月颁布。由于XML源自标准通用标记语言SGML,XML作为一种可扩展的标记语言,目前已成为信息描述的事实标准。XML与其他语言相比,具有明显的优势,表现在以下四个方面:①XML可以从HTML中分离数据,通过XML,可以在HTML文件之外存储数据。②XML用于交换数据,通过XML,我们可以在不兼容的系统之间交换数据,将大大减少交换数据时的复杂性,并且还可以使得这些数据能被不同的程序读取。③XML可以用于共享数据,通过XML,纯文本文件可以用来共享数据。XML也可以用于存储数据,利用XML纯文本文件可以用来存储数据。大量的数据可以存储到XML文件中或者数据库中。应用程序可以读写和存储数据。④XML可以充分利用数据,XML是与软件、硬件和应用程序无关的,所以可以使你的数据可以被更多的用户、更多的设备所利用[2][3][4]。
基于XML的优势,下一代的XML数据库目前是研究的前沿,但由于很多标准还在制定中,而且XML读取效率较低,所以目前没有大规模应用。
1.3WebService优势
WebService主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。 Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows、Linux)中使用。SOAP协议(Simple Object Access Protocal简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在SOAP议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问[3]。所以Web Service一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。
2实现过程
2.1原理和开发环境
基于上述XML和WebService的技术优势,可以把不同结构的数据库中的数据,转换成XML结构的数据,通过HTTP协议在网络中传输,接收方可以把收到的XML数据进行转换,转换成其他方式的数据。这样,在异构数据系统中实现了数据的透明访问,用户就可以将异构分布式数据库系统看成普通的分布式数据库系统,用自己熟悉的数据处理语言去访问数据库,如同访问一个数据库系统一样。
软件开发环境,设置了两台服务器,一台安装Linux和Oracle10g,另一台安装Windows2003和SQL 2005,在Oracle和SQL 2005数据库中分别建立一张表DishMenu,两张表具有相同的结构,其中Oracle10g上的有数据,SQL2005上的是空表。另外还设置了一台编程工作站,使用vs 2008为编程工具。
2.2 WebService编程
2.2.1 访问Linux和Oracle平台
打开VS2008,建立一个WebService项目DishOrder,并在Web.config文件中配置连接字符串为“Data Source=Linux-Oracle; Initial Catalog=DishDB; IntegratedSecurity=True”,表明Linux主机名为Linux-Oracle,建立的Oracle数据库为DishDB。建立一个WebService服务接口,代码如下:
[WebMethod]
publicDataTable GetDataView(string sql)
{
SqlCommand sqlcomm = new SqlCommand(sql, conn);
conn.Open();//打开数据库连接
SqlDataReader dr = sqlcomm.ExecuteReader();//执行SQL语句
DataTable table = new DataTable();
table.Load(dr);
return table; //返回结果类型为Table
}
程序运行过程中,输入要执行的SQL语句:SELECT* FROM DishMenu where price = 12,作为GetDataView的参数,如图1所示:
相应的SOAP协议表现为:
SOAP 1.2
以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。
POST /DishSrvs/DishService.asmx HTTP/1.1
Host: localhost
Content-Type: application/soap+xml;charset=utf-8
Content-Length: length
<?xml version="1.0"encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GetDataViewxmlns="http://tempuri.org/">
<sql>string</sql>
</GetDataView>
</soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml;charset=utf-8
Content-Length: length
<?xml version="1.0"encoding="utf-8"?>
<soap12:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GetDataViewResponsexmlns="http://tempuri.org/">
<GetDataViewResult>xmlxml</GetDataViewResult>
</GetDataViewResponse>
</soap12:Body>
</soap12:Envelope>
单击“调用”按钮,SQL语句执行,得到的结果为:
<DataTablexmlns="http://tempuri.org/">
<testdiffgr:id="test1" msdata:rowOrder="0">
<ID>2010</ID>
<Name>宫堡鸡丁</Name>
<Price>12.0000</Price>
<Type>3</Type>
<Peppery>2</Peppery>
<Remark>< Remark />
<rowguid>5a2ff990-7751-4586-baf6-9156d56b2844</rowguid>
</test>
<testdiffgr:id="test2" msdata:rowOrder="1">
<ID>2012</ID>
<Name>辣子鸡丁</Name>
<Price>12.0000</Price>
<Type>3</Type>
<Peppery>3</Peppery>
<Remark><Remark />
<rowguid>b0b2e516-e30f-42b4-b439-df27c5ddbaab</rowguid>
</test>
</DocumentElement>
</diffgr:diffgram>
</DataTable>
 可以看得出来,执行的结果是一个XML树型结构,包括2条记录,记录的字段名分别为:ID、Name、Price、Type、Peppery、rowguid 6个关键字,值分别在对应的关键字标记里。
2.2.2 转换成异构数据
由上面的结果可以看到,SQL语句在Linux+Oracle平台上执行的结果,已经转换成了XML树型结构,下面要做的是把XML结构的数据保存到Windows2003+SQL 2005数据库DishMenu表中。为此,添加一个GrideView控件,在数据源中选择“XML”文件,添加2.2.1中SQL语句执行的XML结果,XML结构的数据成功的绑定到GridView控件,如图2所示。
XML数据成功绑定到GridView控件后,可以为GridView控件添加自动更新事件,事件执行的结果是把GrideView中的数据插入到SQL2005数据库中相应的表中,当然事先要在SQL2005中增加一张与DishMenu的结构一样的表,否则更新数据不能成功。最后我看到SQL2005中更新的数据如图3所示,在SQL2005中输入:SELECT * FROM DishMenu where(price = 12),执行SQL语句,结果正好是XML结构中的数据,也与在Oracle中执行的结果相同。
3结束语
如何让用户透明使用异构信息资源库,达到资源最大共享,是目前信息资源共享的一个重大阻力。为了解决这个问题,文中SELECT * FROM DishMenu where price = 12 SQL语句,把在Linux平台上的Oracle中的数据,通过WebService的调用,执行生存一个XML树型结果,然后把XML中保存的结果放入GrideView控件中,通过GrideView控件的自动更新事件,把数据保存到Windows平台上的SQL2005数据库中,最后在SQL2005中执行相同的SQL语句,得到的结果与保存在XML中的数据相同。这说明,使用XML和WebService可以实现不同平台下的不同数据库之间的数据交换。
参考文献
[1]刘淑梅.基于XML的异构数据库集成技术研究[J].衡水学院学报,2008(2):1-2.
[2]巫丹丹,李冠宇,于水明.面向服务的Web异构数据集成体系结构研究[J].计算机与数字工程,2007(8):2-3.
[3]张洁,卢德唐.异构数据集成方案的优化设计与实现[J].计算机辅助工程,2008(3):2-4.
[4]关辉.异构数据库间数据交换技术研究与实现[M].数据库及信息管理,2007(5):1-3.
[5]吴迪,陈钢.新一代的WebServices技术[J].计算机应用研究,2003,(03). Vol.5,No.7,March2009:1644-1646
[6]俞勇,蒋烈辉.基于WebService的医疗保险系统的设计与实现[J].计算机与现代化,2009(02):26-30.
[7]胡泽,廖闻剑,彭艳兵.WebService技术研究及应用[J].硅谷,2009(5):48.
|