基于WEB SERVICE的数据库同步系统的设计与实现—免费毕业设计论文_第1页
基于WEB SERVICE的数据库同步系统的设计与实现—免费毕业设计论文_第2页
基于WEB SERVICE的数据库同步系统的设计与实现—免费毕业设计论文_第3页
基于WEB SERVICE的数据库同步系统的设计与实现—免费毕业设计论文_第4页
基于WEB SERVICE的数据库同步系统的设计与实现—免费毕业设计论文_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业设计(论文)基于Web Service的数据库同步系统的设计与实现论文作者姓名:申请学位专业:申请学位类别:指导教师姓名职称:论文提交日期:基于Web Service的数据库同步系统的设计与实现摘 要结合当前流行的Web Service和ADO.NET技术构造了一个不受平台限制的异构数据库同步系统。实现了处于Internet上的Sql Server2000向Oracle 的单向同步功能,能够基于IP的平安身份验证功能,多个IP实现了净量数据的传输。对同步的配置信息采用XML存储,采用Windows应用程序界面化配置,操作方便、易懂。因为同步环境是对处于Internet上的异构数据库的实时同

2、步;在设计与开发中,重点关注异构数据库的同步以及数据传输的可靠性;探讨能实现可靠数据的同步,以及传输的高效性。介绍了实现系统的思路以及所需的关键技术。系统用到的相关技术有捕获技术Windows 托盘效劳、多线程处理、以及网络消息机制、多IP同步、同步IP权限验证、同步表名及字段以及字段类型的可配置、异构数据类型的转换、Web Service等。关键词:Web Service;异构数据库;同步;ADO.NET; The Design and Implementation of Database Synchronization System Based on Web Service Abstrac

3、tWe can construct the Heterogeneous database synchronous system using Web Service. It has realized the function of one-way synchronous from SQL Server2000 to Oracle. It has some functions, the security authentication of IP, the data transmission of IP, the Synchronization configuration using XML sto

4、rage and the windows application program UI which can make this system be operated easily.Because the synchronous environment will be real-time synchronous for heterogeneous database on the Internet, in the design and implementation, this system has showed the synchronization of heterogeneous databa

5、se and data transmission reliability, achieving the synchronization of reliable data, the security methods of data transmission, and the efficiency transmission. It will display the ideas of realization and the necessary critical technologies. There are some relevant technologies that this system us

6、ed, for example, the capture technology, the windows tray service, multi-thread processing, and the network news mechanism, and so on. Key words: Web Service; Heterogeneous Database; Synchronization; ADO.NET;目 录论文总页数:24页 TOC o 1-3 h z u HYPERLINK l _Toc172959937 1引言 PAGEREF _Toc172959937 h 1 HYPERLI

7、NK l _Toc172959938 1.1课题背景 PAGEREF _Toc172959938 h 1 HYPERLINK l _Toc172959939 1.2国内外研究现状 PAGEREF _Toc172959939 h 1 HYPERLINK l _Toc172959940 1.3本课题研究的意义 PAGEREF _Toc172959940 h 2 HYPERLINK l _Toc172959941 1.4本课题的研究方法 PAGEREF _Toc172959941 h 2 HYPERLINK l _Toc172959942 2Web Service数据库同步原理 PAGEREF _T

8、oc172959942 h 3 HYPERLINK l _Toc172959943 2.1Web Service构成与特点 PAGEREF _Toc172959943 h 3 HYPERLINK l _Toc172959944 2.1.1Web Servcie的结构 PAGEREF _Toc172959944 h 3 HYPERLINK l _Toc172959945 2.1.2Web Servcie的关键技术协议 PAGEREF _Toc172959945 h 3 HYPERLINK l _Toc172959946 2.1.3Web Servcie的特点 PAGEREF _Toc172959

9、946 h 4 HYPERLINK l _Toc172959947 2.1.4Web Servcie平安 PAGEREF _Toc172959947 h 5 HYPERLINK l _Toc172959948 2.2数据库复制的分类 PAGEREF _Toc172959948 h 5 HYPERLINK l _Toc172959949 2.3复制数据的类型 PAGEREF _Toc172959949 h 6 HYPERLINK l _Toc172959950 2.4数据捕获技术 PAGEREF _Toc172959950 h 7 HYPERLINK l _Toc172959951 2.5冲突检

10、测 PAGEREF _Toc172959951 h 8 HYPERLINK l _Toc172959952 3需求分析 PAGEREF _Toc172959952 h 9 HYPERLINK l _Toc172959953 3.1同步环境 PAGEREF _Toc172959953 h 9 HYPERLINK l _Toc172959954 3.2功能需求 PAGEREF _Toc172959954 h 9 HYPERLINK l _Toc172959955 3.3性能需求 PAGEREF _Toc172959955 h 10 HYPERLINK l _Toc172959956 3.4输入输出

