本申请属于计算机技术领域,具体涉及一种数据同步检测方法和装置。
背景技术:
随着大数据技术的广泛应用,离线同步数据越来越普遍,尤其是从数据库离线抽取数据到数据仓库存储。同步数据需要进行检测是否成功,以及需要检测数据库表结构发生了变更,避免影响数据同步。
现有的检测方式是根据同步数据任务返回码是否为0判断数据是否同步成功,在数据库表结构发生变化时,根据数据库表结构人工调整离线数据仓库表结构。
根据同步数据任务返回码判断数据是否抽取成功,存在不够准确的缺陷,并且当数据库表结构发生变更,很多时候无法及时通知到数据仓库管理人员,导致数据同步失败,需要数据库管理人员及时通知,数据仓库管理员也需要手动调整离线数据仓库表结构,维护成本比较高。
技术实现要素:
本申请实施例的目的是提供一种数据同步检测方法和装置,能够解决数据同步检测的精准度低和数据同步过程中人工维护成本高的问题。
第一方面,本申请实施例提供了一种数据同步检测方法,该方法包括:
执行离线数据抽取定时任务,所述离线数据抽取定时任务用于每隔预设时间将待同步表中的数据同步至离线数据仓库表;
调用数据库查询应用程序接口api,获取所述数据库查询api返回的值;
根据所述数据库查询api返回的值,对所述待同步表和所述离线数据仓库表进行数据同步检测,得到数据同步检测结果。
第二方面,本申请实施例提供了一种数据同步检测装置,该装置包括:
定时抽取模块,用于执行离线数据抽取定时任务,所述离线数据抽取定时任务用于每隔预设时间将待同步表中的数据同步至离线数据仓库表;
数据查询模块,用于调用数据库查询应用程序接口api,获取所述数据库查询api返回的值;
同步检测模块,用于根据所述数据库查询api返回的值,对所述待同步表和所述离线数据仓库表进行数据同步检测,得到数据同步检测结果。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
在本申请实施例中,通过执行离线数据抽取定时任务将数据同步至离线数据仓库表,再通过数据库查询api的返回值进行数据同步检测,提高了数据抽取检测的精准度,减少了数据同步过程中的人工维护成本。
附图说明
图1是本申请提供的数据同步检测方法的流程示意图;
图2是本申请提供的更新离线数据仓库表的表结构的流程示意图;
图3是本申请提供的创建所述离线数据仓库表的流程示意图;
图4为本申请提供的数据同步检测装置的结构示意图;
图5为本申请提供的电子设备的结构示意图;
图6为本申请提供的电子设备的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过一些实施例及其应用场景对本申请实施例提供的数据同步检测方法进行详细地说明。本申请实施例提供的数据同步检测方法,执行主体为电子设备,本申请实施例提及的电子设备包括但不限于手机、平板电脑、电脑、可穿戴设备等。
图1为本申请实施例提供的数据同步检测方法的流程示意图,如图1所示,该方法包括以下步骤:
步骤100、执行离线数据抽取定时任务,所述离线数据抽取定时任务用于每隔预设时间将待同步表中的数据同步至离线数据仓库表。
可选地,执行离线数据抽取定时任务进行数据同步,需要传入的参数包括:待同步表的表名、待同步表的数据库类型、待同步表的数据库ip和端口号、离线数据仓库表的表名和where条件。
其中,where条件用于离线抽取数据判断。离线数据抽取定时任务根据传入的参数,每隔预设时间将待同步表中的数据同步至离线数据仓库表。
步骤101、调用数据库查询应用程序接口api,获取所述数据库查询api返回的值。
可选地,调用数据库查询应用程序接口(applicationprogramminginterface,api)需要传入的参数包括:操作类型、待同步表的表名、待同步表的数据库类型、待同步表的数据库ip和端口号、离线数据仓库表的表名和where条件。
其中,操作类型表示数据库查询api的查询操作类型,例如,建表、主键判断或者数量判断。
可选地,电子设备调用数据库查询口api,根据传入的参数,获取所述数据库查询api返回的与所述传入的参数对应的值。该返回值为待同步表和离线数据仓库表中的数据信息,可以反映待同步表和离线数据仓库表中的数据信息是否一致。
例如,传入的参数中操作类型为主键判断,所述数据库查询api返回的值为待同步表和离线数据仓库表的主键的最大值和最小值;或者,传入的参数中操作类型为数量判断,所述数据库查询api返回的值为待同步表和离线数据仓库表中符合where条件的记录的数量。
步骤102、根据所述数据库查询api返回的值,对所述待同步表和所述离线数据仓库表进行数据同步检测,得到数据同步检测结果。
可选地,根据所述数据库查询api返回的值,通过比较待同步表和离线数据仓库表中的信息是否一致,对所述待同步表和所述离线数据仓库表进行数据同步检测,得到数据同步检测结果。
在本申请实施例中,通过执行离线数据抽取定时任务将数据同步至离线数据仓库表,再通过数据库查询api的返回值进行数据同步检测,提高了数据同步检测的精准度,减少了数据同步过程中的人工维护成本。
可选地,所述数据库查询api返回的值,包括:
在调用所述数据库查询api时传入的参数中操作类型是数量判断的情况下,所述数据库查询api返回的值为所述待同步表和所述离线数据仓库表中符合条件的记录的数量;
例如,调用所述数据库查询api时传入的参数中操作类型是数量判断,where条件规定了查询条件,则api返回的值为待同步表和所述离线数据仓库表中分别满足where条件的记录的数量。
在调用所述数据库查询api时传入的参数中操作类型是主键判断的情况下,所述数据库查询api返回的值为所述待同步表和所述离线数据仓库表的主键取值范围。
例如,调用所述数据库查询api时传入的参数中操作类型是主键判断,则查询待同步表和所述离线数据仓库表中主键的最大值和最小值,得到待同步表和所述离线数据仓库表的主键取值范围。
本申请实施例,根据调用所述数据库查询api时传入的参数中操作类型进行不同的查询操作,得到不同的返回值,根据该返回值进行数据同步检测,提高了数据同步检测的准确性且降低了数据同步检测的难度。
可选地,所述根据所述数据库查询api返回的值,对所述待同步表和所述离线数据仓库表进行数据同步检测,得到数据同步检测结果,包括:
在所述待同步表中符合条件的记录的数量和所述离线数据仓库表中符合条件的记录的数量相等,且所述待同步表的主键取值范围和所述离线数据仓库表的主键取值范围相同的情况下,确定所述数据同步检测结果为数据同步成功。
可选地,如果所述待同步表中符合条件的记录的数量和所述离线数据仓库表中符合条件的记录的数量相等,且所述待同步表的主键取值范围和所述离线数据仓库表的主键取值范围相同,则认为待同步表和离线数据仓库表中的数据具有一致性,数据同步检测结果为数据同步成功。
本申请实施例,根据待同步表与离线数据仓库表中符合条件的记录的数量和主键取值范围,得到数据同步检测结果提高了数据同步检测的准确性且降低了数据同步检测的难度。
可选地,所述执行离线数据抽取定时任务之前,还包括:更新离线数据仓库表的表结构。图2是本申请实施例提供的更新离线数据仓库表的表结构的流程示意图,如图2所示,更新离线数据仓库表的表结构包括以下子步骤:
步骤200、获取数据库管理平台的元信息,根据所述元信息确定所述待同步表是否发生了结构变更;
其中,数据库管理平台的元信息中记录了数据库每次发生的变更操作,因此,可以通过数据库管理平台的元信息确定所述待同步表是否发生了结构变更。
可选地,获取数据库管理平台的元信息需要传入如下参数:待同步表的表名、待同步表的数据库ip和端口号和离线数据仓库表的表名。根据传入的参数,获取数据库管理平台的元信息,并根据所述元信息确定所述待同步表是否发生了结构变更。
例如,所述待同步表增加了一个新的字段,此时根据元信息可以确定所述待同步表发生了结构变更。
步骤201、在所述待同步表发生了结构变更的情况下,根据所述元信息生成表结构变更结构化查询语言sql,在所述离线数据仓库表执行所述表结构变更sql,更新所述离线数据仓库表的表结构。
可选地,如果根据数据库管理平台的元信息确定所述待同步表发生了结构变更,则根据所述元信息生成表结构变更sql,该表结构变更sql记录了待同步表的结构变更内容,在所述离线数据仓库表执行所述表结构变更sql,更新所述离线数据仓库表的表结构,更新后,离线数据仓库表的表结构和待同步表的表结构保持同步。
本申请实施例,在执行离线数据抽取定时任务之前,更新离线数据仓库表的表结构,待同步表的表结构发生变更时,自动更新离线数据仓库表的表结构,避免了人工调整离线数据仓库表结构导致的更新不及时的缺陷,同时,更新离线数据仓库表的表结构,使离线数据仓库表的表结构和待同步表的表结构保持一致,提高了执行离线数据抽取定时任务进行数据同步的成功率。
可选地,所述执行离线数据抽取定时任务之前,还包括:
判断是否存在所述离线数据仓库表。
可选地,数据同步任务脚本判断是否存在与待同步表对应的离线数据仓库表。
在所述离线数据仓库表不存在的情况下,创建所述离线数据仓库表。
可以理解的是,如果所述离线数据仓库表不存在,则数据同步无法进行,需要创建所述离线数据仓库表。
本申请实施例,在执行离线数据抽取定时任务之前判断是否存在所述离线数据仓库表,在所述离线数据仓库表不存在的情况下,创建所述离线数据仓库表,避免了由于离线数据仓库表不存在导致数据同步失败,提高了数据同步的成功率。
图3是本申请实施例提供的创建所述离线数据仓库表的流程示意图,如图3所示,可选地,所述创建所述离线数据仓库表,包括以下子步骤:
步骤300、通过调用所述数据库查询api,获取所述待同步表的字段信息、表属性信息和第一建表sql,其中,调用所述数据库查询api时传入的参数中操作类型是建表。
可选地,调用所述数据库查询api,需要传入的参数包括:操作类型、待同步表的表名、待同步表的数据库类型、待同步表的数据库ip和端口号、离线数据仓库表的表名和where条件;其中,调用所述数据库查询api时传入的参数中操作类型是建表。
数据库查询api根据传入的参数,自动获取所述待同步表的建表sql,即第一建表sql,以及待同步表的字段信息和表属性信息。
步骤301、根据所述离线数据仓库表的信息、所述待同步表的字段信息、表属性信息和第一建表sql,生成所述离线数据仓库表的第二建表sql。
根据所述数据库查询api返回的离线数据仓库表的信息、所述待同步表的字段信息、表属性信息和第一建表sql,自动生成创建所述离线数据仓库表的第二建表sql。
步骤302、执行所述离线数据仓库表的第二建表sql,创建所述离线数据仓库表。
可选地,第二建表sql为离线数据仓库表的建表sql,通过执行第二建表sql,创建所述离线数据仓库表。
本申请实施例,通过调用数据库查询api,根据创建待同步表的第一建表sql,自动生成创建离线数据仓库表的第二建表sql,提高了离线数据仓库表的创建效率和准确性,进一步提高了数据同步的准确度。
可选地,所述数据同步检测方法,还包括:
在所述数据同步检测结果为数据同步不成功的情况下,调用报警服务,输出数据同步失败的报警提示。
可选地,若检测到数据同步不成功,则调用警报服务,输出数据同步失败的报警提示,供运维人员查看和参考。
可选地,所述报警提示为待同步表和离线数据仓库表中数据不一致的位置和数量信息。
本申请实施例,在所述数据同步检测结果为数据同步不成功的情况下,及时输出数据同步失败的报警提示,降低了数据同步过程中的维护成本。
需要说明的是,本申请实施例提供的数据同步检测方法,执行主体可以为数据同步检测装置,或者该数据同步检测装置中的用于执行数据同步检测方法的控制模块。本申请实施例中以数据同步检测装置执行数据同步检测方法为例,说明本申请实施例提供的数据同步检测装置。
图4为本申请实施例提供的一种数据同步检测装置,如图4所示,所述装置包括定时抽取模块410、数据查询模块420和同步检测模块430,其中,
定时抽取模块410,用于执行离线数据抽取定时任务,所述离线数据抽取定时任务用于每隔预设时间将待同步表中的数据同步至离线数据仓库表;
数据查询模块420,用于调用数据库查询应用程序接口api,获取所述数据库查询api返回的值;
同步检测模块430,用于根据所述数据库查询api返回的值,对所述待同步表和所述离线数据仓库表进行数据同步检测,得到数据同步检测结果。
在本申请实施例中,通过执行离线数据抽取定时任务将数据同步至离线数据仓库表,再通过数据库查询api的返回值进行数据同步检测,提高了数据同步检测的精准度,减少了数据同步过程中的人工维护成本。
可选地,所述数据库查询api返回的值,包括:
在调用所述数据库查询api时传入的参数中操作类型是数量判断的情况下,所述数据库查询api返回的值为所述待同步表和所述离线数据仓库表中符合条件的记录的数量;
在调用所述数据库查询api时传入的参数中操作类型是主键判断的情况下,所述数据库查询api返回的值为所述待同步表和所述离线数据仓库表的主键取值范围。
可选地,所述同步检测模块,用于:
在所述待同步表中符合条件的记录的数量和所述离线数据仓库表中符合条件的记录的数量相等,且所述待同步表的主键取值范围和所述离线数据仓库表的主键取值范围相同的情况下,确定所述数据同步检测结果为数据同步成功。
可选地,还包括表结构更新模块,用于在所述执行离线数据抽取定时任务之前:
获取数据库管理平台的元信息,根据所述元信息确定所述待同步表是否发生了结构变更;
在所述待同步表发生了结构变更的情况下,根据所述元信息生成表结构变更结构化查询语言sql,在所述离线数据仓库表执行所述表结构变更sql,更新所述离线数据仓库表的表结构。
可选地,还包括仓库表创建模块,用于:
判断是否存在所述离线数据仓库表;
在所述离线数据仓库表不存在的情况下,创建所述离线数据仓库表。
可选地,所述创建所述离线数据仓库表,包括:
通过调用所述数据库查询api,获取所述待同步表的字段信息、表属性信息和第一建表sql,其中,调用所述数据库查询api时传入的参数中操作类型是建表;
根据所述离线数据仓库表的信息、所述待同步表的字段信息、表属性信息和第一建表sql,生成所述离线数据仓库表的第二建表sql;
执行所述离线数据仓库表的第二建表sql,创建所述离线数据仓库表。
可选地,还包括报警提示模块,用于:
在所述数据同步检测结果为数据同步不成功的情况下,调用报警服务,输出数据同步失败的报警提示。
本申请实施例中的数据同步检测装置可以是装置,也可以是终端中的部件、集成电路、或芯片。该装置可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、上网本或者个人数字助理(personaldigitalassistant,pda)等,非移动电子设备可以为服务器、网络附属存储器(networkattachedstorage,nas)、个人计算机(personalcomputer,pc)、电视机(television,tv)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的数据同步检测装置可以为具有操作系统的装置。该操作系统可以为安卓(android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的数据同步检测装置能够实现图1至图3的方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选地,如图5所示,本申请实施例还提供一种电子设备500,包括处理器501,存储器502,存储在存储器502上并可在所述处理器501上运行的程序或指令,该程序或指令被处理器501执行时实现上述数据同步检测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
图6为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备600包括但不限于:射频单元601、网络模块602、音频输出单元603、输入单元604、传感器605、显示单元606、用户输入单元607、接口单元608、存储器609、以及处理器610等部件。
本领域技术人员可以理解,电子设备600还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器610逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图6中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,处理器610用于:
执行离线数据抽取定时任务,所述离线数据抽取定时任务用于每隔预设时间将待同步表中的数据同步至离线数据仓库表;
调用数据库查询应用程序接口api,获取所述数据库查询api返回的值;
根据所述数据库查询api返回的值,对所述待同步表和所述离线数据仓库表进行数据同步检测,得到数据同步检测结果。
在本申请实施例中,通过执行离线数据抽取定时任务将数据同步至离线数据仓库表,再通过数据库查询api的返回值进行数据同步检测,提高了数据抽取检测的精准度,减少了数据同步过程中的人工维护成本。
可选地,所述数据库查询api返回的值,包括:
在调用所述数据库查询api时传入的参数中操作类型是数量判断的情况下,所述数据库查询api返回的值为所述待同步表和所述离线数据仓库表中符合条件的记录的数量;
在调用所述数据库查询api时传入的参数中操作类型是主键判断的情况下,所述数据库查询api返回的值为所述待同步表和所述离线数据仓库表的主键取值范围。
可选地,所述根据所述数据库查询api返回的值,对所述待同步表和所述离线数据仓库表进行数据同步检测,得到数据同步检测结果,包括:
在所述待同步表中符合条件的记录的数量和所述离线数据仓库表中符合条件的记录的数量相等,且所述待同步表的主键取值范围和所述离线数据仓库表的主键取值范围相同的情况下,确定所述数据同步检测结果为数据同步成功。
可选地,所述处理器610还用于:
获取数据库管理平台的元信息,根据所述元信息确定所述待同步表是否发生了结构变更;
在所述待同步表发生了结构变更的情况下,根据所述元信息生成表结构变更结构化查询语言sql,在所述离线数据仓库表执行所述表结构变更sql,更新所述离线数据仓库表的表结构。
可选地,所述处理器610还用于:
判断是否存在所述离线数据仓库表;
在所述离线数据仓库表不存在的情况下,创建所述离线数据仓库表。
可选地,所述创建所述离线数据仓库表,包括:
通过调用所述数据库查询api,获取所述待同步表的字段信息、表属性信息和第一建表sql,其中,调用所述数据库查询api时传入的参数中操作类型是建表;
根据所述离线数据仓库表的信息、所述待同步表的字段信息、表属性信息和第一建表sql,生成所述离线数据仓库表的第二建表sql;
执行所述离线数据仓库表的第二建表sql,创建所述离线数据仓库表。
可选地,所述处理器610还用于:
在所述数据同步检测结果为数据同步不成功的情况下,调用报警服务,输出数据同步失败的报警提示。
应理解的是,本申请实施例中,输入单元604可以包括图形处理器(graphicsprocessingunit,gpu)641和麦克风642,图形处理器641对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元606可包括显示面板661,可以采用液晶显示器、有机发光二极管等形式来配置显示面板661。用户输入单元607包括触控面板671以及其他输入设备672。触控面板671,也称为触摸屏。触控面板671可包括触摸检测装置和触摸控制器两个部分。其他输入设备672可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。存储器609可用于存储软件程序以及各种数据,包括但不限于应用程序和操作系统。处理器610可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器610中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述数据同步检测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述数据同步检测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。