数据库的复制及同步技术基础研究

时间:2022-08-15 10:59:57

数据库的复制及同步技术基础研究

摘 要:现今的数据库和同步和复制管理手段,经过多年的行业催生和应用衍变,已经变得五花八门,各个数据库内部形成了自己的同步管理系统,数据之间也有大量的数据同步范本,本文主要针对于嵌入式数据同步,异地多服务器同步和受限管理的数据服务器端等不对等差异性数据同步进行简要阐述和研究。

关键词:数据同步;嵌入式数据;异地数据库复制

中图分类号:TN305 文献标识码:A 文章编号:1674-7712 (2013) 22-0000-01

一、概述

同步复制是指在一个或多个节点上进行数据备份,包括中心数据库服务器数据复制及移动终端中保存数据库的复制。通过同步技术来实现消除中心数据库和其他连接设备上的由于更新或实时性产生的数据不一致性。其目的是保存数据各个节点上的完整和一致性。

二、嵌入式数据库与服务器端同步

SQLite,作为一个成熟完善并且功能齐全的轻量级关系型数据库,被大量的使用在嵌入式设备中,作为移动设备的数据库,通常在数据同步时有两种情况:

(一)实时数据更新,这种数据一般体现在实时性要求高的应用中,如监控或者游戏等。

(二)用户可以离线操作,在重新上线后将离线操作的数据进行统一提交上传。

一般情况下,实际上所谓的实时更新是在很短的时间内提交数据并且变更相关项目,以SQLite和SQL Server进行数据同步为例:这两个数不同类型的数据库,如果反生强行进行数据迁移,双方无法直接访问对方的数据表,可以使用通讯协议的方式进行转换提交。在同步客户端,主要考虑更新监测模块、传输模块、功能管理模块。

1.更新监测模块

变更监视模块把移动数据库所做的变更操作(I NSERT,UPDATE,DELETE)记录下来,并作为元数据保存起来,作为同步的依据。保存的信息要足够让同步模块能够做到准确的同步。在SQLite中,有个SOLire3 update hook()接口函数,它在每次发生I NSERT、UPDATE、DELETE操作的时候都会被执行,代码如下:SQLite3 uPdat e h00k(db,uodate―hook,(VOid丰)db)。但在管理同步数据时,也有很多关于同步的元数据需要存放和管理,更新数据时元数据也会发生更新,触发接口函数,形成死循环,解决方案是以“SYn一”开头的表名都做本同步系统使用的表,如果是同步元数据表,就不用记录。通过SQLite3的回调函数,数据更改的信息得以记录在元数据表中,作为之后与同步服务器更新的依据。

2.传输模块

可以采用TCP、UDP传输层协议和HTTP等应用层协议,也可以自己定义协议,协议要有足够的能力可以与同步服务器通信来实现同步数据的上传下载。网络通信模块同时也要提供安全传输的功能,能够加密解密数据。通过分析已有的资料分析,选择HTTP协议。考虑到网络的断接性,需要克服同步粒度大的问题,采用每次同步的行不超过一个N值的方法,则数据传输的总次数L=M/N(M为数据更新的条数,N为每次传输N行),N的值可以根据实际情况调整,要考虑的因素包括网络的稳定性、带宽的价格、网络的速度、移动终端的性能、同步服务器的性能等。网络通信在客户端可以调用HTTP客户端类库Curl来实现。

3.功能管理模块

每个同步都是一次同步会话。会话的流程和步骤,错误的处理,都需要有充分的考虑和定义。系统中考虑会话的逻辑关系为:(1)用户程序通过修改(包括INSERT、UPDATE和DELETE)客户端数据库中的数据项;(2)客户端同步模块获取修改的元数据;(3)客户端同步模块将修改的元数据存入数据库中;(4)同步模块根据数据库中的元数据获取要同步的数据;(5)客户端同步模块通过网络将数据上传至服务器同步服务模块。

(三)服务器模块的同步分析

