增量数据抽取方法、装置及服务器与流程

文档序号:16628568发布日期:2019-01-16 06:20阅读:332来源:国知局
增量数据抽取方法、装置及服务器与流程

本申请涉及数据处理技术领域,尤其涉及一种增量数据抽取方法、装置及服务器。



背景技术:

数据库同步技术通常应用在数据的容灾备份、业务分担等领域,而无论是同一类型数据库之间的同步,还是不同类型数据库之间的同步,在源数据库中进行的数据抽取是数据库同步技术的基础,常用的数据抽取方式有增量数据抽取。

相关技术中的增量数据抽取,通常需要在源数据库系统中安装一个代理程序,由代理程序来完成增量数据的抽取,以及最终的同步。然而这种需要在源数据库系统中安装代理程序的抽取方式,与源数据库耦合比较深,在代理程序出现问题时,会对源数据库的正常运行造成影响。



技术实现要素:

有鉴于此,本申请提供一种增量数据抽取方法、装置及服务器,以解决在源数据库系统安装代理程序抽取增量数据的方式,可能会导致源数据库无法正常运行的问题。

根据本申请实施例的第一方面,提供一种增量数据抽取方法,所述方法应用于能够访问源数据库系统的服务器,所述方法包括:

从所述源数据库系统中获取最新产生的增量数据对应的标识;

依据获取的标识和本地已抽取的最后一条增量数据的标识,确定待抽取增量数据的标识范围;

从所述源数据库系统中抽取并存储所述标识范围对应的增量数据。

根据本申请实施例的第二方面,提供一种增量数据抽取装置,所述装置应用于能够访问源数据库系统的服务器,所述装置包括:

获取模块,用于从所述源数据库系统中获取最新产生的增量数据对应的标识;

确定模块,用于依据获取的标识和本地已抽取的最后一条增量数据的标识,确定待抽取增量数据的标识范围;

抽取模块,用于从所述源数据库系统中抽取并存储所述标识范围对应的增量数据。

根据本申请实施例的第三方面,提供一种服务器,所述设备包括可读存储介质和处理器;

其中,所述可读存储介质,用于存储机器可执行指令;

所述处理器,用于读取所述可读存储介质上的所述机器可执行指令,并执行所述指令以实现上述所述的增量数据抽取方法的步骤。

应用本申请实施例,通过能够访问源数据库系统的服务器,从源数据库系统中获取最新产生的增量数据对应的标识,并依据获取的标识和本地已抽取的最后一条增量数据的标识,确定待抽取增量数据的标识范围,然后再从源数据库系统中抽取并存储该标识范围对应的增量数据。基于上述描述可知,由于本申请不需要在源数据库系统中安装任何代理程序,便可实现增量数据的抽取,从而可以降低增量数据抽取对源数据库正常运行的影响。

附图说明

图1为本申请根据一示例性实施例示出的一种增量数据抽取方法的实施例流程图;

图2为本申请根据一示例性实施例示出的另一种增量数据抽取方法的实施例流程图;

图3为本申请根据一示例性实施例示出的一种服务器的硬件结构图;

图4为本申请根据一示例性实施例示出的一种增量数据抽取装置的实施例结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

增量数据指的是数据库以某个时间点为基准,在此时间点之后,对数据库中数据的插入、修改和删除都属于增量数据。增量数据抽取技术,指的是要准确感知捕捉到这些增量数据变化,将这些变化数据提取出来。

目前采用的增量数据抽取技术,由于需要在源数据库系统中安装一个代理程序(如oracle数据库的owb工具、sqlserver数据库的integrationservices工具等),以抽取源数据库中变化的增量数据,这样增量数据的抽取过程与源数据库耦合比较深,如果抽取增量数据的代理程序出现问题,很可能对源数据库的正常运行造成影响。

基于此,本申请通过能够访问源数据库系统的服务器完成增量数据的抽取和同步,对于增量数据的抽取过程,服务器可以从源数据库系统中获取最新产生的增量数据对应的标识,并依据该标识和本地已抽取的最后一条增量数据的标识,确定待抽取增量数据的标识范围,然后再从源数据库系统中抽取并存储该标识范围对应的增量数据。由于本申请不需要在源数据库系统中安装任何代理程序,便可实现增量数据的抽取,从而可以降低增量数据抽取对源数据库正常运行的影响。

下面以具体实施例对本申请技术方案进行详细阐述。

图1为本申请根据一示例性实施例示出的一种增量数据抽取方法的实施例流程图,该增量数据抽取方法可以应用在能够访问源数据库系统的服务器上,如图1所示,该增量数据抽取方法包括如下步骤:

步骤101:从源数据库系统中获取最新产生的增量数据对应的标识。