11、要求 PAGEREF _Toc172959956 h 10 HYPERLINK l _Toc172959957 3.5运行需求 PAGEREF _Toc172959957 h 10 HYPERLINK l _Toc172959958 4方案设计 PAGEREF _Toc172959958 h 11 HYPERLINK l _Toc172959959 4.1数据库同步复制模型 PAGEREF _Toc172959959 h 11 HYPERLINK l _Toc172959960 4.2数据库设计 PAGEREF _Toc172959960 h 11 HYPERLINK l _Toc172959

12、961 4.2.1源结点Sql Server 2000表设计 PAGEREF _Toc172959961 h 11 HYPERLINK l _Toc172959962 4.2.2目的结点Oracle表设计 PAGEREF _Toc172959962 h 12 HYPERLINK l _Toc172959963 4.3模块设计 PAGEREF _Toc172959963 h 13 HYPERLINK l _Toc172959964 4.3.1数据捕获局部 PAGEREF _Toc172959964 h 13 HYPERLINK l _Toc172959965 4.3.2同步局部 PAGEREF

13、_Toc172959965 h 13 HYPERLINK l _Toc172959966 4.3.3冲突检测处理局部 PAGEREF _Toc172959966 h 16 HYPERLINK l _Toc172959967 5代码实现 PAGEREF _Toc172959967 h 16 HYPERLINK l _Toc172959968 5.1开发环境 PAGEREF _Toc172959968 h 16 HYPERLINK l _Toc172959969 5.2关键代码详解。 PAGEREF _Toc172959969 h 16 HYPERLINK l _Toc172959970 5.2.

14、1数据捕获局部 PAGEREF _Toc172959970 h 16 HYPERLINK l _Toc172959971 5.2.2同步局部 PAGEREF _Toc172959971 h 17 HYPERLINK l _Toc172959972 6测试 PAGEREF _Toc172959972 h 19 HYPERLINK l _Toc172959973 6.1功能测试 PAGEREF _Toc172959973 h 19 HYPERLINK l _Toc172959974 6.2性能测试 PAGEREF _Toc172959974 h 20 HYPERLINK l _Toc1729599

15、75 结 论 PAGEREF _Toc172959975 h 21 HYPERLINK l _Toc172959976 参考文献 PAGEREF _Toc172959976 h 21 HYPERLINK l _Toc172959977 致 谢 PAGEREF _Toc172959977 h 23 HYPERLINK l _Toc172959978 声 明 PAGEREF _Toc172959978 h 24引言 课题背景随着信息化建设的深入,企业和政府如何将己有的“信息孤岛连通起来,实现信息的集成与共享是当前需要解决的一个关键问题。特别是企业和政府部门多数采用层次管理摸式,各个部门、分支机构可

16、能处于Internet上的不同区域,上下级机构之间需要进行大量的数据汇总与分发,实现整个企业或政府部门的数据集成。这种数据集成是从一个或多个数据库中抽取数据,经过远程传输处理后再加载到另一个数据库中。各分支机构数据库系统又包括异构的与同构的,这里的异构可以是操作系统的异构,可以是数据库管理系统的异构,也可以是数据库内部表结构的异构。然而,分布式数据库系统既要提供局部自治又要实现全局控制,给数据的同步带来了很大的挑战性。如何在不同组织之间、不同类型、不同平台的数据库系统之间进行数据同步工作,是数据库领域一个研究方向。特别是对于异构的情况。Web Service的出现使异构数据库同步的情况变得较为

17、容易实现,因为它是一种完全的无语言相关性、无平台相关性、无对象相关性的模型。非常适合于Internet上的数据集成。 国内外研究现状国外对数据集成的研究比拟早,许多数据库系统提供了专门的数据转换集成工具。如SQL Server 2000的DTS, Oracle的SQL* Loader, IBM的Visual Warehouse等。另外,还有一些第三方软件开发商也推出一些产品,例如:Ascential Software公司的DataStage, Applied Database Technology公司的DataMapper, Dataflux公司的SmartScurb和Data Junctio

18、n公司开发的析取包等。这些数据库附带的、第三方公司开发的数据集成工具对于结构化数据在功能上可以说已经根本上能满足一般的要求。而对于数据库研究组织来说,不少研究小组针对数据集成中一些重要的技术难点展开研究工作,例如集成模型,数据集成的通用性,数据集成的构件化,数据转换的技术,数据转换规那么的制订,数据同步策略等等。异构数据同步方法的研究现状:集成数据的质量是整个系统的关键点,而保证源数据和目标数据库的数据同步那么是保证数据质量的前提,特别是在目前分布式异步数据集成的环境下,减少数据传输过程中的冗余量,实现数据同步的高效性和增量报送成为数据同步的目标。J.Hammer教授讨论了数据同步的两种可能方

