数据更新方法、装置、设备及计算机可读存储介质与流程

文档序号:17442237发布日期:2019-04-17 04:55阅读:340来源:国知局
数据更新方法、装置、设备及计算机可读存储介质与流程

本发明涉及数据库技术领域,尤其涉及一种数据更新方法、装置、设备及计算机可读存储介质。



背景技术:

在相关技术中,不同数据库之间大批量数据同步,目标库的数据需要根据源头库的更新随之进行更新。当源头库为全量更新时,目标库也只能随之进行全量更新。现有技术中通常是对目标库定期(例如每天)进行全量更新,这样无论源头库是否更新,均会定期对目标库进行全量更新,这样由于全量更新时数据量太大,占用应用程序服务器cpu等资源,导致应用程序系统运行缓慢。



技术实现要素:

本发明的主要目的在于提供一种数据更新方法、装置、设备及计算机可读存储介质及计算机可读存储介质,旨在解决无论源头库是否更新,均会定期对目标库进行全量更新,导致占用应用程序服务器的中央处理器空间、应用程序系统运行缓慢的技术问题。

为实现上述目的,本发明提供一种数据更新方法,包括步骤:

利用预设查询语句从源头库中提取一条随机数据,所述源头库为全量更新库;

获取目标库的最近更新日期,并判断所述随机数据的更新日期是否在目标库的最近更新日期之后;

若所述随机数据的更新日期不在所述最近更新日期之后,则不更新所述目标库的数据;

若所述随机数据的更新日期在所述最近更新日期之后,则将所述源头库的数据全量更新至所述目标库。

优选地,所述从源头库中提取一条随机数据的步骤包括:

按照预设时间间隔从所述源头库中提取一条随机数据。

优选地,所述将所述源头库的数据全量更新至所述目标库的步骤之后,所述数据更新方法还包括步骤:

保存本次所述全量更新的日期为所述目标库的最近更新日期。

优选地,所述将所述源头库的数据全量更新至所述目标库的步骤包括:

为所述源头库的每条数据配置一个更新常量值;

将所述源头库中的每条数据更新至目标库并在每条数据更新至目标库时,删除一个对应的所述常量值,直到删除所有常量值。

优选地,所述若所述随机数据的更新日期在所述最近更新日期之后,则将所述源头库的数据全量更新至所述目标库的步骤包括:

若所述随机数据的更新日期在目标库的最近更新日期之后,则获取所述目标库的服务器的中央处理器的负荷;

判断所述中央处理器的负荷是否小于第一预设阈值;

若所述中央处理器的负荷小于所述第一预设阈值,则将所述源头库的数据全量更新至所述目标库。

优选地,所述将所述源头库的数据全量更新至所述目标库的步骤包括:

将所述源头库的数据更新至所述目标库并获取目标库的服务器的中央处理器的负荷;

判断所述中央处理器的负荷是否大于或等于第二预设阈值;

若所述中央处理器的负荷大于或等于第二预设阈值,则发出提醒消息以提醒用户保存更新进度。

优选地,所述将所述源头库的数据全量更新至所述目标库的步骤还包括:

获取更新状态,并判断更新是否中断;

若更新已中断,则判断所述中央处理器的负荷是否小于第三预设阈值;

若所述中央处理器的负荷小于第三预设阈值,则恢复更新。

本发明还提供一种数据更新装置,包括:

数据提取模块,用于利用预设查询语句从源头库中提取一条随机数据,所述源头库为全量更新库;

判断模块,用于获取目标库的最近更新日期,并判断所述随机数据的更新日期是否在目标库的最近更新日期之后;

第一执行模块,用于在所述随机数据的更新日期不在所述最近更新日期之后时,不更新所述目标库的数据;

第二执行模块,用于在所述随机数据的更新日期在所述最近更新日期之后时,则将所述源头库的数据全量更新至所述目标库。

本发明还提供一种设备,所述设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的数据更新程序,其中所述数据更新程序被所述处理器执行时,实现如上任一项所述的数据更新方法的步骤。

本发明还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据更新程序,其中所述户端数据更新程序被处理器执行时,实现如上任一项所述的户端数据更新方法的步骤。

本发明技术方案中,利用预设查询语句从源头库中提取一条随机数据,源头库为全量更新库;获取目标库的最近更新日期,并判断随机数据的更新日期是否在目标库的最近更新日期之后;若随机数据的更新日期在最近更新日期之后,则将源头库的数据全量更新至目标库;若随机数据的更新日期不在最近更新日期之后,则不更新目标库的数据。这样通过判断源头库中的一条随机数据的更新日期是否在目标库的最近更新日期之后来判断源头库是否更新,从而判断是否需要更新目标库,当随机数据的更新日期在目标库的最近更新日期之前或与最近更新日期相同时,也即源头库没有更新时,则不需要更新目标库,从而可以避免目标库重复更新数据而导致占用应用程序服务器的中央处理器等资源而使得应用程序运行缓慢。