在一实施例中,由于源数据库系统中的重做日志(redologfile)是lgwr进程从数据库实例中的redologbuffer写入的,一个重做日志中包含多个redologfilegroup(重做日志组),每个redologfilegroup是循环利用的,即一个redologfilegroup写满后,才写下一个redologfilegroup;归档日志(archivelogfile)是当数据库运行在归档模式下时,一个redologfilegroup写满后,由arcn进程将redologfilegroup记录的增量数据备份到归档日志中,然后再将该redologfilegroup清空,以用于下一次使用。通常归档日志结合全备份,是用于数据库出现问题后的恢复使用。基于上述描述可知,由于重做日志中的增量数据为最近一段时间内生成的增量数据,因此重做日志中的增量数据的实时性高于归档日志中的增量数据。从而服务器可以通过查询源数据库系统中重做日志组最新记录的增量数据对应的标识,并将查询到的标识确定为最新产生的增量数据对应的标识。

其中,重做日志对于每条增量数据都标记有一个唯一标识、以用于区分不同增量数据,例如,每条增量数据的标识可以是其scn值,即重做日志为每条增量数据,按照添加顺序依次为每条增量数据添加一个编号,即scn值。因此服务器可以查询到每条增量数据的标识。重做日志记录的增量数据可以包括:生成该增量数据的生成时间点、变化数据所在的源表名称、变化数据内容以及操作类型,对于操作类型为插入类型的增量数据,其包含插入时间点、插入数据所在的源表名称、插入的数据内容以及插入标识i;对于操作类型为修改类型的增量数据,其包含修改时间点、修改数据所在的源表名称、修改前的数据内容和修改后的数据内容,以及修改标识u;对于操作类型为删除类型的增量数据,其包含删除时间点、删除数据所在的源表名称、删除的数据内容以及删除标识d。

在一实施例中,源数据库系统也可以将对数据库的最近一次操作产生的增量数据的标识记录在一个预设位置处,从而服务器也可以从源数据库系统中的该预设位置处获取最新产生的增量数据对应的标识。

在一实施例中,服务器可以每隔预设时间周期获取一次最新产生的增量数据对应的标识,以进行后续的抽取步骤。

步骤102:依据获取的标识和本地已抽取的最后一条增量数据的标识,确定待抽取增量数据的标识范围。

针对上述步骤101和步骤102的过程,在一示例性场景中,假设重做日志中包含3个redologfilegroup,其中一个redologfilegroup已写满,正在被备份到归档日志中,包含的增量数据的标识范围为scn1~scn10,另一个redologfilegroup未写满,包含的增量数据的标识范围为scn11~scn18,最后一个redologfilegroup中为空,由此可得,获取的最新产生的增量数据对应的标识是scn18,服务器本地已抽取的最后一条增量数据的标识为scn6,那么可以确定待抽取增量数据的标识范围为scn7~scn18。

在又一示例性场景中,假设重做日志中包含的3个redologfilegroup,一个redologfilegroup包含的增量数据的标识范围为scn59~scn60,另一个redologfilegroup包含的增量数据的标识范围为scn61~scn68,最后一个redologfilegroup为空,由此可得,获取的最新产生的增量数据对应的标识是scn68,服务器本地已抽取的最后一条增量数据的标识为scn40,那么可以确定待抽取增量数据的标识范围为scn41~scn68,其中标识范围为scn41~scn58的增量数据已经被备份到归档日志。

步骤103:从源数据库系统中抽取并存储该标识范围对应的增量数据。

针对如何从源数据库系统中抽取并存储标识范围对应的增量数据,可以参见下述图2所示实施例的描述,在此暂不详述。

本申请实施例中,通过源数据库系统中已接入的服务器,从源数据库系统中获取重做日志记录的增量数据对应的标识,并依据获取的标识和本地已抽取的最后一条增量数据的标识,确定待抽取增量数据的标识范围,然后再从源数据库系统中抽取并存储该标识范围对应的增量数据。基于上述描述可知,由于本申请不需要在源数据库系统中安装任何代理程序,便可实现增量数据的抽取,从而可以降低增量数据抽取对源数据库正常运行的影响。

图2为本申请根据一示例性实施例示出的另一种增量数据抽取方法的实施例流程图,基于上述图1所示实施例的基础上,以如何从源数据库系统中抽取并存储该标识范围对应的增量数据为例进行示例性说明,如图2所示,该增量数据抽取方法可包括:

步骤201:将标识范围划分为多段标识。

在一实施例中,可以按照预设大小,对该标识范围进行分段。例如预设大小为5,该标识范围为scn7~scn18,经过分段之后,该标识范围包括一段标识scn7~scn11,二段标识scn12~scn16,三段标识scn17~scn18。

步骤202:通过运行各个抽取线程,并行从源数据库系统中抽取每段标识对应的增量数据。

其中,服务器中的抽取线程数量可以根据实际需求进行设置。

例如,假设抽取线程数量有2个,标识范围划分了三个段:一段标识、二段标识以及三段标识,2个抽取线程运行之后,第一抽取线程抽取一段标识对应的增量数据,同时第二抽取线程抽取二段标识对应的增量数据,在其中任何一个抽取线程完成抽取后,接着抽取三段标识对应的增量数据。