19、法;如果数据源是功能完备的数据库系统,那么可以通过定义一组触发器,或者通过读取日志的方式来检测分析数据源的变化实现数据同步。该方法的可行性及实现依赖于具体的数据源类型,比方文本型数据源就不支持日志或触发器机制。而对于任意类型的数据源,都可以采用基于快照差分的方法实现数据同步:每隔一定时期重新生成基表的快照,同上一次的旧快照作差分计算,得到反映基表自上次到本次生成快照以来变化的增量数据。增量数据中可以只包含数据源中被删除或插入的元组 W.J.Labio综述了可应用于快照差分的算法,包括几种常用算法:Sort Merge算法、Partition Hash算法、Window算法,和一类新提出的基于压

20、缩策略的算法,并对所有这些算法作了详尽的分析。在增量数据更新方面,目前有五种技术可以到达数据增量更新的要求。第一种方法是扫描已经打上时间戳的数据,当一个应用对记录的最后一次修改打上时间戳时,扫描程序就根据时间戳得到增量数据,但必须原业务系统存在时间戳字段:第二种方法是扫描增量文件,增量文件仅记录应用中所发生的变化,有了增量文件,扫描的过程就会高效,增量文件的生成可以改造应用来完成,如触发器:第三种方法就是扫描日志文件或审计文件,但必须使用某种技术手段作为日志文件内容输出的接口,常见的使用Sybase的工具RepliactionServer来识别:第四种方法就是修改以往的应用程序代码,使这些程序

21、能够数据集成;第五种方法就是将前后两个快照文件进行比对。目前,国内大局部应用系统采用针对系统本身设计开发的数据集成工具,有的甚至用手工方法实现数据抽取、转换和加载。因此当目标数据库结构发生变化或者重建时,需要重新编程实现该过程。本课题研究的意义分布式数据库大量的应用,各种应用之间又有很多的交叉性。数据库同步就显得很重要;特别是异构的情况,然而异构数据库之间的同步不能应用数据库自带的同步工具。另一方面,由于两者分布在Internet中,防火墙的存在使得同步无法使用特定端口通讯。但因为大多数企业会开放用于 的80端口,因而借助Web Service可以完成两者的通讯。数据表要进行的操作,以XML形

22、式编码作为消息内容。借助XML的无语言相关性、无平台相关性、无对象相关性来实现异构数据库的同步,也可应用结构相同的分布式数据库上。本课题的研究方法本同步系统采用Web Service 作为同步数据的传输,使用触发器实时捕获数据库的增量记录,并保存到临时缓冲表,以便供同步到目标数据库,然后采用Windows效劳实时的监视目标IP是否有需要同步的数据,如果存在目标IP同步的数据,就向此IP发送同步消息,另外一端收到同步消息就调用Web Servcie方法获取同步的数据,写入到本地,写入成功后向效劳器方发送确认消息;效劳器收到确认后,将此IP同步了的数据标识为已读。当所有主机同步完成,就物理上删除被

23、同步了的数据。先实现Sql Server 2000同步到 Oracle,设计时考虑到多个IP,多个不同异构数据的情况。 Web Service数据库同步原理 Web Service构成与特点Web Servcie的结构效劳提供者效劳注册中心效劳请求者效劳效劳描述效劳描述Web Service由效劳提供者、效劳注册中心和效劳请求者三角色以及发布、查找和绑定三个操作组成。三个角色的交互完成效劳。交互涉及发布、查找和绑定操作。图1描述了角色调用操作完成效劳的结构。效劳提供者管理可以通过网络访问Web Service的一个实例。效劳提供者定义Web Service的效劳描述,并把它发布到效劳请求或效劳

24、注册中心。效劳请求者使用查找操作来从本地或效劳注册中心检索效劳描述。然后使用效劳描述与效劳提供者进行绑定并调用Web Service实现或同它交互。效劳提供者和效劳请求者角色是逻辑结构,因而效劳可以表现两种特性。图1展示了这些操作、提供这些操作的组件及它们之间的交互。 发布 绑定 查找绑定查找图1 Web Service的结构Web Servcie的关键技术协议Web Service中的主要效劳协议包括:XML、SOAP、WSDL、UDDI,它们构成一个互操作的协议栈。如图2所示UDDI通用发现、描述、继承WSDLWeb Service描述语言XML、 SOAP简单对象访问协议图2 Web S

25、ervice的协议栈XML(eXtensible Markup Language):可扩展的置标语言,是W3C组织于1998年2月发布的标准。XML严格地定义可移植的结构化数据,并对数据赋予上下文相关功能。Web效劳完全基于XML技术。效劳提供者和效劳请求者均使用XML传递消息和数据流。SOAP(Simple Object Access Protocol):简单对象访问协议,SOAP完全独立于任何厂商,可以相对于任何编程语言、对象模型、操作系统和平台独立实现。它为在分布式环境下使用XML、对等地交换结构化和类型化的信息提供了一个简单且轻量级的机制。 作为低层通信协议实现了SOAP把基于 的We

