发明内容
有鉴于此,本发明的主要目的是提供一种数据同步方法和系统,以降低数据库的处理压力,提高数据的时效性。
本发明的技术方案是这样实现的:
一种数据同步方法,包括:
增设转发系统,该转发系统监听源数据库的增量数据操作日志;
源数据库将增量数据操作日志发送给转发系统,转发系统将所述增量数据操作日志转换为对应的数据对象;
转发系统将所述数据对象转发给目标系统。
优选的,所述转发系统监听源数据库的增量数据操作日志,具体包括:
转发系统通过地址和端口监听源数据库;
转发系统获取本地数据操作日志的起始标记,将所述起始标记发送给源数据库;
源数据库实时判断本地数据操作日志的最新标记,若最新标记高于转发系统发来的所述起始标记,则所述起始标记和最新标记之间的数据操作日志作为增量数据操作日志。
优选的,该方法在转发系统将所述数据对象转发给目标系统之后,进一步包括:转发系统按照接收到的数据操作日志的最新标记更新本地的本地数据操作日志的起始标记,之后将更新后的起始标记发送给源数据库。
优选的,所述转发系统将所述增量数据操作日志转换为对应的数据对象,具体包括:转发系统解析所述增量数据操作日志中的操作指令、操作对象和具体数据,转换为目标系统可识别的数据格式的数据对象。
优选的,所述转发系统将所述数据对象转发给目标系统,具体包括:
对于实时性要求低于指定要求的目标系统,转发系统判断目标系统是否可达,如果可达则将所述数据对象发送给目标系统,如果不可达则将所述数据对象存储在本地磁盘中,待目标系统可达后将所述数据对象发送给目标系统;
对于实时性要求高于指定要求的目标系统,转发系统判断目标系统是否可达,如果可达则将所述数据对象发送给目标系统,如果不可达则将所述数据对象驻留在本地内存,待目标系统可达后将所述数据对象发送给目标系统。
优选的,一个转发系统对应一个目标系统,或者一个转发系统对应两个或两个以上目标系统;
对于一个转发系统对应一个目标系统的场景,所述转发系统在将所述增量数据操作日志转换为对应的数据对象后,进一步判断目标系统是否可达,如果可达则将所述数据对象发送给目标系统,如果不可达则将所述数据对象驻留在本地内存,待目标系统可达后将所述数据对象发送给目标系统;
对于一个转发系统对应两个或两个以上目标系统的场景,所述转发系统在将所述增量数据操作日志转换为对应的数据对象后,进一步判断目标系统是否可达,如果可达则将所述数据对象发送给目标系统,如果不可达则将所述数据对象存储在本地磁盘中,待目标系统可达后将所述数据对象发送给目标系统。
一种数据同步系统,包括:
转发系统,用于监听源数据库的增量数据操作日志,接收源数据发送的增量数据操作日志,将所述增量数据操作日志转换为对应的数据对象,将所述数据对象转发给目标系统;
源数据库,用于将增量数据操作日志发送给转发系统。
优选的,所述转发系统具体包括:用于通过地址和端口监听源数据库;获取本地数据操作日志的起始标记,将所述起始标记发送给源数据库的模块;
所述源数据库具体包括:用于实时判断本地数据操作日志的最新标记,若最新标记高于转发系统发来的所述起始标记,则所述起始标记和最新标记之间的数据操作日志作为增量数据操作日志,将所述增量数据操作日志发送给转发系统的模块。
优选的,所述转发系统进一步包括:用于在将所述数据对象转发给目标系统之后,进一步按照接收到的数据操作日志的最新标记更新本地的本地数据操作日志的起始标记,之后将更新后的起始标记发送给源数据库的模块。
优选的,所述转发系统具体包括:用于解析所述增量数据操作日志中的操作指令、操作对象和具体数据,转换为目标系统可识别的数据格式的数据对象的模块。
与现有技术相比,本发明采用监听的方式,对目标数据的源数据库进行监听,当源数据库中有增量数据操作时,如增删改等操作,源数据库会将增量数据操作日志发送给监听系统即转发系统,之后转发系统会将接收到的增量数据操作日志发送给需要数据的一个或多个目标系统。这样,就避免了现有技术方案中任务系统定时查询源数据库造成的数据库压力,降低了对数据库的处理压力;同时,又避免了定时查询的时间间隔,从而又提高了数据的时效性。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图2为本发明所述数据同步方法的一种流程图;图3为本发明所述数据同步方法的一种实例图。参见图2和图3,本发明所述的数据同步方法包括:
201、增设转发系统,该转发系统监听源数据库的增量数据操作日志。
202、源数据库将增量数据操作日志发送给转发系统,转发系统将所述增量数据操作日志转换为对应的数据对象。所述源数据库就是目标数据所在的数据库,如Mysql、ORACLE数据库等。
203、转发系统将所述数据对象转发给目标系统。
其中,所述转发系统监听源数据库的增量数据操作日志,具体包括:
转发系统通过地址和端口监听源数据库;
转发系统获取本地数据操作日志的起始标记,将所述起始标记发送给源数据库;
源数据库实时判断本地数据操作日志的最新标记,若最新标记高于转发系统发来的所述起始标记,则所述起始标记和最新标记之间的数据操作日志作为增量数据操作日志。
在进一步的实施例中,该方法在转发系统将所述数据对象转发给目标系统之后,进一步包括:转发系统按照接收到的数据操作日志的最新标记更新本地的本地数据操作日志的起始标记,之后将更新后的起始标记发送给源数据库。
下面详细介绍一下转发系统监听源数据库增量数据操作日志的过程。图4为本发明所述转发系统进行监听的流程示意图。参见图4,转发系统需要对源数据库进行监听,即通过IP和端口监听源数据库,该种方式与数据库的从库类似,转发系统可以作为是一个数据库从库,源数据库可以作为是一个数据库主库,从库会向主库发送数据同步请求,告知主库想要同步的增量数据操作日志,主库会将数据操作的日志以增量的方式发送给从库,具体流程如图4所示,包括:
步骤401,转发系统启动。
步骤402、转发系统通过IP和端口监听源数据库(即主库)。
步骤403、转发系统从本地文件、本地数据库、或本地接口等获取数据操作日志的起始标记。
所述数据操作日志的起始标记,例如可以是从哪个数据库表开始的具体的起始行标识信息,这个数据操作日志的起始标记也可以是数据行游标。所述起始标记最初始由管理人员配置好,在之后的操作中,在转发系统将所述数据对象转发给目标系统之后,进一步按照接收到的数据操作日志的最新标记更新本地的本地数据操作日志的起始标记。之后的监听过程中,转发系统向源数据库发送的数据操作日志的起始标记为所述最新的数据操作日志的起始标记。
步骤404、转发系统将所述起始标记发送给源数据库(相当于主库),等待源数据库发送增量数据操作日志的记录。之后,当所述源数据库发生插入数据/更新数据等增量数据操作时,源数据库就会向监听的转发系统发送增量数据操作日志。
所述源数据库增量数据操作日志的获取,是根据转发系统发来的所述数据操作日志的起始标记来获取,每次都是从该起始标记开始增量获取,源数据库会实时判断本地数据操作日志的最新标记,若最新标记高于转发系统发来的所述起始标记,则所述起始标记和最新标记之间的数据操作日志作为增量数据操作日志。
在进一步的实施例中,所述转发系统还进一步判断下游的目标系统是否可达,如果不可达无法接收数据,则转发系统会停止监听源数据库的增量数据操作日志,直到下游目标系统正常再启动监听源数据库的增量数据操作日志。
图5为本发明所述转发系统进行数据转换和转发的流程示意图。数据转换是将源数据库的数据操作日志转换为数据对象,即将数据库中的增、删、改等操作日志转换为系统中的数据对象,也就是说对那些数据表进行了怎样的编辑操作。所述的数据转发是转发系统将所述转换好的数据对象发送给目标系统,具体流程如图5所示,包括:
步骤501,转发系统接收源数据库(主库)的增量数据操作日志。
步骤502,转发系统判断是否收到新的增量数据操作日志,如果未收到新的增量数据操作日志,则结束图5流程;如果收到新的增量数据操作日志,则执行下一步。所述具体的判断方法例如可以是:判断接收到的增量数据操作日志的最新标记是否高于本地记录的所述数据操作日志的初始标记,如果高于则判定为有新的增量数据操作日志,否则判定没有新的增量数据操作日志。
步骤503,转发系统将接收到增量数据操作日志转换为数据对象。
所述数据操作日志通常为字符串或者为自解码字符流,通常的格式有可扩展标记语言(XML)或自解码格式等,这些字符串和字符流对于目标系统来说是无法识别的,因此需要对所述数据操作日志进行转换,转发系统需要解析所述增量数据操作日志中的操作指令、操作对象和具体数据,转换为目标系统可识别的数据格式的数据对象。具体的转换方式是按照目标系统的数据结构,将所述数据操作日志的字符串或字符流转换为具有目标系统数据结构的数据对象。所述数据对象是一种性质相同的数据元素的集合,是数据的一个子集,具体可以是外部实体(例如,产生或使用信息的任何事物)、事物(例如,报表)、行为(例如,打电话)、事件(例如,响警报)、角色(例如,教师、学生)、单位(例如,会计科)、地点(例如,仓库)或结构(例如,文件)等。一般来讲,可以由一组属性来定义的实体都可以被认为是数据对象。
步骤504,转发系统判断目的系统是否可达,如果不可达,则暂停从源数据库获取增量数据操作日志,并等待一段时间,继续判断目标系统是否可达;如果可达,则执行下一步。
步骤505,转发系统将转换后的所述数据对象转发给目标系统。
步骤506,转发系统将本地的数据操作日志的起始标记更新为已完成转发的数据操作日志的最新标记,下次从源数据库监听增量数据操作日志时,将该最新的起始标记发送给源数据库从而获取从该最新起始标记开始的增量数据操作日志。
在一种优选实施例中,如果转发系统接收到增量数据操作日志并转换成数据对象后,可以根据目标系统的实时性要求进行区别处理:
对于实时性要求低于指定要求的目标系统,转发系统判断目标系统是否可达,如果可达则将所述数据对象发送给目标系统,如果不可达则将所述数据对象存储在本地磁盘中,待目标系统可达后将所述数据对象发送给目标系统;
对于实时性要求高于指定要求的目标系统,转发系统判断目标系统是否可达,如果可达则将所述数据对象发送给目标系统,如果不可达则将所述数据对象驻留在本地内存,待目标系统可达后将所述数据对象发送给目标系统。这样处理可以减少数据持久所带来的时间延迟。
同时,一般也会将目标系统按数据的实时性划分为不同的级别,如果是多个目标系统需要一份数据,且都是数据实时较低的系统,就可以采用将转换后的数据对象先存储到本地再进行转发,这样对数据库的压力较小,只是获取一次数据,便可做到多次转发。
接收数据对象的目标系统包括检索服务系统、数据仓库、数据备份系统等,这些目标系统接收到转发系统发送的数据对象,将数据对象按照自己系统的数据结构的处理要求和业务场景进行处理。图6是本发明所应用场景的一种转发系统与目标系统之间的关系示意图。参见图6,所述应用场景可以分为一个转发系统对应一个目标系统的场景,以及一个转发系统对应两个或两个以上目标系统的场景。
对于一个转发系统对应一个目标系统的场景,所述转发系统在将所述增量数据操作日志转换为对应的数据对象后,进一步判断目标系统是否可达,如果可达则将所述数据对象发送给目标系统,如果不可达则将所述数据对象驻留在本地内存,待目标系统可达后将所述数据对象发送给目标系统。这种情况转发系统只是依赖服务器内存,不会将转发数据存储到服务器磁盘当中,所以这种方式转发较快。
对于一个转发系统对应两个或两个以上目标系统的场景,所述转发系统在将所述增量数据操作日志转换为对应的数据对象后,进一步判断目标系统是否可达,如果可达则将所述数据对象发送给目标系统,如果不可达则将所述数据对象存储在本地磁盘中,待目标系统可达后将所述数据对象发送给目标系统。这种情况转发系统在目标系统无法接收数据对象时,需要将待转发的数据对象存储到本地,而向可以正常接收数据的目标系统发送数据对象。这样,目标系统正常运行的系统可以继续接收数据,而异常的目标系统当重新正常运行后就会接收到转发系统存储到本地磁盘当中的数据了。
本发明采用一点获取数据,多点消费的数据转发方法,舍弃了定轮询查询数据库的方式,采用数据监听的方式实现数据获取;而且还可以采用一对一、一对多可以支持不同场景的业务需求。因此本发明不但可以高效的进行数据的获取,而且对数据库的压力最小,对业务系统也没有影响;同时,这种方法也减少了定时查询数据的时间延迟问题,当多个目标系统需要同一份数据时,只需要从转发系统获取,而不会对数据库产生更大的访问压力。
与上述方法对应,本发明还公开了一种数据同步系统,包括转发系统和源数据库,其中:
所述转发系统,用于监听源数据库的增量数据操作日志,接收源数据发送的增量数据操作日志,将所述增量数据操作日志转换为对应的数据对象,将所述数据对象转发给目标系统;
所述源数据库,用于将增量数据操作日志发送给转发系统。
在一种优选实施例中,所述转发系统具体包括:用于通过地址和端口监听源数据库;获取本地数据操作日志的起始标记,将所述起始标记发送给源数据库的模块;
所述源数据库具体包括:用于实时判断本地数据操作日志的最新标记,若最新标记高于转发系统发来的所述起始标记,则所述起始标记和最新标记之间的数据操作日志作为增量数据操作日志,将所述增量数据操作日志发送给转发系统的模块。
在一种优选实施例中,所述转发系统进一步包括:用于在将所述数据对象转发给目标系统之后,进一步按照接收到的数据操作日志的最新标记更新本地的本地数据操作日志的起始标记,之后将更新后的起始标记发送给源数据库的模块。
在一种优选实施例中,所述转发系统具体包括:用于解析所述增量数据操作日志中的操作指令、操作对象和具体数据,转换为目标系统可识别的数据格式的数据对象的模块。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述各实施例的功能模块可以位于一个终端或网络节点,或者也可以分布到多个终端或网络节点上。
另外,本发明的每一个实施例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本发明。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本发明。存储介质可以使用任何类型的记录方式,例如纸张存储介质(如纸带等)、磁存储介质(如软盘、硬盘、闪存等)、光存储介质(如CD-ROM等)、磁光存储介质(如MO等)等。
因此本发明还公开了一种存储介质,其中存储有数据处理程序,该数据处理程序用于执行本发明上述方法的任何一种实施例。
另外,本发明所述的方法步骤除了可以用数据处理程序来实现,还可以由硬件来实现,例如,可以由逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入微控制器等来实现。因此这种可以实现本发明所述方法的硬件也可以构成本发明。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。