在一实施例中,可以先从所述源数据库系统中,获取每个重做日志组记录的增量数据的起止标识,从而针对每段标识,依据该起止标识判断该段标识中是否存在重做日志组未记录的标识,若存在,则从归档日志中抽取重做日志组未记录的标识对应的增量数据,并确定该段标识除所述重做日志组未记录的标识之外其它标识所在的重做日志组,并从确定的重做日志组中抽取其它标识对应的增量数据,若不存在,则直接确定该段标识所在的重做日志组,并从确定的重做日志组中抽取该段标识对应的增量数据。

如上述步骤102所述的第二个场景,3个重做日志组中,一个的起止标识为scn59和scn60,另一个的起止标识为scn61和scn68,最后一个为空。假设待抽取增量数据的标识范围为scn41~scn68分为三段,一段为scn41~scn49,二段为scn50~scn58,三段为scn59~scn68,其中一段和二段的标识对应的增量数据均需要从归档日志抽取。

步骤203:将抽取的增量数据按照标识从小到大进行排序,并将排序后的增量数据存入缓存。

在一实施例中,由于重做日志中规定每条增量数据的大小不能超过某一阈值,如果超过阈值,则将该条完整的增量数据分成多条增量数据记录到重做日志中。因此,在抽取到增量数据之后,可以将抽取的增量数据按照标识从小到大进行排序,并将排序后的增量数据再存入缓存,从而可以得到原生的增量数据。

需要说明的是,将排序后的增量数据存入缓存之后,可以从所述缓存中读取增量数据,并通过运行各个处理线程,并行处理读取到的增量数据,其中,每个处理线程每次处理预设数量的增量数据,然后将处理后的增量数据按照标识从小到大进行排序之后,依次存储到预设消息队列中,以用于后续的同步操作。由于通过多个处理线程并行处理增量数据,因此可以提高增量数据的处理速度。又由于放入消息队列中的增量数据是经过排序后的增量数据,因此可以保证数据的一致性。

其中,每个处理线程每次处理的增量数据的数量可以预先根据实践经验设置,并行处理读取到的增量数据的处理方式可以是数据格式转换,该处理过程指的是,数据由源数据库同步到目标数据库之前的一个中间过程,后续在同步到目标数据库时,只要对消息队列中的数据简单的做一次适配即可完成同步。在数据量比较大的情况下,处理线程的处理时间比较长,因此可以每处理一条增量数据,将处理后的增量数据先存入一个预设缓存,当所有增量数据处理完之后,再从预设缓存中将增量数据读取出来进行排序,并将排序后的增量数据存入预设消息队列中。

本实施例中,在抽取过程中,通过将标识范围划分多段标识,由各个抽取线程,并行抽取每段标识对应的增量数据,可以提高抽取速度,在将抽取的增量数据按照标识从小到大排序之后再存入缓存,可以保证增量数据的原生状态。

图3为本申请根据一示例性实施例示出的一种服务器的硬件结构图,该服务器包括:通信接口301、处理器302、机器可读存储介质303和总线304;其中,通信接口301、处理器302和机器可读存储介质303通过总线304完成相互间的通信。处理器302通过读取并执行机器可读存储介质302中与增量数据抽取方法的控制逻辑对应的机器可执行指令,可执行上文描述的增量数据抽取方法,该方法的具体内容参见上述实施例,此处不再累述。

本申请中提到的机器可读存储介质303可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

图4为本申请根据一示例性实施例示出的一种增量数据抽取装置的实施例结构图,该增量数据抽取方法可以应用在已接入源数据库系统中的服务器上,如图4所示,所述增量数据抽取装置包括:

获取模块410,用于从所述源数据库系统中获取重做日志记录的增量数据对应的标识;

确定模块420,用于依据获取的标识和本地已抽取的最后一条增量数据的标识,确定待抽取增量数据的标识范围;

抽取模块430,用于从所述源数据库系统中抽取并存储所述标识范围对应的增量数据。

在一可选的实现方式中,所述抽取模块430,具体用于将所述标识范围划分为多段标识;通过运行各个抽取线程,并行从源数据库系统中抽取每段标识对应的增量数据;将抽取的增量数据按照标识从小到大进行排序,并将排序后的增量数据存入缓存。

在一可选的实现方式中,所述抽取模块430,还具体用于在并行从源数据库系统中抽取每段标识对应的增量数据过程中,从所述源数据库系统中,获取每个重做日志组记录的增量数据的起止标识;针对每段标识,依据所述起止标识判断该段标识中是否存在重做日志组未记录的标识;若存在,则从归档日志中抽取所述重做日志组未记录的标识对应的增量数据,并确定该段标识除所述重做日志组未记录的标识之外其它标识所在的重做日志组,并从确定的重做日志组中抽取其它标识对应的增量数据;若不存在,则直接确定该段标识所在的重做日志组,并从确定的重做日志组中抽取该段标识对应的增量数据。

在一可选的实现方式中,所述装置还包括(图4中未示出):

处理模块,用于在所述抽取模块430将排序后的增量数据存入缓存之后,从所述缓存中读取所述增量数据;通过运行各个处理线程,并行处理读取到的增量数据;其中,每个处理线程每次处理预设数量的增量数据;将处理后的增量数据按照标识从小到大进行排序之后,依次存储到预设消息队列中。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1