26、b技术与XML的灵活性和扩展性结合在一起,并有助于实现异构平台之间的互相操作性,从而使其扩展性结合在一起,并有助于实现异构平台之间的互操作性,从而使其扩展到Internet上的分布式计算和数据集成。 作为一种普遍接受的协议被用于任何地方及任何平台上,XML也同 一样得到普遍应用,由于XML是文本格式文件,所以SOAP实质上是一个基于文本的协议,它没有对平台和环境的依赖性。WSDL (Web Servcie Description Language):Web效劳描述语言,定义了一个基于XML的组件描述标准机制,用来描述Web效劳的相关信息,它把网络效劳定义成一个能交换消息的通信端点集。用WSDL

27、定义的一套XML语法描述的网络效劳的方式,使用户端的程序要知道Web效劳提供了什么效劳可以进行调用。UDDI (Universal Description Discovery and Integration):通用描述、发现和集成协议,是一套基于Web的、分布式的 、为Web效劳提供信息注册的实现标准标准,是一个跨产业、跨平台的 开发性架构。可帮助Web效劳提供者在Internet上公布自己推出的Web效劳。Web Servcie的特点 Web Service技术的主要目标就是在现有各种异种平台的根底上,构筑一个通用的平台无关、语言无关的技术层。各种不同平台之上的应用依靠这个技术层来实施彼此的

28、连接和集成,从而让使用不同系统和不同编程语言的人们能够相互交流和分享数据。Web Service并不是构件技术开展中的一个革命性改变。而只是一种较大的进展。它是对象构件技术在Internet上的延伸,是一种部署在Web上的对象构件。是封装成单个实体并发布到网络上供其它程序使用的功能集合,它不会完全取代现在的构件技术。Web Servcie平安 考虑的平安仅仅是Web Service在交换数据中的平安。因此,设定的平安目标是: .客户端确认效劳器的身份; .效劳器来确认客户端的身份; .保证传输的数据在传输过程中不被监听; .保证传输的数据在传输过程中不被篡改。数据库复制的分类数据库复制有不同的

29、分类方法,不同的分类采用的复制方法往往不同。按照复制的方向划分为单向(unidirectional)复制和双向(hi-directional)复制,按照传播更新的方式划分为同步(synchronous)复制和异步(asynchronous)复制。单向复制,也称主从式(master/slave或primary/secondary)复制或主版本(master copy)复制,指的是两个复制结点之间只从一个结点向另一个结点进行复制,源结点保存复制对象,目标结点保存复制对象的副本,源结点中数据对象具有可读可写的特性,目标结点中的数据对象只具有可读的特性,修改数据对象需要在源结点上进行,从而预防了更新冲

30、突的发生。这种复制方式比拟简单,应用范围也比拟广。双向复制也称对等式(peer-to-peer)复制,多版本(multi-copy)复制或随处修改(update anywhere)复制,指的是两个复制结点之间可以互相复制,复制结点既是源结点也是目标结点。源结点和目标结点上的复制对象都是可读可写的。在分布式环境下可能对同一复制对象同时进行修改,所以在理论上存在冲突的可能性,因此双向复制中的一个重要问题就是如何检测预防和解决复制中的冲突。双向复制比单向复制更加复杂,实现难度也较大,但应用的范围要更广泛一些,在移动环境、动态环境等场合下大多采用这种复制方式。同步复制又称为急迫(eager)复制,是在

31、一个原子事务中同时更新所有的复制结点,同步复制可以进行序列化操作,但是在交互过程中需要更多的消息交互,从而降低了复制性能,也增加了事务执行的响应时间。同步复制不适合移动应用场合,因为移动设备不可能保持实时的连接,通常采用另一种复制方法异步复制。异步复制又称为懒惰(lazy)复制,是在本地事务提交以后再将本地数据的变更反映到其他复制结点上,这种方式不需要实时的连接,可以很好的提高复制的性能,但异步复制的一个问题是在复制结点中存在“脏数据,当两个事务在不同节点读和写数据时,就无法保证事务的序列化,这种复制方式一般应用在对数据一致性要求不是很高的地方。同步复制和异步复制的应用场合不同。同步复制可以保

32、证系统所有结点数据的实时一致性,对于银行此类系统一般采用同步复制方法。异步复制无法保证数据的实时一致性,可以应用在移动设备数据复制,多级管理信息系统中。复制数据的类型数据库复制需要在数据库之间传输数据记录,这些数据记录是数据库中记录的一种划分,这种划分与数据库中的记录存在一定的逻辑关系,按照这种逻辑关系把复制数据分为以下几种:全划分:复制数据为数据库中所有表中的所有记录。数据库中记录的任意变化都需要进行复制操作。水平划分:复制数据只是表中的局部记录,只对满足复制条件的记录进行复制操作。垂直划分:复制数据只是记录的局部字段,不需要对全部改变的字段值进行复制操作。水平垂直划分:复制数据是水平划分和