附图说明

图1为本发明实施例方案中涉及的设备的硬件结构示意图;

图2为本发明数据更新方法第一实施例的流程示意图;

图3为本发明数据更新方法第二实施例的流程示意图;

图4为本发明数据更新方法第三实施例的流程示意图;

图5为本发明数据更新方法第四实施例的流程示意图;

图6为本发明数据更新方法第五实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例涉及的数据更新方法主要应用于设备,该设备可以是pc、便携计算机、移动设备等具有显示和处理功能的设备。

参照图1,图1为本发明实施例方案中涉及的设备结构示意图。本发明实施例中,设备可以包括处理器1001(例如cpu),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口);存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的硬件结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

继续参照图1,图1中作为一种计算机可读存储介质的存储器1005可以包括操作系统、网络通信模块以及数据更新程序。

在图1中,网络通信模块主要用于连接服务器,与服务器进行数据通信;而处理器1001可以调用存储器1005中存储的数据更新程序,并执行以下各实施例的数据更新方法中的步骤。

基于上述设备的硬件结构,提出本发明数据更新方法的各个实施例。

本发明提供一种数据更新方法。

请参阅图2,在本发明一实施例中,数据更新方法包括以下步骤:

s11:利用预设查询语句从源头库中提取一条随机数据,源头库为全量更新库;

可预先设定一条用于从源头库中随机提取一条数据的sql语句。源头库可以为postgresql数据库。源头库中包含多条数据,源头库更新数据时,所有数据全部更新。目标库需要使用源头库的数据,源头库的数据进行全量更新后,目标库的数据也需要根据源头库进行全量更新。如果源头库的数据没有更新,那么目标库的数据也不需要根据源头库的数据进行更新。与目标库对应的应用程序系统可从目标库获取对应的数据。目标库的数据存储在应用程序系统的服务器。

s12:获取目标库的最近更新日期,并判断随机数据的更新日期是否在目标库的最近更新日期之后;

可以随机从目标库中提取一条数据,然后将该条数据的最近更新日期作为目标库的最近更新日期。也可以以在目标库每次更新完之后,将更新日期作为最近更新日期保存至预设地址,这样需要获得最近更新日期时,可从预设地址获取最近更新日期。由于源头库为全量更新库,那么源头库中每条数据的更新日期相同。因此,只需要获取一条随机数据的更新日期即可得到源头库的更新日期,并可通过判断随机数据的更新日期是否在目标库的最近更新日期之后来判断在目标库的最近更新日期之后,源头库是否更新了数据。

s13:若随机数据的更新日期不在最近更新日期之后,则不更新目标库的数据。

若随机数据的更新日期在最近更新日期之前或与最近更新日期相同,则说明在目标库的最近更新日期之后,源头库并没有更新数据,则不需要更新目标库的数据。

s14:若随机数据的更新日期在最近更新日期之后,则将源头库的数据全量更新至目标库;

若随机数据的更新日期在最近更新日期之后,则说明在目标库最近一次更新之后,源头库的数据进行了更新,那么则需要将源头库的数据全量更新至目标库。

具体地,将源头库的数据全量更新至目标库时,可先为所述源头库的每条数据配置一个更新常量值;将所述源头库中的每条数据更新至目标库并在每条数据更新至目标库时,删除一个对应的所述常量值,直到删除所有常量值。

本发明技术方案中,利用预设查询语句从源头库中提取一条随机数据,源头库为全量更新库;获取目标库的最近更新日期,并判断随机数据的更新日期是否在目标库的最近更新日期之后;若随机数据的更新日期不在最近更新日期之后,则不更新目标库的数据;若随机数据的更新日期在最近更新日期之后,则将源头库的数据全量更新至目标库。这样通过判断源头库中的一条随机数据的更新日期是否在目标库的最近更新日期之后来判断源头库是否更新,从而判断是否需要更新目标库,当随机数据的更新日期在目标库的最近更新日期之前或与最近更新日期相同时,也即源头库没有更新时,则不需要更新目标库,从而可以避免目标库重复更新数据而导致占用应用程序服务器的中央处理器等资源而使得应用程序运行缓慢。

需要说明的是,本发明实施例的数据更新方法可由本发明上述实施例的设备执行。设备安装有etl工具,可利用etl工具完成步骤s14。etl工具可以但不限于是kettle。

