基于Web Service的数据库同步系统的设计与实现.docx
《基于Web Service的数据库同步系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Web Service的数据库同步系统的设计与实现.docx(29页珍藏版)》请在冰豆网上搜索。
![基于Web Service的数据库同步系统的设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-1/31/1801a9e8-d5f5-4c2c-981f-b8e1222f4a8f/1801a9e8-d5f5-4c2c-981f-b8e1222f4a8f1.gif)
基于WebService的数据库同步系统的设计与实现
分类号:
TP319UDC:
D10621-407-(2007)5822-0
密级:
公开编号:
2002801002
成都信息工程学院
学位论文
基于WebService的数据库同步系统的设计与实现
论文作者姓名:
申请学位专业:
申请学位类别:
指导教师姓名(职称):
论文提交日期:
基于WebService的数据库同步系统的设计与实现
摘要
结合当前流行的WebService和ADO.NET技术构造了一个不受平台限制的异构数据库同步系统。
实现了处于Internet上的SqlServer2000向Oracle的单向同步功能,能够基于IP的安全身份验证功能,多个IP实现了净量数据的传输。
对同步的配置信息采用XML存储,采用Windows应用程序界面化配置,操作方便、易懂。
因为同步环境是对处于Internet上的异构数据库的实时同步;在设计与开发中,重点关注异构数据库的同步以及数据传输的可靠性;探讨能实现可靠数据的同步,以及传输的高效性。
介绍了实现系统的思路以及所需的关键技术。
系统用到的相关技术有捕获技术Windows托盘服务、多线程处理、以及网络消息机制、多IP同步、同步IP权限验证、同步表名及字段以及字段类型的可配置、异构数据类型的转换、WebService等。
关键词:
WebService;异构数据库;同步;ADO.NET;
TheDesignandImplementationofDatabaseSynchronizationSystemBasedonWebService
Abstract
WecanconstructtheHeterogeneousdatabasesynchronoussystemusingWebService.Ithasrealizedthefunctionofone-waysynchronousfromSQLServer2000toOracle.Ithassomefunctions,thesecurityauthenticationofIP,thedatatransmissionofIP,theSynchronizationconfigurationusingXMLstorageandthewindowsapplicationprogramUIwhichcanmakethissystembeoperatedeasily.
Becausethesynchronousenvironmentwillbereal-timesynchronousforheterogeneousdatabaseontheInternet,inthedesignandimplementation,thissystemhasshowedthesynchronizationofheterogeneousdatabaseanddatatransmissionreliability,achievingthesynchronizationofreliabledata,thesecuritymethodsofdatatransmission,andtheefficiencytransmission.Itwilldisplaytheideasofrealizationandthenecessarycriticaltechnologies.Therearesomerelevanttechnologiesthatthissystemused,forexample,thecapturetechnology,thewindowstrayservice,multi-threadprocessing,andthenetworknewsmechanism,andsoon.
Keywords:
WebService;HeterogeneousDatabase;Synchronization;ADO.NET;
目录
论文总页数:
24页
1引言1
1.1课题背景1
1.2国内外研究现状1
1.3本课题研究的意义2
1.4本课题的研究方法2
2WebService数据库同步原理3
2.1WebService构成与特点3
2.1.1WebServcie的结构3
2.1.2WebServcie的关键技术---协议3
2.1.3WebServcie的特点4
2.1.4WebServcie安全5
2.2数据库复制的分类5
2.3复制数据的类型6
2.4数据捕获技术7
2.5冲突检测8
3需求分析9
3.1同步环境9
3.2功能需求9
3.3性能需求10
3.4输入输出要求10
3.5运行需求10
4方案设计11
4.1数据库同步复制模型11
4.2数据库设计11
4.2.1源结点SqlServer2000表设计11
4.2.2目的结点Oracle表设计12
4.3模块设计13
4.3.1数据捕获部分13
4.3.2同步部分13
4.3.3冲突检测处理部分16
5代码实现16
5.1开发环境16
5.2关键代码详解。
16
5.2.1数据捕获部分16
5.2.2同步部分17
6测试19
6.1功能测试19
6.2性能测试20
结论21
参考文献21
致谢23
声明24
1引言
1.1课题背景
随着信息化建设的深入,企业和政府如何将己有的“信息孤岛”连通起来,实现信息的集成与共享是当前需要解决的一个关键问题。
特别是企业和政府部门多数采用层次管理摸式,各个部门、分支机构可能处于Internet上的不同区域,上下级机构之间需要进行大量的数据汇总与分发,实现整个企业或政府部门的数据集成。
这种数据集成是从一个或多个数据库中抽取数据,经过远程传输处理后再加载到另一个数据库中。
各分支机构数据库系统又包括异构的与同构的,这里的异构可以是操作系统的异构,可以是数据库管理系统的异构,也可以是数据库内部表结构的异构。
然而,分布式数据库系统既要提供局部自治又要实现全局控制,给数据的同步带来了很大的挑战性。
如何在不同组织之间、不同类型、不同平台的数据库系统之间进行数据同步工作,是数据库领域一个研究方向。
特别是对于异构的情况。
WebService的出现使异构数据库同步的情况变得较为容易实现,因为它是一种完全的无语言相关性、无平台相关性、无对象相关性的模型。
非常适合于Internet上的数据集成。
1.2国内外研究现状
国外对数据集成的研究比较早,许多数据库系统提供了专门的数据转换集成工具。
如SQLServer2000的DTS,Oracle的SQL*Loader,IBM的VisualWarehouse等。
另外,还有一些第三方软件开发商也推出一些产品,例如:
AscentialSoftware公司的DataStage,AppliedDatabaseTechnology公司的DataMapper,Dataflux公司的SmartScurb和DataJunction公司开发的析取包等。
这些数据库附带的、第三方公司开发的数据集成工具对于结构化数据在功能上可以说已经基本上能满足一般的要求。
而对于数据库研究组织来说,不少研究小组针对数据集成中一些重要的技术难点展开研究工作,例如集成模型,数据集成的通用性,数据集成的构件化,数据转换的技术,数据转换规则的制订,数据同步策略等等。
异构数据同步方法的研究现状:
集成数据的质量是整个系统的关键点,而保证源数据和目标数据库的数据同步则是保证数据质量的前提,特别是在目前分布式异步数据集成的环境下,减少数据传输过程中的冗余量,实现数据同步的高效性和增量报送成为数据同步的目标。
J.Hammer教授讨论了数据同步的两种可能方法;如果数据源是功能完备的数据库系统,则可以通过定义一组触发器,或者通过读取日志的方式来检测分析数据源的变化实现数据同步。
该方法的可行性及实现依赖于具体的数据源类型,比如文本型数据源就不支持日志或触发器机制。
而对于任意类型的数据源,都可以采用基于快照差分的方法实现数据同步:
每隔一定时期重新生成基表的快照,同上一次的旧快照作差分计算,得到反映基表自上次到本次生成快照以来变化的增量数据。
增量数据中可以只包含数据源中被删除或插入的元组W.J.Labio综述了可应用于快照差分的算法,包括几种常用算法:
SortMerge算法、PartitionHash算法、Window算法,和一类新提出的基于压缩策略的算法,并对所有这些算法作了详尽的分析。
在增量数据更新方面,目前有五种技术可以达到数据增量更新的要求。
第一种方法是扫描已经打上时间戳的数据,当一个应用对记录的最后一次修改打上时间戳时,扫描程序就根据时间戳得到增量数据,但必须原业务系统存在时间戳字段:
第二种方法是扫描增量文件,增量文件仅记录应用中所发生的变化,有了增量文件,扫描的过程就会高效,增量文件的生成可以改造应用来完成,如触发器:
第三种方法就是扫描日志文件或审计文件,但必须使用某种技术手段作为日志文件内容输出的接口,常见的使用Sybase的工具RepliactionServer来识别:
第四种方法就是修改以往的应用程序代码,使这些程序能够数据集成;第五种方法就是将前后两个快照文件进行比对。
目前,国内大部分应用系统采用针对系统本身设计开发的数据集成工具,有的甚至用手工方法实现数据抽取、转换和加载。
因此当目标数据库结构发生变化或者重建时,需要重新编程实现该过程。
1.3本课题研究的意义
分布式数据库大量的应用,各种应用之间又有很多的交叉性。
数据库同步就显得很重要;特别是异构的情况,然而异构数据库之间的同步不能应用数据库自带的同步工具。
另一方面,由于两者分布在Internet中,防火墙的存在使得同步无法使用特定端口通讯。
但因为大多数企业会开放用于HTTP的80端口,因而借助WebService可以完成两者的通讯。
数据表要进行的操作,以XML形式编码作为消息内容。
借助XML的无语言相关性、无平台相关性、无对象相关性来实现异构数据库的同步,也可应用结构相同的分布式数据库上。
1.4本课题的研究方法
本同步系统采用WebService作为同步数据的传输,使用触发器实时捕获数据库的增量记录,并保存到临时缓冲表,以便供同步到目标数据库,然后采用Windows服务实时的监视目标IP是否有需要同步的数据,如果存在目标IP同步的数据,就向此IP发送同步消息,另外一端收到同步消息就调用WebServcie方法获取同步的数据,写入到本地,写入成功后向服务器方发送确认消息;服务器收到确认后,将此IP同步了的数据标识为已读。
当所有主机同步完成,就物理上删除被同步了的数据。
先实现SqlServer2000同步到Oracle,设计时考虑到多个IP,多个不同异构数据的情况。
2WebService数据库同步原理
2.1WebService构成与特点
2.1.1WebServcie的结构
WebService由服务提供者、服务注册中心和服务请求者三角色以及发布、查找和绑定三个操作组成。
三个角色的交互完成服务。
交互涉及发布、查找和绑定操作。
图1描述了角色调用操作完成服务的结构。
服务提供者管理可以通过网络访问WebService的一个实例。
服务提供者定义WebService的服务描述,并把它发布到服务请求或服务注册中心。
服务请求者使用查找操作来从本地或服务注册中心检索服务描述。
然后使用服务描述与服务提供者进行绑定并调用WebService实现或同它交互。
服务提供者和服务请求者角色是逻辑结构,因而服务可以表现两种特性。
图1展示了这些操作、提供这些操作的组件及它们之间的交互。
发布
绑定
查找
绑定
查找
图1WebService的结构
2.1.2WebServcie的关键技术---协议
WebService中的主要服务协议包括:
XML、SOAP、WSDL、UDDI,它们构成一个互操作的协议栈。
如图2所示
图2WebService的协议栈
XML(eXtensibleMarkupLanguage):
可扩展的置标语言,是W3C组织于1998年2月发布的标准。
XML严格地定义可移植的结构化数据,并对数据赋予上下文相关功能。
Web服务完全基于XML技术。
服务提供者和服务请求者均使用XML传递消息和数据流。
SOAP(SimpleObjectAccessProtocol):
简单对象访问协议,SOAP完全独立于任何厂商,可以相对于任何编程语言、对象模型、操作系统和平台独立实现。
它为在分布式环境下使用XML、对等地交换结构化和类型化的信息提供了一个简单且轻量级的机制。
HTTP作为低层通信协议实现了SOAP把基于HTTP的Web技术与XML的灵活性和扩展性结合在一起,并有助于实现异构平台之间的互相操作性,从而使其扩展性结合在一起,并有助于实现异构平台之间的互操作性,从而使其扩展到Internet上的分布式计算和数据集成。
HTTP作为一种普遍接受的协议被用于任何地方及任何平台上,XML也同HTTP一样得到普遍应用,由于XML是文本格式文件,所以SOAP实质上是一个基于文本的协议,它没有对平台和环境的依赖性。
WSDL(WebServcieDescriptionLanguage):
Web服务描述语言,定义了一个基于XML的组件描述标准机制,用来描述Web服务的相关信息,它把网络服务定义成一个能交换消息的通信端点集。
用WSDL定义的一套XML语法描述的网络服务的方式,使用户端的程序要知道Web服务提供了什么服务可以进行调用。
UDDI(UniversalDescriptionDiscoveryandIntegration):
通用描述、发现和集成协议,是一套基于Web的、分布式的、为Web服务提供信息注册的实现标准规范,是一个跨产业、跨平台的开发性架构。
可帮助Web服务提供者在Internet上公布自己推出的Web服务。
2.1.3WebServcie的特点
WebService技术的主要目标就是在现有各种异种平台的基础上,构筑一个通用的平台无关、语言无关的技术层。
各种不同平台之上的应用依靠这个技术层来实施彼此的连接和集成,从而让使用不同系统和不同编程语言的人们能够相互交流和分享数据。
WebService并不是构件技术发展中的一个革命性改变。
而只是一种较大的进展。
它是对象构件技术在Internet上的延伸,是一种部署在Web上的对象构件。
是封装成单个实体并发布到网络上供其它程序使用的功能集合,它不会完全取代现在的构件技术。
2.1.4WebServcie安全
考虑的安全仅仅是WebService在交换数据中的安全。
因此,设定的安全目标是:
.客户端确认服务器的身份;
.服务器来确认客户端的身份;
.保证传输的数据在传输过程中不被监听;
.保证传输的数据在传输过程中不被篡改。
2.2数据库复制的分类
数据库复制有不同的分类方法,不同的分类采用的复制方法往往不同。
按照复制的方向划分为单向(unidirectional)复制和双向(hi-directional)复制,按照传播更新的方式划分为同步(synchronous)复制和异步(asynchronous)复制。
单向复制,也称主从式(master/slave或primary/secondary)复制或主版本(mastercopy)复制,指的是两个复制结点之间只从一个结点向另一个结点进行复制,源结点保存复制对象,目标结点保存复制对象的副本,源结点中数据对象具有可读可写的特性,目标结点中的数据对象只具有可读的特性,修改数据对象需要在源结点上进行,从而预防了更新冲突的发生。
这种复制方式比较简单,应用范围也比较广。
双向复制也称对等式(peer-to-peer)复制,多版本(multi-copy)复制或随处修改(updateanywhere)复制,指的是两个复制结点之间可以互相复制,复制结点既是源结点也是目标结点。
源结点和目标结点上的复制对象都是可读可写的。
在分布式环境下可能对同一复制对象同时进行修改,所以在理论上存在冲突的可能性,因此双向复制中的一个重要问题就是如何检测预防和解决复制中的冲突。
双向复制比单向复制更加复杂,实现难度也较大,但应用的范围要更广泛一些,在移动环境、动态环境等场合下大多采用这种复制方式。
同步复制又称为急切(eager)复制,是在一个原子事务中同时更新所有的复制结点,同步复制可以进行序列化操作,但是在交互过程中需要更多的消息交互,从而降低了复制性能,也增加了事务执行的响应时间。
同步复制不适合移动应用场合,因为移动设备不可能保持实时的连接,通常采用另一种复制方法异步复制。
异步复制又称为懒惰(lazy)复制,是在本地事务提交以后再将本地数据的变更反映到其他复制结点上,这种方式不需要实时的连接,可以很好的提高复制的性能,但异步复制的一个问题是在复制结点中存在“脏”数据,当两个事务在不同节点读和写数据时,就无法保证事务的序列化,这种复制方式一般应用在对数据一致性要求不是很高的地方。
同步复制和异步复制的应用场合不同。
同步复制可以保证系统所有结点数据的实时一致性,对于银行此类系统一般采用同步复制方法。
异步复制无法保证数据的实时一致性,可以应用在移动设备数据复制,多级管理信息系统中。
2.3复制数据的类型
数据库复制需要在数据库之间传输数据记录,这些数据记录是数据库中记录的一种划分,这种划分与数据库中的记录存在一定的逻辑关系,按照这种逻辑关系把复制数据分为以下几种:
1.全划分:
复制数据为数据库中所有表中的所有记录。
数据库中记录的任意变化都需要进行复制操作。
2.水平划分:
复制数据只是表中的部分记录,只对满足复制条件的记录进行复制操作。
3.垂直划分:
复制数据只是记录的部分字段,不需要对全部改变的字段值进行复制操作。
4.水平垂直划分:
复制数据是水平划分和垂直划分的组合。
5.函数统计划分:
复制数据是对记录进行统计运算的结果。
复制数据的不同划分用于不同的场合。
对于缓存数据库或备份数据库一般采用全划分的方式,所有的数据都进行复制。
水平和垂直划分对数据进行了过滤操作,往往用在数据保密,分级管理方面,可以提高复制的效率,降低不必要的数据传输。
函数统计划分主要用在基础数据不全或者特定情况下不能传输基础数据而只能传输统计数据的情况下,这种方式可以大大的降低数据传输量,同时可以直接利用统计数据,而无需每次都通过基础数据来生成统计数据,提高了数据库的性能,满足了统计方面的需求。
复制数据按照传输数据的形式分为完整拷贝(fullcopy),增量修改(incremental-update),净变化(neatchange)三种。
完整拷贝方式:
源数据库中所有的记录都传送到目标数据库中。
完整拷贝的优点是实现起来简单容易,不占用额外资源,不需要进行冲突检测等方面的工作,但其缺点是效率较低,只能应用在初始化复制、崩溃恢复等场合。
增量修改方式,也称标量(scalable)方式:
在这种方式下需要将事务对数据的操作内容全部保存下来,传输的数据就是操作的完整序列。
增量修改的最大优点就是满足复制的单副本可串行性化。
这种方式能够提供详细的控制信息,适用于多种复制方式,但保存全部的操作序列需要较多的资源,设计通用的存储结构也较复杂。
净变化方式:
传输的数据为两次复制之间更新数据的净变化值。
这种方式需要记录上一次复制的状态,在下一次复制时将上次复制以来的所有变化数据从数据库中提取出来作为复制数据项。
净变化方式只传输改变的数据,因此传输的数据量是最小的,实现方法也较简单,可以明显的提高复制性能,但是这种方式不是以事务为依据对数据进行划分,所以不能用于同步复制,在数据复制的过程中也存在一定的问题。
2.4数据捕获技术
复制数据和数据捕获技术有一定的相关性,不同种的数据捕获技术在生成复制数据的能力方面上有所不同。
现在常用的数据捕获技术包括触发器法、快照法、控制表变化法等。
1.快照法
快照(snapshot)是在某一时刻将数据库中存储对象的状态存储下来,构成当前数据库的一个映像文件,将此映像文件作为复制数据,用来更新其他的数据库。
快照法只是在复制时进行一次全面扫描,实现简单,它不需依赖特别的机制,也不占用系统资源,在复制初始化和崩溃恢复时通常需要采用这种方式。
由于快照法生成完全拷贝的复制数据,因此效率很低,应用的范围也比较小。
Oracle和MSSQLServer数据库明确提供了基于快照的捕获方法。
一般的复制方案在初始化时往往也使用这种方法。
2.触发器法:
触发器是一种特殊类型的存储过程,当使用UPDATE、INSERT或DELETE对指定数据表中数据进行操作时,触发器就会生效,通过分析操作的相关信息,可以在触发器中定义复杂的业务规则。
触发器法就是通过捕获这些操作并将数据操作的信息保存到日志中或者直接进行复制操作。
如图3触发器数据捕捉方式所示。
触发器法避免了不必要的数据传输,克服了基于快照法的主要缺点,大大提高了效率,可以用于同步复制和双向复制。
但是触发器机制需要数据库系统的支持,并且为了支持不同的复制数据类型,复制方法需要设置不同的触发器脚本,给系统维护和变更带来了不便。
图3触发器数据捕捉方式
由于大型数据库系统基本上都提供了完善的触发器机制,因此大型数据库厂商提供的数据库复制方案往往都运用了这种捕获方法,如Oracle的对称复制(SymmetricReplication)综合应用了快照和触发器两种捕获方法。
3.控制表变化法
控制表变化(ControlTableChange)法就是创建一张包含复制源表的主键字段和一些控制信息字段的控制表,当复制表中的记录发生变化时,则修改控制表中相应关键字的记录,在控制信息字段中记录变化的情况,这一过程可以通过触发器,中间件来实现,复制数据可以根据控制表中记录的变化情况生成。
通过控制表变化法得到的复制数据是数据库的净变化,效率较高,由于只保存了主键信息和部分控制信息,所以在空间占用方面也较小。
控制表变化法可适用于除同步复制以外的各种复制形式。
上述的几种数据捕获方法各有优缺点,需要结合你的具体应用具体的选择。
2.5冲突检测
数据库复制采用不同的复制方式,复制不同类型的数据都会在复制中产生各种不同的冲突。
下面是几种常见的冲突。
1.表间冲突:
复制数据不能满足本地数据库表上定义的约束条件而造成的冲突。
进行复制数据设计时需要考虑表上定义的完整性约束,引用约束等,否则在进行数据复制时会因为这些约束无法导入数据。
净变化方式不满足单副本可串行化,在进行数据更新时需要更多的考虑表间冲突问题。
2.唯一性冲突:
发生在一个更新产生了一个违反主键或唯一性约束时。
不同的结点根据本地数据库规则设置数据,这时不合理的主键生成规则或者是错误的输入都有可能产生主键冲突或者是唯一性冲突。
3.更新冲突:
对于异步更新,本地数据的