




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕毕 业业 设设 计计( 论论 文文)基于基于 WebWeb ServiceService 的数据库同步系统的设计与实现的数据库同步系统的设计与实现论文作者姓名:论文作者姓名:申请学位专业:申请学位专业:申请学位类别:申请学位类别:指导教师姓名(职称)指导教师姓名(职称):论文提交日期:论文提交日期:基于基于 WebWeb ServiceService 的数据库同步系统的设计与实现的数据库同步系统的设计与实现摘摘 要要结合当前流行的 Web Service 和 ADO.NET 技术构造了一个不受平台限制的异构数据库同步系统。实现了处于 Internet 上的 Sql Server2000 向
2、Oracle 的单向同步功能,能够基于 IP 的安全身份验证功能,多个 IP 实现了净量数据的传输。对同步的配置信息采用 XML 存储,采用 Windows 应用程序界面化配置,操作方便、易懂。因为同步环境是对处于 Internet 上的异构数据库的实时同步;在设计与开发中,重点关注异构数据库的同步以及数据传输的可靠性;探讨能实现可靠数据的同步,以及传输的高效性。介绍了实现系统的思路以及所需的关键技术。系统用到的相关技术有捕获技术 Windows 托盘服务、多线程处理、以及网络消息机制、多 IP 同步、同步 IP 权限验证、同步表名及字段以及字段类型的可配置、异构数据类型的转换、Web Ser
3、vice 等。关键词关键词:Web Service;异构数据库;同步;ADO.NET; The Design and Implementation of Database Synchronization System Based on Web Service AbstractWe can construct the Heterogeneous database synchronous system using Web Service. It has realized the function of one-way synchronous from SQL Server2000 to Oracl
4、e. It has some functions, the security authentication of IP, the data transmission of IP, the Synchronization configuration using XML storage and the windows application program UI which can make this system be operated easily.Because the synchronous environment will be real-time synchronous for het
5、erogeneous database on the Internet, in the design and implementation, this system has showed the synchronization of heterogeneous database and data transmission reliability, achieving the synchronization of reliable data, the security methods of data transmission, and the efficiency transmission. I
6、t will display the ideas of realization and the necessary critical technologies. There are some relevant technologies that this system used, for example, the capture technology, the windows tray service, multi-thread processing, and the network news mechanism, and so on. Key words: Web Service; Hete
7、rogeneous Database; Synchronization; ADO.NET;目目 录录论文总页数:24 页1引言 .11.1课题背景 .11.2国内外研究现状 .11.3本课题研究的意义 .21.4本课题的研究方法 .22WEB SERVICE 数据库同步原理.32.1WEB SERVICE构成与特点.32.1.1Web Servcie 的结构 .32.1.2Web Servcie 的关键技术-协议 .32.1.3Web Servcie 的特点 .42.1.4Web Servcie 安全 .52.2数据库复制的分类 .52.3复制数据的类型 .62.4数据捕获技术 .72.5冲突
8、检测 .83需求分析 .93.1同步环境 .93.2功能需求 .93.3性能需求 .103.4输入输出要求 .103.5运行需求 .104方案设计 .114.1数据库同步复制模型 .114.2数据库设计 .114.2.1源结点 Sql Server 2000 表设计.114.2.2目的结点 Oracle 表设计.124.3模块设计 .134.3.1数据捕获部分.134.3.2同步部分.134.3.3冲突检测处理部分.165代码实现 .165.1开发环境 .16第 1 页 共 24 页5.2关键代码详解。 .165.2.1数据捕获部分.165.2.2同步部分.176测试 .196.1功能测试 .
9、196.2性能测试 .20结 论 .21参考文献 .21致 谢 .23声 明 .24第 1 页 共 24 页1 1 引言引言1.11.1 课题背景课题背景随着信息化建设的深入,企业和政府如何将己有的“信息孤岛”连通起来,实现信息的集成与共享是当前需要解决的一个关键问题。特别是企业和政府部门多数采用层次管理摸式,各个部门、分支机构可能处于 Internet 上的不同区域,上下级机构之间需要进行大量的数据汇总与分发,实现整个企业或政府部门的数据集成。这种数据集成是从一个或多个数据库中抽取数据,经过远程传输处理后再加载到另一个数据库中。各分支机构数据库系统又包括异构的与同构的,这里的异构可以是操作系
10、统的异构,可以是数据库管理系统的异构,也可以是数据库内部表结构的异构。然而,分布式数据库系统既要提供局部自治又要实现全局控制,给数据的同步带来了很大的挑战性。如何在不同组织之间、不同类型、不同平台的数据库系统之间进行数据同步工作,是数据库领域一个研究方向。特别是对于异构的情况。Web Service 的出现使异构数据库同步的情况变得较为容易实现,因为它是一种完全的无语言相关性、无平台相关性、无对象相关性的模型。非常适合于 Internet 上的数据集成。1.21.2 国内外研究现状国内外研究现状国外对数据集成的研究比较早,许多数据库系统提供了专门的数据转换集成工具。如 SQL Server 2
11、000 的 DTS, Oracle 的 SQL* Loader, IBM 的 Visual Warehouse 等。另外,还有一些第三方软件开发商也推出一些产品,例如:Ascential Software 公司的 DataStage, Applied Database Technology 公司的 DataMapper, Dataflux 公司的 SmartScurb 和 Data Junction 公司开发的析取包等。这些数据库附带的、第三方公司开发的数据集成工具对于结构化数据在功能上可以说已经基本上能满足一般的要求。而对于数据库研究组织来说,不少研究小组针对数据集成中一些重要的技术难点展开
12、研究工作,例如集成模型,数据集成的通用性,数据集成的构件化,数据转换的技术,数据转换规则的制订,数据同步策略等等。异构数据同步方法的研究现状:集成数据的质量是整个系统的关键点,而保证源数据和目标数据库的数据同步则是保证数据质量的前提,特别是在目前分布式异步数据集成的环境下,减少数据传输过程中的冗余量,实现数据同步的高效性和增量报送成为数据同步的目标。J.Hammer 教授讨论了数据同步的两种可能方法;如果数据源是功能完备的数据库系统,则可以通过定义一组触发器,或者通过读取日志的方式来检测分析数据源的变化实现数据同步。该方法的可行性及实现依赖于具体的数第 2 页 共 24 页据源类型,比如文本型
13、数据源就不支持日志或触发器机制。而对于任意类型的数据源,都可以采用基于快照差分的方法实现数据同步:每隔一定时期重新生成基表的快照,同上一次的旧快照作差分计算,得到反映基表自上次到本次生成快照以来变化的增量数据。增量数据中可以只包含数据源中被删除或插入的元组 W.J.Labio 综述了可应用于快照差分的算法,包括几种常用算法:Sort Merge 算法、Partition Hash 算法、Window 算法,和一类新提出的基于压缩策略的算法,并对所有这些算法作了详尽的分析。在增量数据更新方面,目前有五种技术可以达到数据增量更新的要求。第一种方法是扫描已经打上时间戳的数据,当一个应用对记录的最后一
14、次修改打上时间戳时,扫描程序就根据时间戳得到增量数据,但必须原业务系统存在时间戳字段:第二种方法是扫描增量文件,增量文件仅记录应用中所发生的变化,有了增量文件,扫描的过程就会高效,增量文件的生成可以改造应用来完成,如触发器:第三种方法就是扫描日志文件或审计文件,但必须使用某种技术手段作为日志文件内容输出的接口,常见的使用 Sybase 的工具 RepliactionServer 来识别:第四种方法就是修改以往的应用程序代码,使这些程序能够数据集成;第五种方法就是将前后两个快照文件进行比对。目前,国内大部分应用系统采用针对系统本身设计开发的数据集成工具,有的甚至用手工方法实现数据抽取、转换和加载
15、。因此当目标数据库结构发生变化或者重建时,需要重新编程实现该过程。1.31.3 本课题研究的意义本课题研究的意义分布式数据库大量的应用,各种应用之间又有很多的交叉性。数据库同步就显得很重要;特别是异构的情况,然而异构数据库之间的同步不能应用数据库自带的同步工具。另一方面,由于两者分布在 Internet 中,防火墙的存在使得同步无法使用特定端口通讯。但因为大多数企业会开放用于 HTTP 的 80 端口,因而借助 Web Service 可以完成两者的通讯。数据表要进行的操作,以 XML 形式编码作为消息内容。借助 XML 的无语言相关性、无平台相关性、无对象相关性来实现异构数据库的同步,也可应
16、用结构相同的分布式数据库上。1.41.4 本课题的研究方法本课题的研究方法本同步系统采用 Web Service 作为同步数据的传输,使用触发器实时捕获数据库的增量记录,并保存到临时缓冲表,以便供同步到目标数据库,然后采用Windows 服务实时的监视目标 IP 是否有需要同步的数据,如果存在目标 IP 同步的数据,就向此 IP 发送同步消息,另外一端收到同步消息就调用 Web Servcie 方法获取同步的数据,写入到本地,写入成功后向服务器方发送确认消息;服务器收到确认后,将此 IP 同步了的数据标识为已读。当所有主机同步第 3 页 共 24 页完成,就物理上删除被同步了的数据。先实现 S
17、ql Server 2000 同步到 Oracle,设计时考虑到多个 IP,多个不同异构数据的情况。2 2 Web Service 数据库同步原理数据库同步原理2.12.1 Web Service 构成与特点构成与特点2.1.1 2.1.1 Web Servcie 的结构的结构Web Service 由服务提供者、服务注册中心和服务请求者三角色以及发布、查找和绑定三个操作组成。三个角色的交互完成服务。交互涉及发布、查找和绑定操作。图 1 描述了角色调用操作完成服务的结构。服务提供者管理可以通过网络访问 Web Service 的一个实例。服务提供者定义 Web Service 的服务描述,并把
18、它发布到服务请求或服务注册中心。服务请求者使用查找操作来从本地或服务注册中心检索服务描述。然后使用服务描述与服务提供者进行绑定并调用Web Service 实现或同它交互。服务提供者和服务请求者角色是逻辑结构,因而服务可以表现两种特性。图 1 展示了这些操作、提供这些操作的组件及它们之间的交互。 发布 绑定 查找绑定查找图 1 Web Service 的结构2.1.2 2.1.2 Web Servcie 的关键技术的关键技术-协议协议Web Service 中的主要服务协议包括:XML、SOAP、WSDL、UDDI,它们构成一个互操作的协议栈。如图 2 所示服务提供者服务注册中心服务请求者服务
19、服务描述服务描述第 4 页 共 24 页UDDI通用发现、描述、继承WSDLWeb Service 描述语言XML、HTTPSOAP简单对象访问协议图 2 Web Service 的协议栈XML(eXtensible Markup Language):可扩展的置标语言,是 W3C 组织于1998 年 2 月发布的标准。XML 严格地定义可移植的结构化数据,并对数据赋予上下文相关功能。Web 服务完全基于 XML 技术。服务提供者和服务请求者均使用 XML 传递消息和数据流。SOAP(Simple Object Access Protocol):简单对象访问协议,SOAP 完全独立于任何厂商,可
20、以相对于任何编程语言、对象模型、操作系统和平台独立实现。它为在分布式环境下使用 XML、对等地交换结构化和类型化的信息提供了一个简单且轻量级的机制。HTTP 作为低层通信协议实现了 SOAP 把基于 HTTP的 Web 技术与 XML 的灵活性和扩展性结合在一起,并有助于实现异构平台之间的互相操作性,从而使其扩展性结合在一起,并有助于实现异构平台之间的互操作性,从而使其扩展到 Internet 上的分布式计算和数据集成。HTTP 作为一种普遍接受的协议被用于任何地方及任何平台上,XML 也同 HTTP 一样得到普遍应用,由于 XML 是文本格式文件,所以 SOAP 实质上是一个基于文本的协议,
21、它没有对平台和环境的依赖性。WSDL (Web Servcie Description Language):Web 服务描述语言,定义了一个基于 XML 的组件描述标准机制,用来描述 Web 服务的相关信息,它把网络服务定义成一个能交换消息的通信端点集。用 WSDL 定义的一套 XML 语法描述的网络服务的方式,使用户端的程序要知道 Web 服务提供了什么服务可以进行调用。UDDI (Universal Description Discovery and Integration):通用描述、发现和集成协议,是一套基于 Web 的、分布式的 、为 Web 服务提供信息注册的实现标准规范,是一个跨
22、产业、跨平台的 开发性架构。可帮助 Web 服务提供者在 Internet 上公布自己推出的 Web 服务。2.1.3 2.1.3 Web Servcie 的特点的特点 Web Service 技术的主要目标就是在现有各种异种平台的基础上,构筑一个通用的平台无关、语言无关的技术层。各种不同平台之上的应用依靠这个技第 5 页 共 24 页术层来实施彼此的连接和集成,从而让使用不同系统和不同编程语言的人们能够相互交流和分享数据。Web Service 并不是构件技术发展中的一个革命性改变。而只是一种较大的进展。它是对象构件技术在 Internet 上的延伸,是一种部署在 Web 上的对象构件。是封
23、装成单个实体并发布到网络上供其它程序使用的功能集合,它不会完全取代现在的构件技术。2.1.4 2.1.4 Web Servcie 安全安全 考虑的安全仅仅是 Web Service 在交换数据中的安全。因此,设定的安全目标是: .客户端确认服务器的身份; .服务器来确认客户端的身份; .保证传输的数据在传输过程中不被监听; .保证传输的数据在传输过程中不被篡改。2.22.2 数据库复制的分类数据库复制的分类数据库复制有不同的分类方法,不同的分类采用的复制方法往往不同。按照复制的方向划分为单向(unidirectional)复制和双向(hi-directional)复制,按照传播更新的方式划分为
24、同步(synchronous)复制和异步(asynchronous)复制。单向复制,也称主从式(master/slave 或 primary/secondary)复制或主版本(master copy)复制,指的是两个复制结点之间只从一个结点向另一个结点进行复制,源结点保存复制对象,目标结点保存复制对象的副本,源结点中数据对象具有可读可写的特性,目标结点中的数据对象只具有可读的特性,修改数据对象需要在源结点上进行,从而预防了更新冲突的发生。这种复制方式比较简单,应用范围也比较广。双向复制也称对等式(peer-to-peer)复制,多版本(multi-copy)复制或随处修改(update any
25、where)复制,指的是两个复制结点之间可以互相复制,复制结点既是源结点也是目标结点。源结点和目标结点上的复制对象都是可读可写的。在分布式环境下可能对同一复制对象同时进行修改,所以在理论上存在冲突的可能性,因此双向复制中的一个重要问题就是如何检测预防和解决复制中的冲突。双向复制比单向复制更加复杂,实现难度也较大,但应用的范围要更广泛一些,在移动环境、动态环境等场合下大多采用这种复制方式。同步复制又称为急切(eager)复制,是在一个原子事务中同时更新所有的复制结点,同步复制可以进行序列化操作,但是在交互过程中需要更多的消息交互,从而降低了复制性能,也增加了事务执行的响应时间。同步复制不适合移动
26、应用场合,因为移动设备不可能保持实时的连接,通常采用另一种复制方法第 6 页 共 24 页异步复制。异步复制又称为懒惰(lazy)复制,是在本地事务提交以后再将本地数据的变更反映到其他复制结点上,这种方式不需要实时的连接,可以很好的提高复制的性能,但异步复制的一个问题是在复制结点中存在“脏”数据,当两个事务在不同节点读和写数据时,就无法保证事务的序列化,这种复制方式一般应用在对数据一致性要求不是很高的地方。同步复制和异步复制的应用场合不同。同步复制可以保证系统所有结点数据的实时一致性,对于银行此类系统一般采用同步复制方法。异步复制无法保证数据的实时一致性,可以应用在移动设备数据复制,多级管理信
27、息系统中。2.32.3 复制数据的类型复制数据的类型数据库复制需要在数据库之间传输数据记录,这些数据记录是数据库中记录的一种划分,这种划分与数据库中的记录存在一定的逻辑关系,按照这种逻辑关系把复制数据分为以下几种:1. 全划分:复制数据为数据库中所有表中的所有记录。数据库中记录的任意变化都需要进行复制操作。2. 水平划分:复制数据只是表中的部分记录,只对满足复制条件的记录进行复制操作。3. 垂直划分:复制数据只是记录的部分字段,不需要对全部改变的字段值进行复制操作。4. 水平垂直划分:复制数据是水平划分和垂直划分的组合。5. 函数统计划分:复制数据是对记录进行统计运算的结果。复制数据的不同划分
28、用于不同的场合。对于缓存数据库或备份数据库一般采用全划分的方式,所有的数据都进行复制。水平和垂直划分对数据进行了过滤操作,往往用在数据保密,分级管理方面,可以提高复制的效率,降低不必要的数据传输。函数统计划分主要用在基础数据不全或者特定情况下不能传输基础数据而只能传输统计数据的情况下,这种方式可以大大的降低数据传输量,同时可以直接利用统计数据,而无需每次都通过基础数据来生成统计数据,提高了数据库的性能,满足了统计方面的需求。复制数据按照传输数据的形式分为完整拷贝(full copy),增量修改(incremental-update),净变化(neat change)三种。 完整拷贝方式:源数据
29、库中所有的记录都传送到目标数据库中。完整拷贝的优点是实现起来简单容易,不占用额外资源,不需要进行冲突检测等方面的工作,但其缺点是效率较低,只能应用在初始化复制、崩溃恢复等场合。增量修改方式,也称标量(scalable)方式:在这种方式下需要将事务对数据第 7 页 共 24 页的操作内容全部保存下来,传输的数据就是操作的完整序列。增量修改的最大优点就是满足复制的单副本可串行性化。这种方式能够提供详细的控制信息,适用于多种复制方式,但保存全部的操作序列需要较多的资源,设计通用的存储结构也较复杂。净变化方式:传输的数据为两次复制之间更新数据的净变化值。这种方式需要记录上一次复制的状态,在下一次复制时
30、将上次复制以来的所有变化数据从数据库中提取出来作为复制数据项。净变化方式只传输改变的数据,因此传输的数据量是最小的,实现方法也较简单,可以明显的提高复制性能,但是这种方式不是以事务为依据对数据进行划分,所以不能用于同步复制,在数据复制的过程中也存在一定的问题。2.42.4 数据捕获技术数据捕获技术复制数据和数据捕获技术有一定的相关性,不同种的数据捕获技术在生成复制数据的能力方面上有所不同。现在常用的数据捕获技术包括触发器法、快照法、控制表变化法等。1. 快照法快照(snapshot)是在某一时刻将数据库中存储对象的状态存储下来,构成当前数据库的一个映像文件,将此映像文件作为复制数据,用来更新其
31、他的数据库。 快照法只是在复制时进行一次全面扫描,实现简单,它不需依赖特别的机制,也不占用系统资源,在复制初始化和崩溃恢复时通常需要采用这种方式。由于快照法生成完全拷贝的复制数据,因此效率很低,应用的范围也比较小。Oracle 和 MS SQL Server 数据库明确提供了基于快照的捕获方法。一般的复制方案在初始化时往往也使用这种方法。2. 触发器法:触发器是一种特殊类型的存储过程,当使用 UPDATE、INSERT 或 DELETE 对指定数据表中数据进行操作时,触发器就会生效,通过分析操作的相关信息,可以在触发器中定义复杂的业务规则。触发器法就是通过捕获这些操作并将数据操作的信息保存到日
32、志中或者直接进行复制操作。如图 3 触发器数据捕捉方式所示。 触发器法避免了不必要的数据传输,克服了基于快照法的主要缺点,大大提高了效率,可以用于同步复制和双向复制。但是触发器机制需要数据库系统的支持,并且为了支持不同的复制数据类型,复制方法需要设置不同的触发器脚本,给系统维护和变更带来了不便。第 8 页 共 24 页图 3 触发器数据捕捉方式由于大型数据库系统基本上都提供了完善的触发器机制,因此大型数据库厂商提供的数据库复制方案往往都运用了这种捕获方法,如 Oracle 的对称复制(Symmetric Replication)综合应用了快照和触发器两种捕获方法。3. 控制表变化法控制表变化(
33、Control Table Change)法就是创建一张包含复制源表的主键字段和一些控制信息字段的控制表,当复制表中的记录发生变化时,则修改控制表中相应关键字的记录,在控制信息字段中记录变化的情况,这一过程可以通过触发器,中间件来实现,复制数据可以根据控制表中记录的变化情况生成。通过控制表变化法得到的复制数据是数据库的净变化,效率较高,由于只保存了主键信息和部分控制信息,所以在空间占用方面也较小。控制表变化法可适用于除同步复制以外的各种复制形式。上述的几种数据捕获方法各有优缺点,需要结合你的具体应用具体的选择。2.52.5 冲突检测冲突检测数据库复制采用不同的复制方式,复制不同类型的数据都会在
34、复制中产生各种不同的冲突。下面是几种常见的冲突。1. 表间冲突:复制数据不能满足本地数据库表上定义的约束条件而造成的冲突。进行复制数据设计时需要考虑表上定义的完整性约束,引用约束等,否则在进行数据复制时会因为这些约束无法导入数据。净变化方式不满足单副本可串行化,在进行数据更新时需要更多的考虑表间冲突问题。2. 唯一性冲突:发生在一个更新产生了一个违反主键或唯一性约束时。不同的结点根据本地数据库规则设置数据,这时不合理的主键生成规则或者是错误的输入都有可能产生主键冲突或者是唯一性冲突。3. 更新冲突:对于异步更新,本地数据的更新和远程数据的更新存在时间差,在这种情况下两个或多个复制站点可能同时更
35、新一条记录,如果更新同一条记录的相关字段就会存在列级冲突。第 9 页 共 24 页4. 删除冲突:发生在一个结点更新另一个结点已删除的一行时,或者同一条记录在不同的复制站点被删除时。3 3需求分析需求分析为了明确系统的应达到的目标,确定系统必须做什么,清楚地理解所要解决的问题。在下面描述软件的功能和性能的需求。确定了软件设计的约束。3.13.1 同步环境同步环境本系统的同步环境如图 4:图 4 同步环境Oracle 9i,mySQL 等不同类型的数据库通过 Internet 来获取 SQL Server 2000 的数据,通信的两端都存在防火墙,提供了一台 Web 服务器用于发布 Web Se
36、rvice。3.23.2 功能需求功能需求本设计要实现的功能:1. 能够使处于 Internet 上的异构数据库的单向同步功能,初步先实现 Sql Server2000 向 Oracle 与的同步,需要考虑其它数据库的情况比如 my Sql 等。2. 同步数据需要可靠的传输,保证数据能够准确、完全的传输到被同步的一方。3. 同步需要一定安全性,能够按照进行同步 IP 或则物理地址来验证同步身份。4. 由于数据在 Internet 上传输,必须保证同步数据的传输开销小,安全等。5. 能够实现不同主机的多个数据库同时同步功能。6. 对实时性同步、定期同步可配置,既可以选择实时同步、手动同步或则按需
37、要同步的数据量来同步。7. 同步信息可以配置性。同步信息包括:同步的字段、字段类型、同步的表、分配了权限的同步主机等。第 10 页 共 24 页8. 同步的数据类型能够是不同的类型,比如数值型向字符型的同步等。能够对同步的某个字段做特殊的处理后再同步。既是能够实现多个字段合并为一个字段,或则一个、多个字段分解为更多个字段。9. 同步的配置界面化,操作方便、易使用。10.对网络连接断开后能够保证同步数据的不丢失,网络连上后能接着继续同步。11.对异常的信息提示尽量多,比如配置系统时对不正确的配置及时提示,以便产生同步的异常。12.当是多个数据库同步到一个数据库时需要解决同步冲突。13.系统需要有
38、一定扩展性。3.33.3 性能需求性能需求1.精度:1) 服务器端的增量数据能够准确的同步到客户端,不应该存在数据被截断的情况。2) 数据传输过程中对数据丢失的情况,应该不影响同步数据的完整性。2. 时间特性要求:1)同步操作对其它正常的数据库应用,无明显性能降低现象。2)对配置了实时性同步的,同步延迟应小于 1 分钟(除网络断开等异常情况)。3. 灵活性1) 同步的字段可动态配置,当添加、修改字段后可以通过简单的配置来实现修改后的同步。3.43.4 输入输出要求输入输出要求输入:服务器端数据的改变。处理:字段合并,分解或者是一定的运算加工。输出:将处理了的数据更新到客户端。3.53.5 运行
39、需求运行需求1. 硬件环境需求:客户端、服务器端:专用数据库服务器,P4 以上,512M 以上内存,80G 以上硬盘;Internet 网络连接。2. 软件环境:源端:Windows 2003/XP 操作系统、Sql Server 2000 数据库、IIS 5.0、.NET Framework1.1。第 11 页 共 24 页目标端: Windows 2003/XP 操作系统、数据库环境、.NET Framework1.1。4 4方案设计方案设计结合前面的同步原理,以及需求的介绍,下面给出同步的方案设计:4.14.1 数据库同步复制模型数据库同步复制模型模型包括源结点和目标结点两大块。源结点模
40、块包括:数据库捕获模块、数据生成模块、Web Service、同步控制模块、定时器、配置模块等组成。目标结点包括:数据库同步控制模块、数据导入模块、配置模块。如图 5 所示。图 5 系统模块4.24.2 数据库设计数据库设计系统包括源端数据库设计以及目的端数据库设计。4.2.1 4.2.1 源结点源结点 SqlSql ServerServer 20002000 表设计表设计1) E-R 图如图 6第 12 页 共 24 页图 6 E-R 图2) 数据表如表 1:表 1:tLJ(数据表)逻辑字段名物理字段名字段类型是否为空主键外键说 明编号IintNOT NULLYesNo自增加姓名NameVa
41、rchar(20)NOT NULLNoNo描述DesVARCHAR(1000)NULLNoNo年龄AgeintNULLNoNo3) 控制表如表 2、表 3、表 4、表 5:表 2 同步缓冲临时表:tTemp逻辑字段名物理字段名字段类型是否为空主键外键说 明编号IintNOT NULLYesNo动作标识SigntinyintnullNoNo插入 1,删除2,更新 3数据表名tableNameVARCHAR(20)NULLNoNo数据表的表名数据记录主键infoIDintNot nullnono数据表的记录主键写入时间InsertDateDateTimeNULLNoNo表 3 读取状态表: tRe
42、adState逻辑字段名物理字段名字段类型是否为空主键外键说 明编号IintNOT NULLYesNo读取了数据的IPIPtinyintnullNoYestIPConfig.I 的外键同步缓冲 IDinfoIDintNot nullnoYes数据表的记录表 4 同步 IP 配置表: tIPConfig逻辑字段名物理字段名字段类型是否为空主键外键说 明编号IintNOT NULLYesNo自增加要同步的 IPIPVarcahr(14)nullNoNo开启状态isOpenintNot nullnono上次读取时间ReadDateDatetimeNot nullNono表 5 读取缓冲表:tRead
43、Temp逻辑字段名物理字段名字段类型是否为空主键外键说 明编号IintNOT NULLYesNo自增加读取 ipIPtinyintnullNoNo与tIPConfig.I 关联同步缓冲表编号InfoIdintNot nullnoNo同步缓冲表编号读取时间CreateDateDatetimeNot nullNoNo读取秩序号ReadNointNot nullNoNo第 13 页 共 24 页4.2.2 4.2.2 目的结点目的结点 OracleOracle 表设计表设计表 6: tLJ逻辑字段名物理字段名字段类型是否为空主键外键说 明编号INumber(22)NOT NULLYesNo姓名Nam
44、eVarchar2(50)NOT NULLNoNo描述DesVARCHAR2(1000)NULLNoNo年龄AgeNumber(22)NULLNoNo表 7: CopyT1逻辑字段名物理字段名字段类型是否为空主键外键说 明编号IVARCHAR2(50)NOT NULLnoNo姓名, 年龄NameAgeVarcahr2(100) NULLNoNo年龄DesVarcahr2(1000)NOT NULLNoNo4.34.3 模块设计模块设计该模型按照功能划分为三个部分,一是数据捕获部份,二是同步部份,三是冲突检测处理部份(如图 7)。图 7 模块图4.3.1 4.3.1 数据捕获部分数据捕获部分包含
45、数据捕获模块和控制变化表两个部分。数据捕获模块采用基于触发器的方式进行数据的捕获。控制表用来保存数据库操作的历史记录,其基本思想来源于控制表变化法,即在这些表中记录每次更新记录的主键信息、表名等,这种数据捕获方式获得的是复制数据的净变化,可以大大的降低网络传输量,提高复制性能。控制变化表的格式如上源结点 Sql Server 2000 表设计 。同步缓冲临时表 tTemp:用于记录数据表记录主键、数据表记录表名,记录写入时间等。当数据表有被修改、添加、删除时触发器就向此表写入更新记录 id 等信息。如果是更新 sign 字段的值为 3 ,删除时 sign 值为 2,插入时sign 值为 1,当
46、某条记录在某一时间段内被重复操作了多次时 sign 字段的值始终保存追后一次的操作。4.3.2 4.3.2 同步部分同步部分包括定时器、同步控制模块、数据导入、Web Servcie、验证模块。冲突检测捕获同步第 14 页 共 24 页1.1. 定时器定时器定时器包含于一个 Windows 服务中,每隔一定的时间检测 IP 配置表里被开启 IP 是否有同步的数据。如果存在同步的数据就启动同步控制模块。通过IP 配置表可以授权某个主机来获取同步数据。从而起到一定的安全性与高性能。2.2. 同步控制模块:同步控制模块:1) 在源结点端在源节点端当定时器通过验证模块检查到某个 IP 有要同步的数据时
47、,就启动一个服务线程,并向这个 IP 的特定端口发送 Socket 消息,并等待这个 IP 返回同步成功的确认消息。当收到确认消息后(此确认消息包含一个同步批次号也就是“读取缓冲表:tReadTemp”中的“读取秩序号:ReadNo” ,“读取缓冲表”是在目标端读取数据后写入的,在后面将要介绍到),然后源端控制模块操纵同步控制表将读取了的记录关键字以及目的端 IP 写入“读取状态表: tReadState”表示本批次记录的这个目的端已经读取、下次不在读取。当所有的配置表里的目标端都完成同步后,就物理上删除控制表里的相关记录。2) 在目标端目的端在启动了以后就一直监听源端是否有同步信号(监听的源
48、端 IP 以及端口能够通过读取本地的 XML 配置文件得到),当监听到同步信号,创建一个线程来启动“数据导入模块” ,在“数据导入模块”处理完毕后向源端发送确认消息,此确认消息包含“数据导入模块”导入成功与否的标识,如果正常导入此消息就是同步的序号也就是上面提到的同步批次号。3) 数据导入与本模块相管的 XML 配置文件如下: 第 15 页 共 24 页其中每个结点 T 表示需要与源端同步的一张表,name 属性给出了同步表的对应关系,结点 T 的子结点 fields 记录了同步表中对应的字段名,字段类型,字段大小等。通过此配置文件能够对全划分、水平划分、垂直划分、水平垂直划分、函数统计划分等
49、不同复制数据类型的支持。开始执行时,就先遍历此 XML 文档,有多少个 T 结点就循环多少次来实现从源端提供的 Web Service 读取数据,读取数据时需要传入要读取的表名以及目的端的 IP,然后根据配置文件中的字段对应关系,经过类型转换处理、合并分解处理后,写入到本地。写入到本地时由于在源端,对数据库记录的操作都记录在控制变化表中,复制数据就是依据这些表加以确定,但从控制变化表中获得的是数据的净变化,无法保证单副本可串行化,在进行数据导入时就会由于数据库中定义的外键约束出现表间冲突,一种解决的方式就是在导入数据时临时禁用数据库的外键检查功能。大型的数据库系统一般都提供了禁用外键检查的功能
50、,如在 MS SQL Server 2000 中可以使用通过命令在进行导入时临时禁用数据库的外键检查功能,在完成以后再恢复外键检查,但是在恢复外键检查功能时,数据库会自动对整个数据库进行一遍外键检查,这样会带来比较大的性能问题,特别是在数据量比较大时这种开销往往无法接受,而且这种检查是完全没有必要的。除了临时禁用外键检查功能以外,还有一种方式是完全取消数据库系统提供的外键检查功能,即不在数据表上定义外键约束,而是通过触发器等方式实现外键检查。在进行数据导入时可以设置标志位说明不进行外键检查,这样就可以暂时忽略外键约束,但每次外键检查都需要查询外键表,这种实现方式会比数据库本身提供的外键检查付出
51、更大的代价,因此提出两步法生成净变化方式下无外键冲突的复制数据。第一步是生成无外键值的操作序列 SN,第二步生成只包含外键值的更新序列 SU。在导入序列 SN 时需要保证外键字段允许为空,如果根据业务规则允许外键字段为空,那么就不需要做额外的工作,否则需要在数据库设计时将外键字段设置允许空,然后通过触发器等方式在数据更新时进行检查,这种方式只需要检查值是否为空,代价要远远小于检查外键表。根据两步法生成同步数据的步骤是:(1)从 Web Servcie 得到的数据中分离出外键,分别用两个虚拟表按顺序保存外键置为空的数据 T1 与仅外键与主键 T2。(2)然后写入 T1。(3)根据 T2 中的主键
52、更新外键数据。3.3. WebWeb ServiceService提供一个可供 Internet 上调用的数据发布方法,发布的数据是以 XML 序列化的形式传输的、便于不同平台的互相操作。通过传入 ip、表名控制读取同第 16 页 共 24 页步的数据此 ip 应该读的数据,并且将读取了的数据主键的信息保存到“读取缓冲表:tReadTemp” ,如果是在配置表里无配置则不能读取数据。读取步骤:1) 目的方调用 Web Service 方法传入目的 IP,要同步的表名。2) Web Servcie 根据传入的参数,先判断是否是系统的“合法用户”,如果是合法的身份就先得到本次读取的编号,此读取编号
53、是“读取缓冲表:tReadTemp”表中的“读取秩序号:ReadNo”的最大值加 1 得到的。供以后同步控制用。3) 然后根据读取“同步缓冲临时表:tTemp”表中记录的数据表里的主键来读取数据。4) 读取的数据是在“读取状态表: tReadState”表里无本 IP 记录的记录。5) 将上步读了的数据保存到“ 读取缓冲表:tReadTemp”里,如果在tReadTemp 表里存在该信息主键就更新这条记录的读取时间和读取秩序号为当前读取时间和读取秩序号。4.4. 验证模块验证模块验证模块应用在源端的同步控制模块和目的端的数据导入模块,主要完成控制特定 IP 来同步数据,提高安全性与性能。4.3
54、.3 4.3.3 冲突检测处理部分冲突检测处理部分异步复制存在的一个主要问题就是冲突问题,前面已经说明了常见的几种冲突,在上面的同步部分也通过设计避免了其中的一种冲突,但对于其他冲突还需要采用其他的方法进行解决。冲突检测和处理部分就是在数据导入过程中检测各种可能的冲突。5 5代码实现代码实现5.15.1 开发环境开发环境开发平台的选择:本系统的开发平台选择微软公司的 .NET,开发工具采用ASP.NET。.NET 是 Microsoft 面向 XML Web 服务的平台,由框架、Web 服务、.NET 企业服务器等几部分组成,提供涉及面较广、功能较全面的解决方案。XML Web 服务使应用程序
55、能够共享数据,可以跨平台和操作系统。数据库选择:根据需求分析选择了 Sql Server 2000+Oracle 9i 的组合。5.25.2 关键代码详解关键代码详解。5.2.1 5.2.1 数据捕获部分数据捕获部分这部份的功能就是动态的捕获数据表里数据的变化,其主要的实现就是在数据表上定义一个触发器用于记录本表的净变化。此触发器如下:ALTER TRIGGER tlj_Trigger第 17 页 共 24 页ON dbo.tlj -数据表FOR INSERT, UPDATE, DELETE ASbeginIF EXISTS(select * from deleted) and exists(
56、select * from inserted)begin -更新delete from dbo.tTemp where infoID in(select I from inserted) and TableName=dbo.tljinsert into dbo.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.tTem
57、p(infoID,TableName,Sign) select I,dbo.tlj,1 from insertedendelse if EXISTS(select * from deleted) and not exists(select * from inserted)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 dele
58、tedendend当更新、删除数据表时,先根据数据表关键字与数据表名称删除“同步缓冲临时表:tTemp”里有的记录,然后将被修改、删除的数据表关键字、表名、修改删除的标识写入 tTemp 表。当向数据表新增加记录时只要写入 tTemp 表即可。5.2.2 5.2.2 同步部分同步部分1 同步控制模块源端:主要包含于 Windows 服务里,通过 Timer 的执行函数调用。其关键代码如下:public static string OpenConn(string IP,string Port)string strResult=-4,-3,-5,-2,-1;IPAddress HostAddr=I
59、PAddress.Parse(IP);IPEndPoint host=new IPEndPoint(HostAddr,int.Parse(Port);Socket s=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);trys.Connect(host);catchreturn IP;/连接 失败 第 18 页 共 24 页string tmpstr=1;byte sendBytes = Encoding.ASCII.GetBytes(tmpstr.ToCharArray();trys.Send(
60、sendBytes,sendBytes.Length,0);catchreturn -1;/发送 数据 失败 int bytes=0;byte recBytes=new byte256;string recString =;trybytes=s.Receive(recBytes,recBytes.Length,0);catchreturn -2;/接受 数据 失败 recString=Encoding.ASCII.GetString(recBytes,0,bytes);if(recString.Length0 & strResult.IndexOf(recString) != 0)SqlHel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 多层电容器用陶瓷介质粉料项目安全风险评价报告
- 药品供应链危急值报告及处理流程
- 新人教版一年级上册写作训练范文
- 商场员工打架事件通报范文
- 2025年电子商务软件正版化工作方案
- 教育行业教师离职流程详解
- 智能家居信息安全系统保密控制措施
- 互联网公司内部审计流程实施方案
- 小学六年级运动会策划计划
- 中小学教研活动管理流程探讨
- 小学英语-Will it be hot in Haikou教学设计学情分析教材分析课后反思
- 动静脉人工内瘘成形术后护理查房
- 上海城市介绍动态PPT模板(最新版)
- 黑板风2023中学生网络安全教育PPT模板
- 第一讲-积极心理学概述课件
- 初中语文八年级下册《社戏》读写结合课件
- 柴油机基本结构与工作原理课件
- 张克非《公共关系学》(修订版)笔记和课后习题详解
- 叠放物块间的摩擦力分析
- 热电厂机组A级检修策划书
- 2023年青海省文化和旅游系统事业单位人员招聘笔试题库及答案解析
评论
0/150
提交评论