本发明从属于数据库同步技术领域,特别是关系型数据库应用领域。
技术背景
出于系统安全性的考虑,数据库系统通常都会采用备份或者容灾策略,以供在生产数据库因为各种原因出现异常不能正常提供服务时自动接管业务,继续对外提供正常服务。
数据复制技术现已被广泛运用于大量企业信息系统中。其主要使用场景为数据分发共享,数据灾难备份已经数据仓库建设。目前数据复制主流的数据复制技术主要分为基于触发器的数据复制技术和基于事务日志的数据复制技术。基于触发器的数据复制技术是早期的复制技术,它实现方便,技术难度低,不同平台之间几乎没有壁垒。但是它最大的问题在于对源端的性能会产生很大的影响,而且无法识别事务信息,无法保证数据的一致性和有序性。而基于事务日志的数据复制技术正相反。它实现的技术难度比较大,需要针对不同的平台专门开发接口,但是它最大的优势是对源端性能几乎无影响,而且可以保证数据一致性和有序性,故事目前的主流技术。
目前业界已经存在数款数据库同步工具,基本都是由日志监控模块、同步配置模块和日志重做模块组成,实现机制大都是根据数据库提供的日志访问接口,从日志中提取出对数据库进行操作的修改语句,然后将提取出的语句施加到备用库中进行动作重放,从而达到主库和备用库数据一致的目的。
目前主流同步工具的实现方式从一定程度上解决了数据库数据同步的问题,但在面对业务量非常大的数据库系统时都会力不从心,因为基于数据库日志进行的数据同步操作都会面临备用数据库侧数据操作量成倍放大的情况,对生产库发起的一条dml指令可能会修改大量的生产数据,但从日志中挖掘出来的操作数据是针对每一条生产库记录的,比如在生产库的一条update语句修改了10000条数据库记录,那么从数据库日志中挖掘出来的数据库操作记录就是10000条,这样计算下来针对生产库的一次操作就转化成了针对备用库的10000次操作,数据库操作次数被成倍放大,这种情况下非常容易引发备用库的瓶颈出现,导致备用库无法及时处理请求,起不到应有的备库作用。
本发明针对上述数据库同步工具的困境,从前端入手提出了解决思路。本发明涉及现有生产程序的很小改造,通过在生产程序和生产数据库之间增加一个数据库接入模块的做法,生产程序将本来要发给生产数据库的请求都改为发给数据库接入模块,由数据库接入模块向数据库发起操作请求并传递操作结果给生产程序,这样对数据库所有的操作都会经过数据库接入模块,通过数据库接入模块就可以获取到所有的数据库操作,采用将数据库操作命令发给备用库执行的方式可以很大程度的减少备用库上要执行的操作的数据量,从而达到数据同步操作稳定、快速的目的。
目前尚未检索到与本发明相同的解决方案及系统实现。
技术实现要素:
在生产程序和生产数据库之间增加数据库接入模块,该模块包含两部分,命令接收模块和数据库统一操作模块,命令接收模块用于接收生产程序发往数据库的操作指令,数据库统一操作模块负责和数据库的建链以及数据库操作的执行动作,并传递操作结果给生产程序,数据库统一操作模块可以支持多种数据库的链接、访问。
本发明中提及的数据库同步系统的主要功能特点是:
(1)、可以满足数据库同步的高性能要求,可以支持业务量很大的数据库进行同步操作。
(2)、用户的生产程序不再需要关注数据库链接部分,本模块做了统一的封装处理,使得生产程序可以更专注于业务本身。
(3)、本模块的数据库链接功能屏蔽了不同数据库的接口差异,生产程序不需要针对不同数据库类型分别考虑建链,该部分的工作统一由数据库访问模块来完成。
附图说明
图1是高性能数据库分拣同步系统示意图。
具体实施方式
本发明所述系统的基本框可见附图1:图中各模块功能介绍如下:
◆101是命令接收模块,主要完成生产程序的数据库操作命令和操作结果的接收与转发。具体功能包括接收从生产程序发送给数据库待执行的命令,将命令转发给数据访问模块执行,并将数据访问模块返回的命令执行结果返回给生产程序。
◆102是数据访问模块,用来链接数据库并执行命令接收模块转发来的数据库操作命令,该模块能够支持多种数据库,将操作命令发送给主用数据库执行结束后将执行结果反馈给命令接收模块,同时根据场景判断是否要将操作的命令转发给数据同步模块。
◆103是数据同步模块,用来执行数据访问模块转发过来的同步操作命令,从而达到备用数据库和主用数据库数据一致的目的。本模块支持多个备用数据库,并且支持命令分拣,支持将要执行的命令根据配置模块的配置发送到不同的备用数据库中执行。
综上所述:本发明提出了一种高性能的数据库同步系统的实施方案,并且通过本方案,可以很大程度的减少生产程序在数据库接入层面的开发量,使得生产程序可以更专注于生产业务本身。通过这种系统可以高效地满足用户对数据库同步的要求,尤其是针对业务量大的数据库进行同步操作时,本发明更具优势,同时可以简化用户生产程序,是一项极具特色的亮点功能,对数据库同步系统产品市场起到很大的完善作用。