同步服务器要连接终端和中心数据库,在两者问除了交换信息外还要处理多客户端连接的并发,同步冲突的处理等任务。如果系统负载比较大,可能还有多服务器均衡负载的需求。同步服务器包含三个部分:终端连接响应模块、数据库连接模块和系统同步会话逻辑处理模块。同步服务器要处理来自多个终端的连接,并确保每个终端都不必知晓别的终端的同步而独立的执行,也就是说,每个终端的同步信息不能混淆,更不能相互影响。这是个比较底层的功能,使用现有的软件上的技术,往往就具web容器。数据库连接模块系统设计的一个目标就是能够与多种数据同步的冲突处理节点上的数据源与目的数据同步时,可能发生数据冲突。同步冲突是分布式数据系统非常常见的现象,在移动数据库同步系统中,用户可以通过制定以主数据库数据为主,或者以移动设备上的嵌入式数据库数据为主,来解决主数据库与嵌入式数据库两者之间的数据同步过程中的冲突。如果用户制定以主数据库为主,则当发生同步数据冲突时,系统将根据主数据库数据来更新移动设备上数据库中的数据,而主数据库中的数据不做改动:反之,如果用户指定以嵌入式数据库数据为主,则系统将根据嵌入式数据库中的数据来更新主数据库中的数据,而嵌入式数据库中的数据不做改动。当用户需要进一步对同步冲突进行更为灵活的解决方案时,可以通过实现冲突处理策略,用编程或者声明的方式来实现。

三、异地服务器数据同步

Microsoft SQLServer2005自身集成了异地之间服务器数据库复制同步功能,即/订阅模式。

复制服务有三个角色,分别是服务器,分发服务器和订阅服务器。他们分别做不同的工作。就像我们日常买书和报纸的概念是一样的。

服务器:也称为出版服务器,主要负责数据的和出版工作。这个角色就好比我们的出版社或者报社。

分发服务器:主要负责将服务器的内容分发给订阅者。他是连接服务器和订阅服务器的桥梁。这个角色就好比我们的邮递员,将书和报纸送到我们的手里。

订阅服务器:主要负责接收的内容。这个角色就好比我们自己订阅书和报纸,是一个订阅者的角色。

(一)数据订阅模式

数据订阅的模式有推式订阅和拉式订阅两种。推式订阅主要是分发服务器将数据推给订阅服务器。拉式订阅是订阅服务器主动向分发服务器取数据。

这就好比我们自己订阅杂志和报纸一样,如果人家送货上门,这就是推式订阅,消耗的是分发服务器的资源,也就是消耗送货人员的资源。如果是拉式订阅,我们就需要自己到书店去购买,这样消耗的就是我们自己的资料。消耗的是订阅服务器的资源。

(二)数据类型

数据类型可发为三种

1.快照复制

当符合以下一个或多个条件时,使用快照复制本身是最合适的:(1)很少更改数据。(2)在一段时间内允许具有相对服务器已过时的数据副本。(3)复制少量数据。(4)在短期内出现大量更改。

2.事务复制

事务性复制通常用于服务器到服务器环境中,在以下各种情况下适合采用事务性复制:

(1)希望发生增量更改时将其传播到订阅服务器。

(2)从服务器上发生更改,至更改到达订阅服务器,应用程序需要这两者之间的滞后时间较短。

(3)应用程序需要访问中间数据状态。例如:如果某一行更改了五次,事务性复制将允许应用程序响应每次更改(例如:激发触发器),而不只是响应该行最终的数据更改。

(4)服务器有大量的插入、更新和删除活动。

3.合并复制

合并复制通常用于服务器到客户端的环境中。合并复制适用于下列各种情况:

(1)多个订阅服务器可能会在不同时间更新同一数据,并将其更改传播到服务器和其他订阅服务器。

(2)订阅服务器需要接收数据,脱机更改数据,并在以后与服务器和其他订阅服务器同步更改。每个订阅服务器都需要不同的数据分区。可能会发生冲突,并且在冲突发生时,您需要具有检测和解决冲突的能力。

应用程序需要最终的数据更改结果,而不是访问中间数据状态。例如,如果在订阅服务器与服务器进行同步之前,订阅服务器上的行更改了五次,则该行在服务器上仅更改一次来反映最终数据更改。

该方式更适用于实时数据的同步更新,但是订阅模式本身有一些系统和权限的限制,无法在不更改服务器系统或数据库版本的情况下随时使用,对于这种情况,我们使用存储过程+定时作业的方式进行数据同步管理。

四、结束语

由于数据库的应用领域越发的广泛和计算机技术的快速发展,数据库的类型和应用方式也层出不穷,本文研究的讨论的数据库技术在通讯机房及一些监控领域进行了应用和测试,数据结果表明有一定的可行性和通用性,对嵌入式数据库应用有一定的指导作用。

参考文献:

[1]杨志和,胡虚怀.移动环境下的数据同步模型研究[J].计算机工程与应用,2007(13):52-57.

[2]Byun S,Moon S.Resilient data management for replicatedmobile database system[J].Data&Knowledge Engineering.1999,29:43-55.

[作者简介]鲁云鹏(1980-),男,山东海阳人,吉林省白城市公路路政管理局,科员,初级,学士学位,研究方向:数据库同步技术。

上一篇:把握成校工作走向 增强服务新农村建设功能 下一篇:关于变电安全控制要点的分析