本发明专利技术公开了一种数据库系统的数据同步方法、装置及服务器,其中,所述数据库系统的数据同步方法包括:读取源数据库的逻辑变化记录(LCR)组成的事务段;将该事务段同一数据表对应的LCR分发到多个线程中的同一线程,其中多个线程用于执行上述LCR。通过本发明专利技术,多个线程用于执行事务段中的LCR,使得部分或全部不同数据表的数据同步任务可以并行处理,从而提高了数据库系统的数据同步效率。
【技术实现步骤摘要】
本专利技术涉及通信领域,具体而言,涉及一种数据库系统的数据同步方法、装置及服务器。
技术介绍
自从1970年E.F.Codd博士提出最初的理论模型以来,关系型数据库已经成为所有信息系统中必不可少的基础设施之一,其重要性仅次于操作系统,如今已经没有哪个大型的系统能够脱离数据库而存在。在实际应用中,由于业务逻辑的复杂性和功能的模块化设计,往往一个信息系统中会部署有多套数据库,而且这多套库之间需要协同合作共享数据,这就要求各数据库之间能够实现数据同步。为了实现这个目标,各主流数据库厂商都推出了自己的数据同步技术,如Oracle的Streams, Sybase的Replicat1n Server等。其实现数据同步的基本原理都是抓取源数据库的redolog中的LCR,然后到目的数据库上按照逻辑变化记录(Logical ChangeRecord,简称为LCR)发生的顺序逐条进行应用,从而实现目的数据库库的数据与源数据库的数据一致。LCR数据库界对数据库变动记录的通称。一条LCR体现了源数据库中一条特定记录上的一次特定数操纵语言命令(Data Manipulat1n Language,简称为DML)操作,其中内容可以包含:操作类型,变动字段列表,字段变化前值,字段变化后值,主键字段名,主键字段值以及事务相关信息等。依据DML操作的上述信息,就可以将这个DML操作复现。在进行数据同步时,必须按LCR发生的顺序在目的库上进行应用,因为若顺序不一致则会导致源数据库和目的数据库的数据不一致。假设存在两条LCR:LCR1为向数据表t插入一条a,LCR2为更新表t记录a为记录b,若在目的数据库上先执行LCR2则会失败导致数据不一致。鉴于以上原因,当前的处理模式一般是对LCR进行串行化处理,如图1所示,采用一个线程读取LCR,一个线程执行LCR的模式。由于是串行处理,其必然导致数据同步的效率很低。针对相关技术中数据库系统的数据同步效率低的问题,目前尚未提出有效的解决方案。
技术实现思路
针对相关技术中数据库系统的数据同步效率低的问题,本专利技术提供了一种数据库系统的数据同步方法、装置及服务器,以至少解决上述问题。根据本专利技术的一个方面,提供了一种数据库系统的数据同步方法,包括:读取源数据库的LCR组成的事务段;将所述事务段中同一数据表对应的LCR分发到多个线程中的同一线程,其中所述多个线程用于执行所述LCR。优选地,所述数据表包括有关键约束关系的相关数据表;所述方法还包括:将所述相关数据表对应的LCR分发至同一线程。优选地,将所述事务段中同一数据表对应的LCR分发到多个线程中的同一线程,包括:按照数据表与线程的对应关系从所述多个线程中选择接收LCR的线程;将数据表对应的LCR分发至选择得到的线程。优选地,按照以下方式确定所述对应关系:对于无外键约束关系的不同数据表,根据数据表的表名通过预定算法得到对应的不同线程,使一个数据表只对应一个线程,一个线程处理一个或多个数据表;和/或,对于有外键约束关系的不同数据表,通过配置对应到同一个线程。优选地,上述方法还包括:根据所述事务段中LCR中修改前的数据记录当前事务的undo日志ο优选地,上述方法还包括:在所述事务中任一LCR同步失败时,根据所述undo日志进行回退事务。根据本专利技术的另一个方面,提供了一种数据库系统的数据同步装置,包括:读取模块,用于读取源数据库的逻辑变化记录LCR组成的事务段;分发模块,用于将所述事务段中同一数据表对应的LCR分发到多个线程中的同一线程,其中所述多个线程用于执行所述LCR。优选地,所述分发模块包括:选择单元,用于按照数据表与线程的对应关系从所述多个线程中选择接收LCR的线程;分发单元,将数据表对应的LCR分发至选择得到的线程。优选地,上述装置还包括:记录模块,用于根据所述LCR中修改前的数据记录当前事务的undo日志。优选地,上述装置还包括:回退模块,用于在任一所述LCR同步失败时,根据所述undo日志进行回退事务。根据本专利技术的再一个方面,还提供了一种服务器,包括:处理器;读取模块,用于读取源数据库的逻辑变化记录LCR组成的事务段;分发模块,用于将所述事务段中同一数据表对应的LCR分发到多个线程中的同一线程,其中所述多个线程用于执行所述LCR。通过本专利技术,读取源数据库产生的LCR组成的事务段,将同一数据表对应的LCR分发到多个线程中的同一线程,多个线程用于执行LCR,使得部分或全部不同数据表的数据同步事务可以并行处理,从而提高了数据库系统的数据同步效率。【附图说明】此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1是根据相关技术的数据同步方法的示意图;图2是根据本专利技术实施例的数据库系统的数据同步方法的流程图;图3是根据本专利技术实施例的数据库系统的数据同步装置的结构框图;图4是根据本专利技术实施例优选的数据库系统的数据同步装置的结构框图一;图5是根据本专利技术实施例优选的数据库系统的数据同步装置的结构框图二 ;图6是根据本专利技术实施例的服务器的结构框图;图7是根据本专利技术实施例的数据同步机制的示意图;以及图8是根据本专利技术实施例优选的数据同步方法的流程图。【具体实施方式】下文中将参考附图并结合实施例来详细说明本专利技术。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。根据本专利技术实施例,提供了一种数据库系统的数据同步方法。图2是根据本专利技术实施例的数据库系统的数据同步方法的流程图,如图2所示,该方法包括步骤S202至步骤S204。步骤S202,读取源数据库产生的LCR组成的事务段。步骤S204,将同一数据表对应的LCR分发到多个线程中的同一线程,其中上述多个线程用于执行上述LCR。在本专利技术实施例中,用于执行LCR的线程也称为执行线程。对于同一个表执行线程按照该表LCR的先后顺序执行同步,从而保证源数据库和目的数据库数据的一致性。通过本专利技术实施例,读取源数据库的LCR组成的事务段,将同一数据表对应的LCR分发到多个线程中的同一线程,多个线程用于执行LCR,使得部分或全部不同数据表的数据同步事务可以并行处理,从而提高了数据库系统的数据同步效率。需要说明的是,对于不同数据表对应的LCR,也可以按照先后顺序部分分发到相同的进程,在线程数量有限的情况下,可以采用串行处理与并行处理结合的方式,只要存在并行处理则相对于相关技术中的纯串行处理对数据同步效率有所提高。为提供可扩展性,执行LCR的线程的个数可以根据需要进行配置。在本专利技术实施例的一个实施方式中,数据表还可以包括有关键约束关系的相关数据表,即不同的数据表之间存在关联关系。因此,还可以将相关数据表对应的LCR分发至同一线程,以保证源数据库和目的数据库数据的一致性。在本专利技术实施例的一个实施方式中,可以按照预先设置的策略选择接收LCR的线程,以将同一数据表对应的LCR分发到多个线程中的同一线程。例如,可以按照数据表与线程的对应关系从多个线程中选择接收LCR的线程;将数据表对应的LCR分发至选择得到的线程。在实际应用中,可以按照以下方式确定上述的对应关系:对于无外键约束关系的不同数据表,根据数据表的表名本文档来自技高网...
【技术保护点】
一种数据库系统的数据同步方法,其特征在于,包括:读取源数据库的逻辑变化记录LCR组成的事务段;将所述事务段中同一数据表对应的LCR分发到多个线程中的同一线程,其中所述多个线程用于执行所述LCR。
【技术特征摘要】
【专利技术属性】
技术研发人员:乔立秋,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。