33、垂直划分的组合。函数统方案分:复制数据是对记录进行统计运算的结果。复制数据的不同划分用于不同的场合。对于缓存数据库或备份数据库一般采用全划分的方式,所有的数据都进行复制。水平和垂直划分对数据进行了过滤操作,往往用在数据保密,分级管理方面,可以提高复制的效率,降低不必要的数据传输。函数统方案分主要用在根底数据不全或者特定情况下不能传输根底数据而只能传输统计数据的情况下,这种方式可以大大的降低数据传输量,同时可以直接利用统计数据,而无需每次都通过根底数据来生成统计数据,提高了数据库的性能,满足了统计方面的需求。复制数据按照传输数据的形式分为完整拷贝(full copy),增量修改(incremen

34、tal-update),净变化(neat change)三种。 完整拷贝方式:源数据库中所有的记录都传送到目标数据库中。完整拷贝的优点是实现起来简单容易,不占用额外资源,不需要进行冲突检测等方面的工作,但其缺点是效率较低,只能应用在初始化复制、崩溃恢复等场合。增量修改方式,也称标量(scalable)方式:在这种方式下需要将事务对数据的操作内容全部保存下来,传输的数据就是操作的完整序列。增量修改的最大优点就是满足复制的单副本可串行性化。这种方式能够提供详细的控制信息,适用于多种复制方式,但保存全部的操作序列需要较多的资源,设计通用的存储结构也较复杂。净变化方式:传输的数据为两次复制之间更新数据

35、的净变化值。这种方式需要记录上一次复制的状态,在下一次复制时将上次复制以来的所有变化数据从数据库中提取出来作为复制数据项。净变化方式只传输改变的数据,因此传输的数据量是最小的,实现方法也较简单,可以明显的提高复制性能,但是这种方式不是以事务为依据对数据进行划分,所以不能用于同步复制,在数据复制的过程中也存在一定的问题。数据捕获技术复制数据和数据捕获技术有一定的相关性,不同种的数据捕获技术在生成复制数据的能力方面上有所不同。现在常用的数据捕获技术包括触发器法、快照法、控制表变化法等。快照法快照(snapshot)是在某一时刻将数据库中存储对象的状态存储下来,构成当前数据库的一个映像文件,将此映像

36、文件作为复制数据,用来更新其他的数据库。 快照法只是在复制时进行一次全面扫描,实现简单,它不需依赖特别的机制,也不占用系统资源,在复制初始化和崩溃恢复时通常需要采用这种方式。由于快照法生成完全拷贝的复制数据,因此效率很低,应用的范围也比拟小。Oracle和MS SQL Server数据库明确提供了基于快照的捕获方法。一般的复制方案在初始化时往往也使用这种方法。触发器法:触发器是一种特殊类型的存储过程,当使用UPDATE、INSERT或DELETE对指定数据表中数据进行操作时,触发器就会生效,通过分析操作的相关信息,可以在触发器中定义复杂的业务规那么。触发器法就是通过捕获这些操作并将数据操作的信

37、息保存到日志中或者直接进行复制操作。如图3触发器数据捕捉方式所示。 触发器法防止了不必要的数据传输,克服了基于快照法的主要缺点,大大提高了效率,可以用于同步复制和双向复制。但是触发器机制需要数据库系统的支持,并且为了支持不同的复制数据类型,复制方法需要设置不同的触发器脚本,给系统维护和变更带来了不便。图3触发器数据捕捉方式由于大型数据库系统根本上都提供了完善的触发器机制,因此大型数据库厂商提供的数据库复制方案往往都运用了这种捕获方法,如Oracle的对称复制(Symmetric Replication)综合应用了快照和触发器两种捕获方法。控制表变化法控制表变化(Control Table Ch

38、ange)法就是创立一张包含复制源表的主键字段和一些控制信息字段的控制表,当复制表中的记录发生变化时,那么修改控制表中相应关键字的记录,在控制信息字段中记录变化的情况,这一过程可以通过触发器,中间件来实现,复制数据可以根据控制表中记录的变化情况生成。通过控制表变化法得到的复制数据是数据库的净变化,效率较高,由于只保存了主键信息和局部控制信息,所以在空间占用方面也较小。控制表变化法可适用于除同步复制以外的各种复制形式。上述的几种数据捕获方法各有优缺点,需要结合你的具体应用具体的选择。冲突检测数据库复制采用不同的复制方式,复制不同类型的数据都会在复制中产生各种不同的冲突。下面是几种常见的冲突。表间