进一步地,步骤s11中,可按照预设时间间隔从源头库中提取一条随机数据。例如当目标库对应的应用程序系统在工作时使用率较高而在周末使用率较低时,可将预设时间设置为7天,在每周末从源头库提取一条随机数据,并判断随机数据的更新时间是否在目标库的最近更新日期之后,如果随机数据的更新日期在最近更新日期之后,则将源头库的数据全量更新至目标库,这样在应用库对应的应用程序系统使用率较低时更新目标库,更加有效地避免因目标库全量更新导致应用程序系统运行缓慢的问题。

请参阅图3,基于上述实施例,在步骤s14之后,数据更新方法还包括步骤:

s15:保存本次全量更新的日期为目标库的最近更新日期。

如此,在目标库每次全量更新之后,将全量更新的日期保存为最近更新日期,这样下次执行步骤s12时,可将随机数据的更新日期与上次目标库全量更新保存的最近更新日期比对,通过判断随机数据的更新日期是否在目标库的最近更新日期之后来判断源头库是否更新,从而准确地判断是否需要更新目标库。

需要说明的是,最近更新日期为一个变量,目标库每次全量更新之后,将全量更新的日期保存为最近更新日期,替换上次更新的最近更新日期。

例如,本次全量更新的日期为2018年2月1日,步骤s14之后,将2018年2月1日保存为最近更新日期。之后2018年2月8日从源头库中提取一条随机数据,随机数据的更新日期为2018年2月5日,那么将源头库的数据全量更新至目标库,再将2018年2月8日保存为最近更新日期。

请参阅图4,基于上述实施例,步骤s14包括:

s141:若随机数据的更新日期在目标库的最近更新日期之后,则获取目标库的服务器的中央处理器的负荷;

s142:判断中央处理器的负荷是否小于第一预设阈值;

若随机数据的更新日期在目标库的最近更新日期之后,则说明在目标库的最近更新日期之后,源头库的数据进行了更新,那么需要对目标库的数据也进行更新。为了避免更新过程中,占用较多目标库的服务器的中央处理器(cpu)等资源,获取目标库的服务器的中央处理器的负荷,并根据中央处理器的负荷大小判断是否更新目标库的数据。

s143:若中央处理器的负荷小于第一预设阈值,则将源头库的数据全量更新至目标库。

若中央处理器的负荷小于第一预设阈值,则说明目标库的服务器的cpu负荷达到了更新的要求,可完成更新,则将源头库的数据全量更新至目标库。第一预设阈值由用户设定。第一预设阈值例如可设置为40%,当中央处理器的负荷小于40%时,将源头库的数据全量更新至目标库。当然,在其他实施例中,第一预设阈值不限于40%,可通过合理设置第一预设值,使得中央处理器的负荷小于第一预设值时,服务器能完成全量更新,不被中断;或者通过设置第一预设值,使得中央处理器的负荷小于第一预预设值时,全量更新过程中,与目标库对应的应用程序系统可正常运行,这样可避免全量更新时,导致占用应用程序服务器cpu等资源而使得应用程序运行缓慢。

若中央处理器的负荷大于或等于第一预设阈值,则继续执行步骤s141和步骤s142,获取目标库的服务器的中央处理器的负荷,判断中央处理器的负荷是否小于第一预设阈值,直到处理器的负荷小于第一预设阈值时,将源头库的数据全量更新至目标库。

请参阅图5,基于上述实施例,步骤s143包括:

s1431:将源头库的数据更新至目标库并获取目标库的服务器的中央处理器的负荷;

s1432:判断中央处理器的负荷是否大于或等于第二预设阈值;

在将源头库的数据更新至目标库的过程中,可能由于与目标库对应的应用程序系统使用量增加,导致服务器的cpu的负荷增大,使得更新过程可能被服务器强制中断的风险较大。可通过判断中央处理器的负荷是否大于或等于第二预设阈值,来判断更新过程被服务器强制中断的风险是否较大。考虑到数据更新过程中,与目标库对应的应用程序系统的使用和数据更新进程也会导致cpu负荷增加,第二预设阈值大于第一预设阈值。例如,第一预设值为40%,如果数据更细所需占用的源头库cpu空间为30%,可将第二预设值设置为80%。需要说明的是,第一预设值和第二预设值也可设置为其他值,在此不做限制。

s1433:若中央处理器的负荷大于或等于第二预设阈值,则发出提醒消息以提醒用户保存更新进度。

当中央处理器的负荷大于或等于第二预设阈值时,将源头库的数据更新至目标库的过程被服务器强制中断的可能性较大,则发出提醒消息,使用户及时得知更新过程可能被中断,并保存更新进度,这样当恢复更新时,可继续更新,而不需要重新更新,提高更新效率。提醒消息可以通过声音、弹窗、邮件等形式发出。较佳地,可以将提醒消息发送至外部终端,例如手机,个人pc。在中央处理器的负荷小于第二预设阈值时,可正常进行更新。

进一步地,请参阅图6,基于上述实施例,步骤s143还包括:

s1434:获取更新状态,并判断更新是否中断;

可实时获取更新常量值的数量,通过判断更新常量值的数量的减少速度来得到更新状态。当更新常量值的数量超过预设时长没有变化时,则可判定更新中断。例如,源头库中有10000条数据,预设时长为3s,将源头库的数据全量更新至目标库时,共配置了10000条更新常量值,那么每更新一条数据至目标库,则减少一个常量值,如果更新常量值的数量保持在7999的时长超过3s,则说明更新中断。

s1435:若更新已中断,则判断中央处理器的负荷是否小于第三预设阈值;

在更新过程中,实时获取更新状态,如果更新被中断,则继续获取中央处理器的负荷,并根据中央处理器的负荷判断是否可恢复更新。可通过设置第三预设阈值,通过判断中央处理器的负荷是否小于第三预设阈值来判断是否可恢复更新。第三预设阈值可与第一预设阈值相同,也可以大于第一预设阈值。可通过合理设置第三预设阈值,使得在中央处理器的负荷小于第三预设阈值时,中央处理器的空闲空间足以支持恢复更新,更新过程可稳定进行。

s1436:若中央处理器的负荷小于第三预设阈值,则恢复更新。

若中央处理器的负荷小于第三预设阈值,则说明中央处理器的空闲空间足以支持恢复更新,那么恢复更新,以尽快完成目标库的数据更新,这样有助于提升更新效率。

恢复更新时,可先判断是否有保存的更新进度,如果有保存的更新进度,则可根据更新进度继续更新。如果没有保存的更新进度,则重新将源头库的数据全量更新至目标库。

若中央处理器的负荷大于或等于第三预设阈值,则继续执行步骤s1435:判断中央处理器的负荷是否小于第三预设阈值,直到中央处理器的负荷小于第三预设阈值,恢复更新。

更新完成后,可发出更新完成提示消息,这样用户可以及时得知更新已完成。

需要说明的是,步骤s1434可以在步骤s1432之后执行,也即在负荷大于或等于第二预设阈值时获取更新状态,以便在更新中断时及时地发现。也可以在将源头库的数据更新至目标库的过程时任何一个时刻执行,这样可以实时监控更新状态。

此外,本发明还提供一种数据更新装置。上述任一实施例的数据更新方法可以由本实施例的数据更新装置实现,数据更新装置包括:

数据提取模块,用于从源头库中提取一条随机数据;

判断模块,用于判断随机数据的更新日期是否在目标库的最近更新日期之后;

第一执行模块,用于在所述随机数据的更新日期不在所述最近更新日期之后时,不更新所述目标库的数据;

第二执行模块,用于在所述随机数据的更新日期在所述最近更新日期之后时,则将所述源头库的数据全量更新至所述目标库。

进一步地,数据提取模块包括:

数据提取单元,用于按照预设时间间隔从源头库中提取一条随机数据。

进一步地,数据更新装置还包括:

保存模块,用于保存本次全量更新的日期为目标库的最近更新日期。

进一步地,第二执行模块包括:

赋值单元,用于为所述源头库的每条数据配置一个更新常量值;

删除单元,用于将所述源头库中的每条数据更新至目标库并在每条数据更新至目标库时,删除一个对应的所述常量值,直到删除所有常量值。

进一步地,第二执行模块还包括:

负荷获取单元,用于在随机数据的更新日期在目标库的最近更新日期之后,获取目标库的服务器的中央处理器的负荷;

判断单元,用于判断中央处理器的负荷是否小于第一预设阈值;

更新单元,用于在中央处理器的负荷小于第一预设阈值时,将源头库的数据全量更新至目标库。

进一步地,第二执行模块还包括:

更新子单元,用于将源头库的数据更新至目标库并获取目标库的服务器的中央处理器的负荷;

第一判断子单元,用于判断中央处理器的负荷是否大于或等于第二预设阈值;

提醒子单元,用于在中央处理器的负荷大于或等于第二预设阈值时,发出提醒消息以提醒用户保存更新进度。

进一步地,第二执行模块还包括:

状态获取子单元,用于获取更新状态,并判断更新是否中断;

第二判断子单元,用于在更新已中断时,判断中央处理器的负荷是否小于第三预设阈值;

恢复子单元,用于在中央处理器的负荷小于第三预设阈值时,恢复更新。

其中,上述数据更新装置中各个模块的功能实现与上述数据更新方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。

此外,本发明还提供一种计算机可读存储介质。

本发明计算机可读存储介质上存储有数据更新程序,计算机可读存储介质上存储有数据更新程序,其中数据更新程序被处理器执行时,实现如上述任一实施例的数据更新方法的步骤。

其中,数据更新程序被执行时所实现的方法可参照本发明数据更新方法的各个实施例,此处不再赘述。

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

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台设备设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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