一种前后台数据库的同步方法及装置的制作方法

文档序号:6471747阅读:165来源:国知局

专利名称::一种前后台数据库的同步方法及装置的制作方法
技术领域
:本发明涉及计算机领域,特别涉及一种前后台数据库的同步方法及装置。
背景技术
:随着计算机技术的发展,用户对数据存储管理的要求越来越高,相应地,各种各样的数据存储服务也应运而生。其中,Oracle数据库技术便是被广泛应用的数据存储管理技术之一。Oracle数据库技术的异构服务是该技术的一大特点,所谓异构服务是指,存在两个数据库,一个为前台数据库,用于实时收集用户相关数据,一个为后台数据库,用于对收集的用户相关数据进行整理规划并保存。前台数据库和后台数据库所保存的数据要定期进行同步,以保持一致。但是,现有技术下,前台数据库和后台数据库进行同步的流程存在以下问题1、在前后台数据库同步流程中,不存在独立执行的任务,所有任务都按照设定的顺序串行执行,即每一个任务都需要在其前一个任务执行完毕后才开始启动,这样,一但某个任务出现错误,那么,整个前后台数据库同步流程便会终止,需要人工对其进行维护后,再重新从头开始执行,显然,这严重降低了前后台数据库同步流程的执行效率,在很有程度上降低了用户体验。2、整个前后台数据库同步流程的执行需要读取人开发的sql语句,这样,容易因为人为的错误而导致前后台数据库同步流程出现差错。
发明内容本发明实施例提供一种前后台数据库的同步方法,用以提高前后台数据库同步流程的执行效率。本发明实施例提供的具体技术方案如下—种同步前后台数据库的方法,包括获取预设的用以完成前后台数据库同步的任务内容,并将该预设的任务内容划分为若干子任务;对若干子任务进行分组,每组中包含至少一个子任务;执行各分组中的子任务;其中,各分组任务并行执行。—种服务器,包括存储单元,用于保存预设的任务内容;确定单元,用于获取预设的用以完成前后台数据库同步的任务内容,并将该预设的任务内容划分为若干子任务;分组单元,用于对若干子任务进行分组,每组中包含至少一个子任务;执行单元,用于执行各分组中的子任务;其中,各分组任务并行执行。本发明实施例中,在执行前后台数据库同步流程时,服务器先获取预设的用以完成前后台数据库同步的任务内容,并将该预设的任务内容划分为若干子任务;再对若干子3任务进行分组,每组中包含至少一个子任务;接着,执行各分组中的子任务;其中,各分组任务并行执行。这样,相对于现有技术下各子任务串行执行的方式,本发明实施例中,归属于不同分组的子任务之间并行执行的方式使得各分组中的子任务相互独立,从而减少了子任务之间的依赖性,在一定程度上縮短了执行子任务所需的时间,进而有效地提高了前后台数据库同步流程的效率。图1A为本发明实施例中系统架构示意图;图IB为本发明实施例中服务器功能结构示意图;图2为本发明实施例中前后台数据库同步流程图;图3为本发明实施例中子任务分组示意图。具体实施例方式为了提高前后台数据库同步流程的执行效率,本发明实施例中,以Oracle数据库为例,在对前后台数据库保存的数据进行同步时,先获取预设的用以完成前后台数据库同步的任务内容,并将该预设的任务内容划分为若干子任务;再对若干子任务进行分组,每组中包含至少一个子任务;接着,执行各分组中的子任务;其中,各分组任务并行执行。下面结合附图对本发明优选的实施方式进行详细说明。参阅图IA所示,本实施例中,需要同步的前后台数据库分别安装在前台数据库服务器和后台数据库服务器中,前后台数据库同步流程可以由后台数据库服务器执行,也可以由专门设置的服务器执行,本实施例中,以后一种情况为例进行介绍。参阅图IB所示,本实施例中,用于执行前后台数据库同步流程的服务器包括存储单元100、确定单元101、分组单元102和执行单元103。存储单元IOO,用于保存预设的任务内容;确定单元101,用于获取预设的用以完成前后台数据库同步的任务内容,并将该预设的任务内容划分为若干子任务;分组单元102,用于对若干子任务进行分组,每组中包含至少一个子任务;执行单元103,用于执行各分组中的子任务;其中,各分组任务并行执行。基于上述服务器,参阅图2所示,本实施例中,针对Oracle数据库,服务器执行前后台数据同步更新的详细流程如下步骤200:获取预设的任务内容,即需要进行同步的数据内容。本实施例中,任务内容由管理人员预先配置,并以数据库表的形式进行保存,根据任务内容的多少,可以设置一张或多张数据库表(以下称为任务表),例如,如表l所示,记录有任务内容的一张任务表包含了字段名称、字段类型和内容描述三类表项,其中,字段名称用于指示本次前后台数据库同步流程需要针对的数据内容,字段类型用于指示各数据内容的数据类型,而内容描述用于对各数据内容进行解释说明。表1<table>tableseeoriginaldocumentpage5</column></row><table>StatusNumber状态1为insert-truncate同歩方式;2为人工生成sql语句同歩方式;3为无效;4为多个库的truncate-insert同歩方式;5为从多个库同歩,并需要人工插入sql语句的同歩方式;6为该模块完成后还需要进行附加处理的同歩方式;<table>tableseeoriginaldocumentpage5</column></row><table>没有则填o步骤210:将预设的任务内容划分为若干子任务,并对各子任务进行分组。通常情况下,预设的任务内容都会包含若干个如表1所示的任务表,本实施例中,将一张任务表设置对应一个原子级别的子任务,并根据每个任务表的名称和Oracle数据字典的功能,来动态生成执行对应的子任务所需要的执行语句;而所谓对若干子任务进行分组,即是将若干任务表划分至不同的组中。参阅图3所示,本实施例中,假设服务器根据表1,确定需要执行n个子任务来完成前后台数据库同步流程,那么,服务器可以根据预设的规则对这n个子任务进行分组,如图3所示,本实施例中,将n个子任务分成了F组,其中,1组包括子任务1、子任务2和子任务3;2组包括子任务4、子任务5和子任务6;F组包括子任务n-2、子任务n-l和子任务n。当然,每组中包含的子任务的数量可以根据实际情况而相应设置,另一方面,各组之间包含的子任务的数目可以相同,也可以不相同,本实施例仅以每组均包含3个子任务为例进行介绍,在此不再赘述。步骤220:为每组子任务设置一个对应的完成状态标识,本实施例中,该完成状态标识用于指示归属于同一组的子任务是否均以完成。本实施例中,当某分组的完成状态标识为"O"时,表示该分组中至少有一个子任务尚未完成,而当某分组的完成状态标识为"1"时,表示该分组中所有的子任务均已完成。步骤230:开始并行执行各分组中的子任务。本实施例中,归属于同一分组中的子任务是串行执行,例如,在l组中,子任务l执行完毕,才开始执行子任务2。子任务2执行完毕,才开始执行子任务3;同时,各分组包含的子任务是并行执行,例如,1组、2组......F组中各自当前执行的子任务是并行执行的。这样,便可以减少各子任务之间的依赖性,在一定程度上加快前后台数据库同步流程的执行效率,提高更新速度。步骤240:对各组的完成状态标识进行检测,判断是否存在子任务均已执行成功的分组,若是,则进行步骤250;否则,进行步骤260。步骤250:将子任务均已完成的分组的执行结束时间记录在预设的任务完成表中,已具有执行结束时间的分组,将不再对其完成状态标识进行检测;接着,进行步骤260。参阅表2所示,假设在一轮检测中,获得的检测结果为1组对应的完成状态标识为"0",用于指示1组中至少有一个子任务尚未完成,而2组和F组对应的完成状态标识均为"l",用于指示2组和F组中所有的子任务均已完成;则将2组和F组的执行结束时间记录在如表3所示的任务完成表中,在下一轮检测各组的完成状态标识时,任务完成表中记录有执行结束时间的各分组将不再进行检测。表2<table>tableseeoriginaldocumentpage6</column></row><table>表3<table>tableseeoriginaldocumentpage6</column></row><table>步骤260:进一步判断是否存在子任务尚未完成的分组,若是,则进行步骤270,否则,进行步骤280。实际应用中,判断是否存在子任务尚未完成的分组的方法有很多种,本实施例中,采用以下方式进行判断判断任务完成表中记录的各分组所包含的子任务的总数目,是否等于在步骤210中根据表1记载的任务内容所确定的子任务的总数目,若相等,则表示不存在子任务尚未完成的分组,若不相等,则表示存在子任务尚未完成的分组。上述方式仅为一较佳的实施方式,其他方式不再赘述。步骤270:等待设定时长,返回步骤240。步骤280:结束当前流程,整个前后台数据库同步流程执行完毕。基于上述实施例,为了加快整个前后台数据库同步流程的执行效率,较佳地,可以配置一张如表4所示的维表,其中,记录有由各个子任务所触发的后续流程,本实施例中,所谓后续流程是指前后台数据库同步流程后的聚合,汇总等处理流程;一旦某个分组中所有子任务执行完毕,即该分组的完成状态标识记为"l",则由该分组中的各子任务所触发的后续流程便可以开始运作,而无需等待其他分组中的子任务执行完毕,这样,使得各分组包含的子任务之间相互独立,亦可在一定程度上加快整个前后台数据库同步流程的执行效率。表4<table>tableseeoriginaldocumentpage7</column></row><table>另一方面,为了进一步加快整个前后台数据库同步流程的执行效率,还可以采用以下方式中的一种或任意组合—、若后台数据库中的某张维表记载的数据量较大,需要从前台数据库中的不同dblink获取同步数据,则可以配置一张用于指示从不同的dblink加载数据的维表,该维表的内容如表5所示表5<table>tableseeoriginaldocumentpage8</column></row><table>二、在前后台数据库同步流程中,会出现子任务执行错误的状况,通常情况下,出现执行错误的子任务会被重新执行,但是,这些出现执行错误的子任务中存在一部分无需重新执行的子任务,也就是说,即使这部分子任务出现执行错误,也不会影响最终的任务执行结果,那么,可以配置如表6所示的一张维表,用于指示出现执行错误后无需重新执行的子任务,其内容如下表6<table>tableseeoriginaldocumentpage8</column></row><table>在前后台数据库同步流程中,若服务器遇到出现执行错误的子任务,则遍历如表5所示的维表,若维表中记录有对应的子任务,则不再重新执行该子任务,而是直接进行后续流程;若维表中未记录有对应的子任务,则需要重新执行该子任务直到成功执行完毕。三、可以将执行各子任务时所需要的全部或部分执行语句记录在如表7所示的维表中,一旦前后台数据库同步流程出现错误,可以直接根据表7所示的维表确定重新执行部分或整个流程所需要的执行语句,而无需通过人工进行纠错处理。表7<table>tableseeoriginaldocumentpage8</column></row><table>使用上述三种方式中的一种或者任意组合都可以实现提高前后台数据库同步流程执行效率的技术效果,并不限于其中的一种,在此不再赘述。综上所述,本发明实施例中,在执行前后台数据库同步流程时,服务器先获取预设的用以完成前后台数据库同步的任务内容,并将该预设的任务内容划分为若干子任务;再对若干子任务进行分组,每组中包含至少一个子任务;接着,执行各分组中的子任务,其中,各分组任务并行执行。这样,相对于现有技术下各子任务串行执行的方式,本发明实施例中,归属于不同分组的子任务之间并行执行的方式使得各分组中的子任务相互独立,从而减少了子任务之间的依赖性,在一定程度上縮短了执行子任务所需的时间,进而有效地提高了前后台数据库同步流程的效率。显然,本领域的技术人员可以对本发明中施例进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明实施例中的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明中的实施例也意图包含这些改动和变型在内。权利要求一种同步前后台数据库的方法,其特征在于,包括获取预设的用以完成前后台数据库同步的任务内容,并将该预设的任务内容划分为若干子任务;对若干子任务进行分组,每组中包含至少一个子任务;执行各分组中的子任务;其中,各分组任务并行执行。2.如权利要求1所述的方法,其特征在于,归属于同一分组的子任务按照预设的顺序串行执行。3.如权利要求1或2所述的方法,其特征在于,为各分组分别设置用于指示子任务完成状态的指示标识,当根据所述指示标识确定某一分组中的子任务均已执行完毕时,触发该分组中各子任务对应的后续流程。4.如权利要求1或2所述的方法,其特征在于,在执行各分组中的子任务时,若子任务出现执行错误,则将所述子任务与预设条件进行比较,若所述子任务符合所述预设条件,则不再重新执行该子任务,继续执行后续流程。5.如权利要求1或2所述的方法,其特征在于,根据需要同步的数据内容确定需要执行的子任务时,将执行各子任务所需的全部或部分执行语句记录在预设的配置表中,当前后台数据库同步流程出现错误时,根据所述配置表中记载的执行语句重新执行发生错误的流程部分。6.—种服务器,其特征在于,包括存储单元,用于保存预设的任务内容;确定单元,用于获取预设的用以完成前后台数据库同步的任务内容,并将该预设的任务内容划分为若干子任务;分组单元,用于对若干子任务进行分组,每组中包含至少一个子任务;执行单元,用于执行各分组中的子任务;其中,各分组任务并行执行。7.如权利要求6所述的服务器,其特征在于,包括所述执行单元按照预设的顺序串行执行归属于同一分组的子任务。8.如权利要求6或7所述的服务器,其特征在于,所述分组单元为各分组分别设置用于指示子任务完成状态的指示标识,所述执行单元根据所述指示标识确定某一分组中的子任务均已执行完毕时,触发该分组中各子任务对应的后续流程。9.如权利要求6或7所述的服务器,其特征在于,所述执行单元在执行各分组中的子任务时,若子任务出现执行错误,则将所述子任务与预设条件进行比较,若所述子任务符合所述预设条件,则不再重新执行该子任务,继续执行后续流程。10.如权利要求6或7所述的服务器,其特征在于,所述确定单元根据需要同步的数据内容确定需要执行的子任务时,将执行各子任务所需的全部或部分执行语句记录在预设的配置表中,所述执行单元在前后台数据库同步流程出现错误时,根据所述配置表中记载的执行语句重新执行发生错误的流程部分。全文摘要本发明公开了一种前后台数据库的同步方法,该方法为获取预设的用以完成前后台数据库同步的任务内容,并将该预设的任务内容划分为若干子任务;对若干子任务进行分组,每组中包含至少一个子任务;执行各分组中的子任务;其中,各分组任务并行执行。这样,相对于现有技术下各子任务串行执行的方式,归属于不同分组的子任务之间并行执行的方式使得各分组中的子任务相互独立,从而减少了子任务之间的依赖性,在一定程度上缩短了执行子任务所需的时间,进而有效地提高了前后台数据库同步流程的效率。本发明同时公开了一种服务器。文档编号G06F17/30GK101751429SQ200810239529公开日2010年6月23日申请日期2008年12月12日优先权日2008年12月12日发明者位莅,刘宁,徐智江,袁长风申请人:中国移动通信集团山东有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1