39、冲突:复制数据不能满足本地数据库表上定义的约束条件而造成的冲突。进行复制数据设计时需要考虑表上定义的完整性约束,引用约束等,否那么在进行数据复制时会因为这些约束无法导入数据。净变化方式不满足单副本可串行化,在进行数据更新时需要更多的考虑表间冲突问题。唯一性冲突:发生在一个更新产生了一个违反主键或唯一性约束时。不同的结点根据本地数据库规那么设置数据,这时不合理的主键生成规那么或者是错误的输入都有可能产生主键冲突或者是唯一性冲突。更新冲突:对于异步更新,本地数据的更新和远程数据的更新存在时间差,在这种情况下两个或多个复制站点可能同时更新一条记录,如果更新同一条记录的相关字段就会存在列级冲突。删除冲

40、突:发生在一个结点更新另一个结点已删除的一行时,或者同一条记录在不同的复制站点被删除时。需求分析为了明确系统的应到达的目标,确定系统必须做什么,清楚地理解所要解决的问题。在下面描述软件的功能和性能的需求。确定了软件设计的约束。同步环境本系统的同步环境如图4:图4 同步环境Oracle 9i,mySQL等不同类型的数据库通过Internet来获取SQL Server 2000的数据,通信的两端都存在防火墙,提供了一台Web效劳器用于发布Web Service。功能需求本设计要实现的功能:能够使处于Internet 上的异构数据库的单向同步功能,初步先实现Sql Server2000向Oracle

41、 与的同步,需要考虑其它数据库的情况比方my Sql等。同步数据需要可靠的传输,保证数据能够准确、完全的传输到被同步的一方。同步需要一定平安性,能够按照进行同步IP或那么物理地址来验证同步身份。由于数据在Internet上传输,必须保证同步数据的传输开销小,平安等。能够实现不同主机的多个数据库同时同步功能。对实时性同步、定期同步可配置,既可以选择实时同步、手动同步或那么按需要同步的数据量来同步。同步信息可以配置性。同步信息包括:同步的字段、字段类型、同步的表、分配了权限的同步主机等。同步的数据类型能够是不同的类型,比方数值型向字符型的同步等。能够对同步的某个字段做特殊的处理后再同步。既是能够实

42、现多个字段合并为一个字段,或那么一个、多个字段分解为更多个字段。同步的配置界面化,操作方便、易使用。对网络连接断开后能够保证同步数据的不丧失,网络连上后能接着继续同步。对异常的信息提示尽量多,比方配置系统时对不正确的配置及时提示,以便产生同步的异常。当是多个数据库同步到一个数据库时需要解决同步冲突。系统需要有一定扩展性。性能需求精度:效劳器端的增量数据能够准确的同步到客户端,不应该存在数据被截断的情况。数据传输过程中对数据丧失的情况,应该不影响同步数据的完整性。时间特性要求:同步操作对其它正常的数据库应用,无明显性能降低现象。对配置了实时性同步的,同步延迟应小于1分钟(除网络断开等异常情况)。

43、灵活性同步的字段可动态配置,当添加、修改字段后可以通过简单的配置来实现修改后的同步。输入输出要求输入:效劳器端数据的改变。处理:字段合并,分解或者是一定的运算加工。输出:将处理了的数据更新到客户端。运行需求硬件环境需求:客户端、效劳器端:专用数据库效劳器,P4以上,512M以上内存,80G以上硬盘;Internet网络连接。软件环境:源端:Windows 2003/XP 操作系统、Sql Server 2000数据库、IIS 5.0、.NET Framework1.1。目标端: Windows 2003/XP 操作系统、数据库环境、.NET Framework1.1。方案设计结合前面的同步原理

44、,以及需求的介绍,下面给出同步的方案设计:数据库同步复制模型模型包括源结点和目标结点两大块。源结点模块包括:数据库捕获模块、数据生成模块、Web Service、同步控制模块、定时器、配置模块等组成。目标结点包括:数据库同步控制模块、数据导入模块、配置模块。如图 5所示。图 5 系统模块数据库设计系统包括源端数据库设计以及目的端数据库设计。源结点Sql Server 2000表设计E-R图如图6图 6 E-R图数据表如表1:表1:tLJ数据表逻辑字段名物理字段名字段类型是否为空主键外键说 明编号IintNOT NULLYesNo自增加姓名NameVarchar(20)NOT NULLNoNo描

45、述DesVARCHAR(1000)NULLNoNo年龄AgeintNULLNoNo控制表如表2、表3、表4、表5:表2 同步缓冲临时表:tTemp逻辑字段名物理字段名字段类型是否为空主键外键说 明编号IintNOT NULLYesNo动作标识SigntinyintnullNoNo插入1,删除2,更新3数据表名tableNameVARCHAR(20)NULLNoNo数据表的表名数据记录主键infoIDintNot nullnono数据表的记录主键写入时间InsertDateDateTimeNULLNoNo表3 读取状态表: tReadState逻辑字段名物理字段名字段类型是否为空主键外键说 明编

46、号IintNOT NULLYesNo读取了数据的IPIPtinyintnullNoYestIPConfig.I 的外键同步缓冲IDinfoIDintNot nullnoYes数据表的记录表4同步IP配置表: tIPConfig逻辑字段名物理字段名字段类型是否为空主键外键说 明编号IintNOT NULLYesNo自增加要同步的IPIPVarcahr(14)nullNoNo开启状态isOpenintNot nullnono上次读取时间ReadDateDatetimeNot nullNono表5 读取缓冲表:tReadTemp逻辑字段名物理字段名字段类型是否为空主键外键说 明编号IintNOT N

47、ULLYesNo自增加读取ipIPtinyintnullNoNo与tIPConfig.I 关联同步缓冲表编号InfoIdintNot nullnoNo同步缓冲表编号读取时间CreateDateDatetimeNot nullNoNo读取秩序号ReadNointNot nullNoNo目的结点Oracle表设计表6: tLJ逻辑字段名物理字段名字段类型是否为空主键外键说 明编号INumber(22)NOT NULLYesNo姓名NameVarchar2(50)NOT NULLNoNo描述DesVARCHAR2(1000)NULLNoNo年龄AgeNumber(22)NULLNoNo表7: Cop

48、yT1逻辑字段名物理字段名字段类型是否为空主键外键说 明编号IVARCHAR2(50)NOT NULLnoNo姓名, 年龄NameAgeVarcahr2(100) NULLNoNo年龄DesVarcahr2(1000)NOT NULLNoNo模块设计该模型按照功能划分为三个局部,一是数据捕获部份,二是同步部份,三是冲突检测处理部份(如图7)。冲突检测捕获同步图 7 模块图数据捕获局部包含数据捕获模块和控制变化表两个局部。数据捕获模块采用基于触发器的方式进行数据的捕获。控制表用来保存数据库操作的历史记录,其根本思想来源于控制表变化法,即在这些表中记录每次更新记录的主键信息、表名等,这种数据捕获方

49、式获得的是复制数据的净变化,可以大大的降低网络传输量,提高复制性能。控制变化表的格式如上源结点Sql Server 2000表设计。同步缓冲临时表tTemp:用于记录数据表记录主键、数据表记录表名,记录写入时间等。当数据表有被修改、添加、删除时触发器就向此表写入更新记录id等信息。如果是更新sign字段的值为3 ,删除时sign值为2,插入时sign值为1,当某条记录在某一时间段内被重复操作了屡次时sign字段的值始终保存追后一次的操作。同步局部包括定时器、同步控制模块、数据导入、Web Servcie、验证模块。定时器定时器包含于一个Windows 效劳中,每隔一定的时间检测IP配置表里被开

50、启IP是否有同步的数据。如果存在同步的数据就启动同步控制模块。通过IP配置表可以授权某个主机来获取同步数据。从而起到一定的平安性与高性能。同步控制模块:在源结点端在源节点端当定时器通过验证模块检查到某个IP有要同步的数据时,就启动一个效劳线程,并向这个IP的特定端口发送Socket消息,并等待这个IP返回同步成功确实认消息。当收到确认消息后(此确认消息包含一个同步批次号也就是“读取缓冲表:tReadTemp中的“读取秩序号:ReadNo ,“读取缓冲表是在目标端读取数据后写入的,在后面将要介绍到),然后源端控制模块操纵同步控制表将读取了的记录关键字以及目的端IP写入“读取状态表: tReadS

51、tate表示本批次记录的这个目的端已经读取、下次不在读取。当所有的配置表里的目标端都完成同步后,就物理上删除控制表里的相关记录。在目标端目的端在启动了以后就一直监听源端是否有同步信号(监听的源端IP以及端口能够通过读取本地的XML配置文件得到),当监听到同步信号,创立一个线程来启动“数据导入模块,在“数据导入模块处理完毕后向源端发送确认消息,此确认消息包含“数据导入模块导入成功与否的标识,如果正常导入此消息就是同步的序号也就是上面提到的同步批次号。数据导入与本模块相管的XML配置文件如下: 其中每个结点T表示需要与源端同步的一张表,name属性给出了同步表的对应关系,结点T的子结点fields

52、记录了同步表中对应的字段名,字段类型,字段大小等。通过此配置文件能够对全划分、水平划分、垂直划分、水平垂直划分、函数统方案分等不同复制数据类型的支持。开始执行时,就先遍历此XML文档,有多少个T结点就循环多少次来实现从源端提供的Web Service读取数据,读取数据时需要传入要读取的表名以及目的端的IP,然后根据配置文件中的字段对应关系,经过类型转换处理、合并分解处理后,写入到本地。写入到本地时由于在源端,对数据库记录的操作都记录在控制变化表中,复制数据就是依据这些表加以确定,但从控制变化表中获得的是数据的净变化,无法保证单副本可串行化,在进行数据导入时就会由于数据库中定义的外键约束出现表间

53、冲突,一种解决的方式就是在导入数据时临时禁用数据库的外键检查功能。大型的数据库系统一般都提供了禁用外键检查的功能,如在MS SQL Server 2000中可以使用通过命令在进行导入时临时禁用数据库的外键检查功能,在完成以后再恢复外键检查,但是在恢复外键检查功能时,数据库会自动对整个数据库进行一遍外键检查,这样会带来比拟大的性能问题,特别是在数据量比拟大时这种开销往往无法接受,而且这种检查是完全没有必要的。除了临时禁用外键检查功能以外,还有一种方式是完全取消数据库系统提供的外键检查功能,即不在数据表上定义外键约束,而是通过触发器等方式实现外键检查。在进行数据导入时可以设置标志位说明不进行外键检

54、查,这样就可以暂时忽略外键约束,但每次外键检查都需要查询外键表,这种实现方式会比数据库本身提供的外键检查付出更大的代价,因此提出两步法生成净变化方式下无外键冲突的复制数据。第一步是生成无外键值的操作序列SN,第二步生成只包含外键值的更新序列SU。在导入序列SN时需要保证外键字段允许为空,如果根据业务规那么允许外键字段为空,那么就不需要做额外的工作,否那么需要在数据库设计时将外键字段设置允许空,然后通过触发器等方式在数据更新时进行检查,这种方式只需要检查值是否为空,代价要远远小于检查外键表。根据两步法生成同步数据的步骤是:从Web Servcie 得到的数据中别离出外键,分别用两个虚拟表按顺序保

55、存外键置为空的数据T1与仅外键与主键T2。然后写入T1。根据T2中的主键更新外键数据。Web Service提供一个可供Internet 上调用的数据发布方法,发布的数据是以XML序列化的形式传输的、便于不同平台的互相操作。通过传入ip、表名控制读取同步的数据此ip应该读的数据,并且将读取了的数据主键的信息保存到“读取缓冲表:tReadTemp,如果是在配置表里无配置那么不能读取数据。读取步骤:目的方调用Web Service 方法传入目的IP,要同步的表名。Web Servcie根据传入的参数,先判断是否是系统的“合法用户,如果是合法的身份就先得到本次读取的编号,此读取编号是“读取缓冲表:t

56、ReadTemp表中的“读取秩序号:ReadNo的最大值加1得到的。供以后同步控制用。然后根据读取“同步缓冲临时表:tTemp表中记录的数据表里的主键来读取数据。读取的数据是在“读取状态表: tReadState表里无本IP记录的记录。将上步读了的数据保存到“ 读取缓冲表:tReadTemp里,如果在tReadTemp表里存在该信息主键就更新这条记录的读取时间和读取秩序号为当前读取时间和读取秩序号。验证模块验证模块应用在源端的同步控制模块和目的端的数据导入模块,主要完成控制特定IP来同步数据,提高平安性与性能。冲突检测处理局部异步复制存在的一个主要问题就是冲突问题,前面已经说明了常见的几种冲突

57、,在上面的同步局部也通过设计防止了其中的一种冲突,但对于其他冲突还需要采用其他的方法进行解决。冲突检测和处理局部就是在数据导入过程中检测各种可能的冲突。代码实现开发环境开发平台的选择:本系统的开发平台选择微软公司的 .NET,开发工具采用ASP.NET。.NET是Microsoft面向XML Web效劳的平台,由框架、Web效劳、.NET企业效劳器等几局部组成,提供涉及面较广、功能较全面的解决方案。XML Web 效劳使应用程序能够共享数据,可以跨平台和操作系统。数据库选择:根据需求分析选择了Sql Server 2000+Oracle 9i的组合。关键代码详解。数据捕获局部这部份的功能就是动

58、态的捕获数据表里数据的变化,其主要的实现就是在数据表上定义一个触发器用于记录本表的净变化。此触发器如下:ALTER TRIGGER tlj_TriggerON dbo.tlj -数据表FOR INSERT, UPDATE, DELETE ASbeginIF EXISTS(select * from deleted) and exists(select * from inserted)begin -更新delete from dbo.tTemp where infoID in(select I from inserted) and TableName=dbo.tljinsert into dbo

59、.tTemp(infoID,TableName,Sign) select I,dbo.tlj,3 from insertedendelse if not EXISTS(select * from deleted) and exists(select * from inserted)begin -插入insert into dbo.tTemp(infoID,TableName,Sign) select I,dbo.tlj,1 from insertedendelse if EXISTS(select * from deleted) and not exists(select * from ins

60、erted)begin -删除delete from dbo.tTemp where infoID in(select I from deleted) and TableName=dbo.tljinsert into dbo.tTemp(infoID,TableName,Sign) select I,dbo.tlj,2 from deletedendend当更新、删除数据表时,先根据数据表关键字与数据表名称删除“同步缓冲临时表:tTemp里有的记录,然后将被修改、删除的数据表关键字、表名、修改删除的标识写入tTemp表。当向数据表新增加记录时只要写入tTemp表即可。同步局部同步控制模块源端:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论