基于数据库的数据校验方法、装置、设备及存储介质转让专利

申请号 : CN202210596080.6

文献号 : CN114676126B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 唐建法肖贝贝黄佳钦欧阳世雄

申请人 : 深圳钛铂数据有限公司

摘要 :

本发明涉及人工智能领域,公开了一种基于数据库的数据校验方法、装置、设备及存储介质,用于提高数据校验的准确率。所述基于数据库的数据校验方法包括:若校验类型为增量数据校验,则基于时间间隔监听目标数据库的数据写入事件,通过字段名称获取数据唯一标识地址;根据数据唯一标识地址、源连接和目标连接分别抽取源增量校验数据和目标增量校验数据;对源增量校验数据和目标增量校验数据进行数据一致性验证,得到增量数据校验结果;若校验类型为全量数据校验,则根据表名称、排序和排序字段分别查询源全量校验数据和目标全量校验数据;对源全量校验数据和目标全量校验数据进行全量数据校验,得到全量数据校验结果。

权利要求 :

1.一种基于数据库的数据校验方法,其特征在于,所述基于数据库的数据校验方法包括:

接收数据校验指令,并根据所述数据校验指令启动数据校验任务;

执行所述数据校验任务并创建源数据库与目标数据库之间的连接关系,生成源连接和目标连接,并根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验;

若所述校验类型为增量数据校验,则基于预设的时间间隔监听所述目标数据库的数据写入事件,当监听到所述目标数据库中存在数据写入事件时,通过预设的字段名称获取所述数据写入事件对应的数据唯一标识地址,其中,所述数据写入事件包括:写入的数据内容及对应的写入时间、写入数据的方式以及写入数据过程中当前页面的动态状态或写入数据过程中用户的附属操作;

根据所述数据唯一标识地址、所述源连接和所述目标连接分别抽取所述源数据库和所述目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;

对所述源增量校验数据和所述目标增量校验数据进行数据一致性验证,得到增量数据校验结果;

若所述校验类型为全量数据校验,则获取预先设置的与所述源数据库和所述目标数据库对应的表名称、排序和排序字段;

根据所述表名称、所述排序和所述排序字段分别查询所述源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;

根据所述源全量校验数据和所述目标全量校验数据并通过遍历法对所述源数据库和所述目标数据库数据进行全量数据校验,得到全量数据校验结果,其中,所述根据所述源全量校验数据和所述目标全量校验数据并通过遍历法对所述源数据库和所述目标数据库数据进行全量数据校验,得到全量数据校验结果,包括:分别查询所述源数据库和所述目标数据库中的游标,得到源数据库游标和目标数据库游标;按照预设的初始化条件对所述源数据库游标和所述目标数据库游标进行初始化配置,得到初始源游标和初始目标游标;基于所述初始源游标和所述初始目标游标对所述源全量校验数据和所述目标全量校验数据进行遍历比较,生成全量数据校验结果;所述基于所述初始源游标和所述初始目标游标对所述源全量校验数据和所述目标全量校验数据进行遍历比较,生成全量数据校验结果,包括:将所述初始源游标的游标状态设置为第一源状态,并将所述初始目标游标的游标状态设置为第一目标状态;移动所述初始源游标,并设置所述初始源游标的游标状态为第二源状态,以及移动所述初始目标游标,并设置所述初始目标游标的游标状态为第二目标状态;在所述初始源游标和所述初始目标游标移动的过程中,对所述源数据库中的源字段数据和所述目标数据库中的目标字段数据进行遍历比较,得到目标比较结果,其中,所述目标比较结果包括:源字段数据大、相等和目标字段数据大;根据所述比较结果生成全量数据校验结果。

2.根据权利要求1所述的基于数据库的数据校验方法,其特征在于,所述执行所述数据校验任务并创建源数据库与目标数据库之间的连接关系,生成源连接和目标连接,并根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验,包括:当执行所述数据校验任务时,调用预置的源数据库和预置的目标数据库;

获取所述源数据库中的源字段数据,以及获取所述目标数据库中的目标字段数据;

创建所述源字段数据和所述目标字段数据之间的字段数据对应关系;

创建所述源数据库和所述目标数据库之间的映射关系;

根据所述字段数据对应关系和所述映射关系生成所述源数据库与所述目标数据库之间的连接关系,得到源连接和目标连接;

根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验。

3.根据权利要求1所述的基于数据库的数据校验方法,其特征在于,所述在所述初始源游标和所述初始目标游标移动的过程中,对所述源数据库中的源字段数据和所述目标数据库中的目标字段数据进行遍历比较,得到目标比较结果,包括:基于所述初始源游标定位所述源数据库中的源字段数据中的第一行源数据,并基于所述初始目标游标定位所述目标数据库中的目标字段数据中的第二行目标数据;

对所述第一行源数据和所述第二行目标数据进行比较,得到第一行比较结果;

根据所述第一行比较结果并按照预置的游标移动策略控制所述初始源游标和所述初始目标游标进行移动,直至所述源字段数据和所述目标字段数据遍历完成,得到目标比较结果,其中,所述目标比较结果包括:源字段数据大、相等和目标字段数据大。

4.根据权利要求3所述的基于数据库的数据校验方法,其特征在于,所述根据所述第一行比较结果并按照预置的游标移动策略控制所述初始源游标和所述初始目标游标进行移动,直至所述源字段数据和所述目标字段数据遍历完成,得到目标比较结果,包括:若所述第一行比较结果为源字段数据大,则记录所述源数据库大并控制所述初始源游标按照预设方向进行移动,得到第二行源数据;

对所述第二行源数据和所述第二行目标数据进行比较,得到第二行比较结果;

根据所述第二行比较结果控制所述初始源游标和所述初始目标游标进行移动进行下一轮比较,直至所述源字段数据和所述目标字段数据读取完成,得到每一行的比较结果;

将所述每一行的比较结果作为目标比较结果并输出。

5.根据权利要求4所述的基于数据库的数据校验方法,其特征在于,所述基于数据库的数据校验方法还包括:当所述初始源游标的游标状态为第二源状态并且所述初始目标游标的游标状态为第二目标状态时,确定所述源字段数据和所述目标字段数据读取完成;

判断所述每一行的比较结果是否满足预设退出条件;

若不满足,则循环执行基于所述初始源游标和所述初始目标游标对所述源全量校验数据和所述目标全量校验数据进行遍历比较,生成全量数据校验结果;

若满足,则将所述每一行的比较结果作为目标比较结果并输出。

6.一种基于数据库的数据校验装置,其特征在于,所述基于数据库的数据校验装置包括:

启动模块,用于接收数据校验指令,并根据所述数据校验指令启动数据校验任务;

连接模块,用于执行所述数据校验任务并创建源数据库与目标数据库之间的连接关系,生成源连接和目标连接,并根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验;

监听模块,用于若所述校验类型为增量数据校验,则基于预设的时间间隔监听所述目标数据库的数据写入事件,当监听到所述目标数据库中存在数据写入事件时,通过预设的字段名称获取所述数据写入事件对应的数据唯一标识地址,其中,所述数据写入事件包括:写入的数据内容及对应的写入时间、写入数据的方式以及写入数据过程中当前页面的动态状态或写入数据过程中用户的附属操作;

抽取模块,用于根据所述数据唯一标识地址、所述源连接和所述目标连接分别抽取所述源数据库和所述目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;

验证模块,用于对所述源增量校验数据和所述目标增量校验数据进行数据一致性验证,得到增量数据校验结果;

获取模块,用于若所述校验类型为全量数据校验,则获取预先设置的与所述源数据库和所述目标数据库对应的表名称、排序和排序字段;

查询模块,用于根据所述表名称、所述排序和所述排序字段分别查询所述源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;

校验模块,用于根据所述源全量校验数据和所述目标全量校验数据并通过遍历法对所述源数据库和所述目标数据库数据进行全量数据校验,得到全量数据校验结果,其中,所述根据所述源全量校验数据和所述目标全量校验数据并通过遍历法对所述源数据库和所述目标数据库数据进行全量数据校验,得到全量数据校验结果,包括:分别查询所述源数据库和所述目标数据库中的游标,得到源数据库游标和目标数据库游标;按照预设的初始化条件对所述源数据库游标和所述目标数据库游标进行初始化配置,得到初始源游标和初始目标游标;基于所述初始源游标和所述初始目标游标对所述源全量校验数据和所述目标全量校验数据进行遍历比较,生成全量数据校验结果;所述基于所述初始源游标和所述初始目标游标对所述源全量校验数据和所述目标全量校验数据进行遍历比较,生成全量数据校验结果,包括:将所述初始源游标的游标状态设置为第一源状态,并将所述初始目标游标的游标状态设置为第一目标状态;移动所述初始源游标,并设置所述初始源游标的游标状态为第二源状态,以及移动所述初始目标游标,并设置所述初始目标游标的游标状态为第二目标状态;在所述初始源游标和所述初始目标游标移动的过程中,对所述源数据库中的源字段数据和所述目标数据库中的目标字段数据进行遍历比较,得到目标比较结果,其中,所述目标比较结果包括:源字段数据大、相等和目标字段数据大;根据所述比较结果生成全量数据校验结果。

7.一种基于数据库的数据校验设备,其特征在于,所述基于数据库的数据校验设备包括:存储器和至少一个处理器,所述存储器中存储有指令;

所述至少一个处理器调用所述存储器中的所述指令,以使得所述基于数据库的数据校验设备执行如权利要求1‑5中任一项所述的基于数据库的数据校验方法。

8.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现如权利要求1‑5中任一项所述的基于数据库的数据校验方法。

说明书 :

基于数据库的数据校验方法、装置、设备及存储介质

技术领域

[0001] 本发明涉及人工智能领域,尤其涉及一种基于数据库的数据校验方法、装置、设备及存储介质。

背景技术

[0002] 数据校验是大数据领域重要的质量保证手段,在海量的数据规模、快速的数据流转、多样的数据类型面前,为了保证数据清洗和处理过程中数据的有效性和流转到下游系统的数据准确性,能快速检验数据的准确性在大数据行业有很大的应用,能帮助数仓系统保证海量数据的有效性,提升下游系统数据分析结果的可靠性。
[0003] 现有方案需要通过人工对不同数据库中的每个数据进行对比校验,导致数据校验准确率较低。

发明内容

[0004] 本发明提供了一种基于数据库的数据校验方法、装置、设备及存储介质,用于提高数据校验的准确率。
[0005] 本发明第一方面提供了一种基于数据库的数据校验方法,所述基于数据库的数据校验方法包括:接收数据校验指令,并根据所述数据校验指令启动数据校验任务;执行所述数据校验任务并创建源数据库与目标数据库之间的连接关系,生成源连接和目标连接,并根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验;若所述校验类型为增量数据校验,则基于预设的时间间隔监听所述目标数据库的数据写入事件,当监听到所述目标数据库中存在数据写入事件时,通过预设的字段名称获取所述数据写入事件对应的数据唯一标识地址;根据所述数据唯一标识地址、所述源连接和所述目标连接分别抽取所述源数据库和所述目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;对所述源增量校验数据和所述目标增量校验数据进行数据一致性验证,得到增量数据校验结果;若所述校验类型为全量数据校验,则获取预先设置的与所述源数据库和所述目标数据库对应的表名称、排序和排序字段;根据所述表名称、所述排序和所述排序字段分别查询所述源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;根据所述源全量校验数据和所述目标全量校验数据并通过遍历法对所述源数据库和所述目标数据库数据进行全量数据校验,得到全量数据校验结果。
[0006] 可选的,在本发明第一方面的第一种实现方式中,所述执行所述数据校验任务并创建源数据库与目标数据库之间的连接关系,生成源连接和目标连接,并根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验,包括:当执行所述数据校验任务时,调用预置的源数据库和预置的目标数据库;获取所述源数据库中的源字段数据,以及获取所述目标数据库中的目标字段数据;创建所述源字段数据和所述目标字段数据之间的字段数据对应关系;创建所述源数据库和所述目标数据库之间的映射关系;根据所述字段数据对应关系和所述映射关系生成所述源数据库与所述目标数据库之间的连接关系,得到源连接和目标连接;根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验。
[0007] 可选的,在本发明第一方面的第二种实现方式中,所述根据所述源全量校验数据和所述目标全量校验数据并通过遍历法对所述源数据库和所述目标数据库数据进行全量数据校验,得到全量数据校验结果,包括:分别查询所述源数据库和所述目标数据库中的游标,得到源数据库游标和目标数据库游标;按照预设的初始化条件对所述源数据库游标和所述目标数据库游标进行初始化配置,得到初始源游标和初始目标游标;基于所述初始源游标和所述初始目标游标对所述源全量校验数据和所述目标全量校验数据进行遍历比较,生成全量数据校验结果。
[0008] 可选的,在本发明第一方面的第三种实现方式中,所述基于所述初始源游标和所述初始目标游标对所述源全量校验数据和所述目标全量校验数据进行遍历比较,生成全量数据校验结果,包括:将所述初始源游标的游标状态设置为第一源状态,并将所述初始目标游标的游标状态设置为第一目标状态;移动所述初始源游标,并设置所述初始源游标的游标状态为第二源状态,以及移动所述初始目标游标,并设置所述初始目标游标的游标状态为第二目标状态;在所述初始源游标和所述初始目标游标移动的过程中,对所述源数据库中的源字段数据和所述目标数据库中的目标字段数据进行遍历比较,得到目标比较结果,其中,所述目标比较结果包括:源字段数据大、相等和目标字段数据大;根据所述比较结果生成全量数据校验结果。
[0009] 可选的,在本发明第一方面的第四种实现方式中,所述在所述初始源游标和所述初始目标游标移动的过程中,对所述源数据库中的源字段数据和所述目标数据库中的目标字段数据进行遍历比较,得到目标比较结果,包括:基于所述初始源游标定位所述源数据库中的源字段数据中的第一行源数据,并基于所述初始目标游标定位所述目标数据库中的目标字段数据中的第二行目标数据;对所述第一行源数据和所述第二行目标数据进行比较,得到第一行比较结果;根据所述第一行比较结果并按照预置的游标移动策略控制所述初始源游标和所述初始目标游标进行移动,直至所述源字段数据和所述目标字段数据遍历完成,得到目标比较结果,其中,所述目标比较结果包括:源字段数据大、相等和目标字段数据大。
[0010] 可选的,在本发明第一方面的第五种实现方式中,所述根据所述第一行比较结果并按照预置的游标移动策略控制所述初始源游标和所述初始目标游标进行移动,直至所述源字段数据和所述目标字段数据遍历完成,得到目标比较结果,包括:若所述第一行比较结果为源字段数据大,则记录所述源数据库大并控制所述初始源游标按照预设方向进行移动,得到第二行源数据;对所述第二行源数据和所述第二行目标数据进行比较,得到第二行比较结果;根据所述第二行比较结果控制所述初始源游标和所述初始目标游标进行移动进行下一轮比较,直至所述源字段数据和所述目标字段数据读取完成,得到每一行的比较结果;将所述每一行的比较结果作为目标比较结果并输出。
[0011] 可选的,在本发明第一方面的第六种实现方式中,所述基于数据库的数据校验方法还包括:当所述初始源游标的游标状态为第二源状态并且所述初始目标游标的游标状态为第二目标状态时,确定所述源字段数据和所述目标字段数据读取完成;判断所述每一行的比较结果是否满足预设退出条件;若不满足,则循环执行基于所述初始源游标和所述初始目标游标对所述源全量校验数据和所述目标全量校验数据进行遍历比较,生成全量数据校验结果;若满足,则将所述每一行的比较结果作为目标比较结果并输出。
[0012] 本发明第二方面提供了一种基于数据库的数据校验装置,所述基于数据库的数据校验装置包括:启动模块,用于接收数据校验指令,并根据所述数据校验指令启动数据校验任务;连接模块,用于执行所述数据校验任务并创建源数据库与目标数据库之间的连接关系,生成源连接和目标连接,并根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验;监听模块,用于若所述校验类型为增量数据校验,则基于预设的时间间隔监听所述目标数据库的数据写入事件,当监听到所述目标数据库中存在数据写入事件时,通过预设的字段名称获取所述数据写入事件对应的数据唯一标识地址;抽取模块,用于根据所述数据唯一标识地址、所述源连接和所述目标连接分别抽取所述源数据库和所述目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;验证模块,用于对所述源增量校验数据和所述目标增量校验数据进行数据一致性验证,得到增量数据校验结果;获取模块,用于若所述校验类型为全量数据校验,则获取预先设置的与所述源数据库和所述目标数据库对应的表名称、排序和排序字段;查询模块,用于根据所述表名称、所述排序和所述排序字段分别查询所述源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;校验模块,用于根据所述源全量校验数据和所述目标全量校验数据并通过遍历法对所述源数据库和所述目标数据库数据进行全量数据校验,得到全量数据校验结果。
[0013] 可选的,在本发明第二方面的第一种实现方式中,所述连接模块具体用于:当执行所述数据校验任务时,调用预置的源数据库和预置的目标数据库;获取所述源数据库中的源字段数据,以及获取所述目标数据库中的目标字段数据;创建所述源字段数据和所述目标字段数据之间的字段数据对应关系;创建所述源数据库和所述目标数据库之间的映射关系;根据所述字段数据对应关系和所述映射关系生成所述源数据库与所述目标数据库之间的连接关系,得到源连接和目标连接;根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验。
[0014] 可选的,在本发明第二方面的第二种实现方式中,所述校验模块还包括:查询子模块,用于分别查询所述源数据库和所述目标数据库中的游标,得到源数据库游标和目标数据库游标;配置子模块,用于按照预设的初始化条件对所述源数据库游标和所述目标数据库游标进行初始化配置,得到初始源游标和初始目标游标;遍历子模块,用于基于所述初始源游标和所述初始目标游标对所述源全量校验数据和所述目标全量校验数据进行遍历比较,生成全量数据校验结果。
[0015] 可选的,在本发明第二方面的第三种实现方式中,所述遍历子模块还包括:设置单元,用于将所述初始源游标的游标状态设置为第一源状态,并将所述初始目标游标的游标状态设置为第一目标状态;移动单元,用于移动所述初始源游标,并设置所述初始源游标的游标状态为第二源状态,以及移动所述初始目标游标,并设置所述初始目标游标的游标状态为第二目标状态;处理单元,用于在所述初始源游标和所述初始目标游标移动的过程中,对所述源数据库中的源字段数据和所述目标数据库中的目标字段数据进行遍历比较,得到目标比较结果,其中,所述目标比较结果包括:源字段数据大、相等和目标字段数据大;生成单元,用于根据所述比较结果生成全量数据校验结果。
[0016] 可选的,在本发明第二方面的第四种实现方式中,所述处理单元还包括:定位子单元,用于基于所述初始源游标定位所述源数据库中的源字段数据中的第一行源数据,并基于所述初始目标游标定位所述目标数据库中的目标字段数据中的第二行目标数据;比较子单元,用于对所述第一行源数据和所述第二行目标数据进行比较,得到第一行比较结果;遍历子单元,用于根据所述第一行比较结果并按照预置的游标移动策略控制所述初始源游标和所述初始目标游标进行移动,直至所述源字段数据和所述目标字段数据遍历完成,得到目标比较结果,其中,所述目标比较结果包括:源字段数据大、相等和目标字段数据大。
[0017] 可选的,在本发明第二方面的第五种实现方式中,所述遍历子单元具体用于:若所述第一行比较结果为源字段数据大,则记录所述源数据库大并控制所述初始源游标按照预设方向进行移动,得到第二行源数据;对所述第二行源数据和所述第二行目标数据进行比较,得到第二行比较结果;根据所述第二行比较结果控制所述初始源游标和所述初始目标游标进行移动进行下一轮比较,直至所述源字段数据和所述目标字段数据读取完成,得到每一行的比较结果;将所述每一行的比较结果作为目标比较结果并输出。
[0018] 可选的,在本发明第二方面的第六种实现方式中,所述基于数据库的数据校验模块还包括:退出模块,用于当所述初始源游标的游标状态为第二源状态并且所述初始目标游标的游标状态为第二目标状态时,确定所述源字段数据和所述目标字段数据读取完成;判断所述每一行的比较结果是否满足预设退出条件;若不满足,则循环执行基于所述初始源游标和所述初始目标游标对所述源全量校验数据和所述目标全量校验数据进行遍历比较,生成全量数据校验结果;若满足,则将所述每一行的比较结果作为目标比较结果并输出。
[0019] 本发明第三方面提供了一种基于数据库的数据校验设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述基于数据库的数据校验设备执行上述的基于数据库的数据校验方法。
[0020] 本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的基于数据库的数据校验方法。
[0021] 本发明提供的技术方案中,根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验;若所述校验类型为增量数据校验,则基于预设的时间间隔监听所述目标数据库的数据写入事件,当监听到所述目标数据库中存在数据写入事件时,通过预设的字段名称获取所述数据写入事件对应的数据唯一标识地址;根据所述数据唯一标识地址、所述源连接和所述目标连接分别抽取所述源数据库和所述目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;对所述源增量校验数据和所述目标增量校验数据进行数据一致性验证,得到增量数据校验结果;若所述校验类型为全量数据校验,则获取预先设置的与所述源数据库和所述目标数据库对应的表名称、排序和排序字段;根据所述表名称、所述排序和所述排序字段分别查询所述源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;根据所述源全量校验数据和所述目标全量校验数据并通过遍历法对所述源数据库和所述目标数据库数据进行全量数据校验,得到全量数据校验结果。本发明通过对源数据库和目标数据库中不同的数据校验类型采用不同的数据校验流程,通过遍历的方式对全量数据进行校验,提高了数据校验的准确率。

附图说明

[0022] 图1为本发明实施例中基于数据库的数据校验方法的一个实施例示意图;
[0023] 图2为本发明实施例中基于数据库的数据校验方法的另一个实施例示意图;
[0024] 图3为本发明实施例中基于数据库的数据校验装置的一个实施例示意图;
[0025] 图4为本发明实施例中基于数据库的数据校验装置的另一个实施例示意图;
[0026] 图5为本发明实施例中基于数据库的数据校验设备的一个实施例示意图。

具体实施方式

[0027] 本发明实施例提供了一种基于数据库的数据校验方法、装置、设备及存储介质,用于提高数据校验的准确率。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0028] 为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中基于数据库的数据校验方法的一个实施例包括:
[0029] 101、接收数据校验指令,并根据数据校验指令启动数据校验任务;
[0030] 可以理解的是,本发明的执行主体可以为基于数据库的数据校验装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。
[0031] 需要说明的是,数据校验指令可以是跨环境部署版本时,指示服务器对版本数据进行校验的指令,本发明实施例中,当服务器接收到该数据校验指令时,对该指令进行扫描,确定对应的校验任务标识,进而服务器根据该装置标识从预置的任务调用接口数据库中获取对应的调用数据接口,然后服务器通过该调用数据接口启动数据校验任务。
[0032] 102、执行数据校验任务并创建源数据库与目标数据库之间的连接关系,生成源连接和目标连接,并根据数据校验任务确定校验类型,其中,校验类型包括:增量数据校验和全量数据校验;
[0033] 具体的,服务器根据数据校验任务确定对应的源数据库标识及目标数据库标识,需要说明的是,源数据库标识可以是源数据库的标识,源数据库可以是已经完成了软件版本部署的环境,目标数据库标识可以是目标数据库的标识,目标数据库可以是尚未完成软件版本部署的环境,源数据库中的数据为版本数据,数据校验指令可以是跨环境部署版本时,指示服务器对版本数据进行校验的指令,进而服务器执行数据校验任务并创建源数据库与目标数据库之间的连接关系,生成源连接和目标连接,并确定相应的数据校验类型,需要说明的是,数据校验类型包括增量数据校验和全量数据校验,本发明实施例中,服务器对两版本不同数据进行相似度分析,当相似度较大时,也即相似度大于预设阈值时,则采用增量数据校验类型,若相似度小于预设阈值,则采用全量数据校验类型。
[0034] 103、若校验类型为增量数据校验,则基于预设的时间间隔监听目标数据库的数据写入事件,当监听到目标数据库中存在数据写入事件时,通过预设的字段名称获取数据写入事件对应的数据唯一标识地址;
[0035] 本发明实施例中,服务器基于预设的时间间隔监听用于提交数据的页面的数据写入事件,以获得当前页面数据写入过程对应的监听结果,需要说明的是,数据写入事件包括但不限于写入的数据内容及对应的写入时间、写入数据的方式以及写入数据过程中当前页面的动态状态或入数据过程中用户的附属操作等,当服务器监听到目标数据库中存在数据写入事件时,服务器通过预设的字段名称获取标识地址,具体的,服务器对数据写入事件进行写入时间分析,确定对应的写入时间,进而服务器根据该写入时间确定相应的数据地址,然后服务器根据预设的字段名称对该数据地址进行标签化处理,得到数据写入时间对应的数据唯一标识地址。
[0036] 104、根据数据唯一标识地址、源连接和目标连接分别抽取源数据库和目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;
[0037] 具体的,通过源数据库及目标数据库已接入的服务器,从源数据库及目标数据库中获取重做日志记录的增量数据对应的标识,并依据获取的标识和本地已抽取的最后一条增量数据的标识,确定待抽取增量数据的标识范围,然后再从源数据库及目标数据库抽取并存储该标识范围对应的增量数据,得到源增量校验数据和目标增量校验数据。
[0038] 105、对源增量校验数据和目标增量校验数据进行数据一致性验证,得到增量数据校验结果;
[0039] 需要说明的是,为了避免在对源增量校验数据和目标增量校验数据进行一致性验证的过程中,由于向源数据表中写入数据,导致目标数据表与源数据表不一致,服务器可以获取该目标数据表的写数据状态,该写数据状态可以为未锁定状态和锁定状态,未锁定状态可以是指可以向源数据表中写入数据,锁定状态可以是指暂停向源数据表中写入数据,具体的,服务器对源增量校验数据和目标增量校验数据进行数据一致性验证,得到增量数据校验结果。
[0040] 106、若校验类型为全量数据校验,则获取预先设置的与源数据库和目标数据库对应的表名称、排序和排序字段;
[0041] 具体的,若校验类型为全量校验数据,则需要对源数据库及目标数据库进行分析,确定对应的表名称,排序及排序字段,需要说明的是,该表名称,排序及排序字段为预先设置的,目的是为了对源数据库及目标数据库中每一项数据进行遍历查询,以便于后续服务器进行全量数据校验。
[0042] 107、根据表名称、排序和排序字段分别查询源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;
[0043] 具体的,服务器根据表名称、排序和排序字段确定源数据库中每一项数据的位置及数据类型,并对源数据库中每一项数据进行下载,当获得源数据库中每一项数据后,生成对应的源数据库数据表,后续服务器对目标数据库采取相同操作,并生成对应的目标数据库数据表,进而服务器根据源数据库数据表及目标数据库数据表进行全量数据生成,得到源全量校验数据和目标全量校验数据。
[0044] 108、根据源全量校验数据和目标全量校验数据并通过遍历法对源数据库和目标数据库数据进行全量数据校验,得到全量数据校验结果。
[0045] 具体的,服务器根据源全量校验数据和目标全量校验数据并通过预置的校验参数表进行遍历全量数据校验,需要说明的是,校验参数表用于存放校验规则信息及相关配置,包括:校验标识号,用于定位每条校验规则的标识号,校验信息描述,用于明确描述具体的校验规则,校验目标表,用于明确当前校验规则的适用表,校验目标字段,用于明确当前校验规则适用的表内字段,校验语句配置,用于将校验信息描述翻译成代码,以便执行校验程序时调用,校验类型,用于设置校验的严重级别,包括“确定性错误”和“提示性错误”,当服务器根据该校验数据表进行数据校验后,得到全量数据校验结果。
[0046] 本发明实施例中,根据数据校验任务确定校验类型,其中,校验类型包括:增量数据校验和全量数据校验;若校验类型为增量数据校验,则基于预设的时间间隔监听目标数据库的数据写入事件,当监听到目标数据库中存在数据写入事件时,通过预设的字段名称获取数据写入事件对应的数据唯一标识地址;根据数据唯一标识地址、源连接和目标连接分别抽取源数据库和目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;对源增量校验数据和目标增量校验数据进行数据一致性验证,得到增量数据校验结果;若校验类型为全量数据校验,则获取预先设置的与源数据库和目标数据库对应的表名称、排序和排序字段;根据表名称、排序和排序字段分别查询源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;根据源全量校验数据和目标全量校验数据并通过遍历法对源数据库和目标数据库数据进行全量数据校验,得到全量数据校验结果。本发明通过对源数据库和目标数据库中不同的数据校验类型采用不同的数据校验流程,通过遍历的方式对全量数据进行校验,提高了数据校验的准确率。
[0047] 请参阅图2,本发明实施例中基于数据库的数据校验方法的另一个实施例包括:
[0048] 201、接收数据校验指令,并根据数据校验指令启动数据校验任务;
[0049] 具体的,在本实施例中,步骤201的具体实施方式与上述步骤101类似,此处不再赘述。
[0050] 202、执行数据校验任务并创建源数据库与目标数据库之间的连接关系,生成源连接和目标连接,并根据数据校验任务确定校验类型,其中,校验类型包括:增量数据校验和全量数据校验;
[0051] 具体的,服务器当执行数据校验任务时,调用预置的源数据库和预置的目标数据库;获取源数据库中的源字段数据,以及获取目标数据库中的目标字段数据;创建源字段数据和目标字段数据之间的字段数据对应关系;创建源数据库和目标数据库之间的映射关系;根据字段数据对应关系和映射关系生成源数据库与目标数据库之间的连接关系,得到源连接和目标连接;根据数据校验任务确定校验类型,其中,校验类型包括:增量数据校验和全量数据校验。
[0052] 其中,服务器在执行数据校验任务时,通过预置的数据调用接口调用预置的源数据库及目标数据库,并读取源数据格式的源数据文件,从源数据文件中获取源字段位置及其对应的源字段内容,进而服务器根据源字段位置查找数据格式对应表,获取与源字段位置对应的目标字段位置,并将源字段位置对应的源字段内容保存于目标数据文件的目标字段位置,作为目标字段位置对应的目标字段内容。例如以Json格式的数据为源数据格式,Xml格式的数据为目标数据格式,建立数据格式对应表,并根据该数据格式对应表创建源字段数据和目标字段数据之间的字段数据对应关系;创建源数据库和目标数据库之间的映射关系;根据字段数据对应关系和映射关系生成源数据库与目标数据库之间的连接关系,得到源连接和目标连接,最终服务器根据数据校验任务确定相应的数据校验事件,并通过该数据校验事件确定数据校验类型。
[0053] 203、若校验类型为增量数据校验,则基于预设的时间间隔监听目标数据库的数据写入事件,当监听到目标数据库中存在数据写入事件时,通过预设的字段名称获取数据写入事件对应的数据唯一标识地址;
[0054] 具体的,在本实施例中,步骤203的具体实施方式与上述步骤103类似,此处不再赘述。
[0055] 204、根据数据唯一标识地址、源连接和目标连接分别抽取源数据库和目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;
[0056] 205、对源增量校验数据和目标增量校验数据进行数据一致性验证,得到增量数据校验结果;
[0057] 本发明实施例中,服务器基于预设的时间间隔监听用于提交数据的页面的数据写入事件,以获得当前页面数据写入过程对应的监听结果,需要说明的是,数据写入事件包括但不限于写入的数据内容及对应的写入时间、写入数据的方式以及写入数据过程中当前页面的动态状态或入数据过程中用户的附属操作等,当服务器监听到目标数据库中存在数据写入事件时,服务器通过预设的字段名称获取标识地址,进而通过源数据库及目标数据库已接入的服务器,从源数据库及目标数据库中获取重做日志记录的增量数据对应的标识,并依据获取的标识和本地已抽取的最后一条增量数据的标识,确定待抽取增量数据的标识范围,然后再从源数据库及目标数据库抽取并存储该标识范围对应的增量数据,得到源增量校验数据和目标增量校验数据。
[0058] 206、若校验类型为全量数据校验,则获取预先设置的与源数据库和目标数据库对应的表名称、排序和排序字段;
[0059] 207、根据表名称、排序和排序字段分别查询源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;
[0060] 具体的,若校验类型为全量校验数据,则需要对源数据库及目标数据库进行分析,确定对应的表名称,排序及排序字段,服务器根据表名称、排序和排序字段确定源数据库中每一项数据的位置及数据类型,并对源数据库中每一项数据进行下载,当获得源数据库中每一项数据后,生成对应的源数据库数据表,后续服务器对目标数据库采取相同操作,并生成对应的目标数据库数据表,进而服务器根据源数据库数据表及目标数据库数据表进行全量数据生成,得到源全量校验数据和目标全量校验数据。
[0061] 208、分别查询源数据库和目标数据库中的游标,得到源数据库游标和目标数据库游标;
[0062] 具体的,服务器根据查询语句获取查询结果,并将缓存中的查询结果提前返回,进而服务器根据返回的所述查询结果的缓存地址设置游标的游标结果集,根据所述游标读取所述查询结果,具体的,服务器分别查询源数据库和目标数据库中的游标,得到源数据库游标和目标数据库游标。
[0063] 209、按照预设的初始化条件对源数据库游标和目标数据库游标进行初始化配置,得到初始源游标和初始目标游标;
[0064] 具体的,服务器检测默认配置请求,并执行默认值恢复操作,进而服务器获取对应的适配信息,并控制链路控制工具修改游标系数,能够实现自动化的在不同应用场景下对的游标系数进行灵活的配置,具体的,服务器按照预设的初始化条件按照预设的初始化条件对源数据库游标和目标数据库游标进行初始化配置,得到初始源游标和初始目标游标。
[0065] 210、基于初始源游标和初始目标游标对源全量校验数据和目标全量校验数据进行遍历比较,生成全量数据校验结果。
[0066] 具体的,服务器将初始源游标的游标状态设置为第一源状态,并将初始目标游标的游标状态设置为第一目标状态;移动初始源游标,并设置初始源游标的游标状态为第二源状态,以及移动初始目标游标,并设置初始目标游标的游标状态为第二目标状态;在初始源游标和初始目标游标移动的过程中,对源数据库中的源字段数据和目标数据库中的目标字段数据进行遍历比较,得到目标比较结果,其中,目标比较结果包括:源字段数据大、相等和目标字段数据大;根据比较结果生成全量数据校验结果。
[0067] 需要说明的是,重置初始源游标,将并将初始源游标设置为数据文件头,进而移动初始目标游标至下一个源游标的地址偏移,然后获取游标当前指向的数据内容、数据长度及数据状态,进而判断是否已读取完所有的数据对象,如是,则结束,进而在在初始源游标和初始目标游标移动的过程中,对源数据库中的源字段数据和目标数据库中的目标字段数据进行遍历比较,得到目标比较结果,其中,目标比较结果包括:源字段数据大、相等和目标字段数据大;根据比较结果生成全量数据校验结果,需要说明的是,本发明实施例中,对游标进行状态设置的目的是为了判断在游标移动时进行数据遍历时是否存在数据写入的情况出现,避免因在数据遍历时因数据写入状态而导致进行全量数据校验时校验准确性不足的情况。
[0068] 具体的,服务器基于初始源游标定位源数据库中的源字段数据中的第一行源数据,并基于初始目标游标定位目标数据库中的目标字段数据中的第二行目标数据;对第一行源数据和第二行目标数据进行比较,得到第一行比较结果;根据第一行比较结果并按照预置的游标移动策略控制初始源游标和初始目标游标进行移动,直至源字段数据和目标字段数据遍历完成,得到目标比较结果,其中,目标比较结果包括:源字段数据大、相等和目标字段数据大。
[0069] 可选的,服务器若第一行比较结果为源字段数据大,则记录源数据库大并控制初始源游标按照预设方向进行移动,得到第二行源数据;对第二行源数据和第二行目标数据进行比较,得到第二行比较结果;根据第二行比较结果控制初始源游标和初始目标游标进行移动进行下一轮比较,直至源字段数据和目标字段数据读取完成,得到每一行的比较结果;将每一行的比较结果作为目标比较结果并输出。
[0070] 需要说明的是,在进行数据遍历比较时候,具体的逻辑为重置文件游标,并移动游标到下一个地址,判断该地址是否为文件数据末尾位置,如是,则结束读取,否则继续读取游标当前指向地址对应的数据状态、数据长度及数据内容,并在读取完该数据的内容后,进行数据遍历比较,本发明实施例中,服务器进行数据遍历校验时,根据数据所在位置进行校验,具体的,服务器基于初始源游标定位源数据库中的源字段数据中的第一行源数据,并基于初始目标游标定位目标数据库中的目标字段数据中的第二行目标数据;对第一行源数据和第二行目标数据进行比较,得到第一行比较结果,当每行比较完成时,则移动游标,继续遍历比较下一行,直至数据遍历比较完毕。
[0071] 具体的,服务器当初始源游标的游标状态为第二源状态并且初始目标游标的游标状态为第二目标状态时,确定源字段数据和目标字段数据读取完成;判断每一行的比较结果是否满足预设退出条件;若不满足,则循环执行基于初始源游标和初始目标游标对源全量校验数据和目标全量校验数据进行遍历比较,生成全量数据校验结果;若满足,则将每一行的比较结果作为目标比较结果并输出。
[0072] 其中,本发明实施例中,由于与预先设置了游标状态,该游标状态的目的是为了服务器便于识别当前遍历校验过程中所处于的操作节点,当该初始源游标的游标状态为第二源状态时,则确认当前源游标及目标字段数据读取完成,上述介绍了在进行遍历比较时的操作逻辑,也即当每一行的比较结果均满足预设条件时,则此时完成数据的全量校验,需要说明的是,该预设条件为当前数据校验处理量小于预设阈值,若不满足预设条件,则根据上述比较操作逻辑进行循环操作,直至每一行的比较结果满足预设条件,此时,则将每一行的比较结果作为目标比较结果并输出。
[0073] 本发明实施例中,根据数据校验任务确定校验类型,其中,校验类型包括:增量数据校验和全量数据校验;若校验类型为增量数据校验,则基于预设的时间间隔监听目标数据库的数据写入事件,当监听到目标数据库中存在数据写入事件时,通过预设的字段名称获取数据写入事件对应的数据唯一标识地址;根据数据唯一标识地址、源连接和目标连接分别抽取源数据库和目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;对源增量校验数据和目标增量校验数据进行数据一致性验证,得到增量数据校验结果;若校验类型为全量数据校验,则获取预先设置的与源数据库和目标数据库对应的表名称、排序和排序字段;根据表名称、排序和排序字段分别查询源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;根据源全量校验数据和目标全量校验数据并通过遍历法对源数据库和目标数据库数据进行全量数据校验,得到全量数据校验结果。本发明通过对源数据库和目标数据库中不同的数据校验类型采用不同的数据校验流程,通过遍历的方式对全量数据进行校验,提高了数据校验的准确率。
[0074] 上面对本发明实施例中基于数据库的数据校验方法进行了描述,下面对本发明实施例中基于数据库的数据校验装置进行描述,请参阅图3,本发明实施例中基于数据库的数据校验装置一个实施例包括:
[0075] 启动模块301,用于接收数据校验指令,并根据所述数据校验指令启动数据校验任务;
[0076] 连接模块302,用于执行所述数据校验任务并创建源数据库与目标数据库之间的连接关系,生成源连接和目标连接,并根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验;
[0077] 监听模块303,用于若所述校验类型为增量数据校验,则基于预设的时间间隔监听所述目标数据库的数据写入事件,当监听到所述目标数据库中存在数据写入事件时,通过预设的字段名称获取所述数据写入事件对应的数据唯一标识地址;
[0078] 抽取模块304,用于根据所述数据唯一标识地址、所述源连接和所述目标连接分别抽取所述源数据库和所述目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;
[0079] 验证模块305,用于对所述源增量校验数据和所述目标增量校验数据进行数据一致性验证,得到增量数据校验结果;
[0080] 获取模块306,用于若所述校验类型为全量数据校验,则获取预先设置的与所述源数据库和所述目标数据库对应的表名称、排序和排序字段;
[0081] 查询模块307,用于根据所述表名称、所述排序和所述排序字段分别查询所述源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;
[0082] 校验模块308,用于根据所述源全量校验数据和所述目标全量校验数据并通过遍历法对所述源数据库和所述目标数据库数据进行全量数据校验,得到全量数据校验结果。
[0083] 本发明实施例中,根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验;若所述校验类型为增量数据校验,则基于预设的时间间隔监听所述目标数据库的数据写入事件,当监听到所述目标数据库中存在数据写入事件时,通过预设的字段名称获取所述数据写入事件对应的数据唯一标识地址;根据所述数据唯一标识地址、所述源连接和所述目标连接分别抽取所述源数据库和所述目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;对所述源增量校验数据和所述目标增量校验数据进行数据一致性验证,得到增量数据校验结果;若所述校验类型为全量数据校验,则获取预先设置的与所述源数据库和所述目标数据库对应的表名称、排序和排序字段;根据所述表名称、所述排序和所述排序字段分别查询所述源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;根据所述源全量校验数据和所述目标全量校验数据并通过遍历法对所述源数据库和所述目标数据库数据进行全量数据校验,得到全量数据校验结果。本发明通过对源数据库和目标数据库中不同的数据校验类型采用不同的数据校验流程,通过遍历的方式对全量数据进行校验,提高了数据校验的准确率。
[0084] 请参阅图4,本发明实施例中基于数据库的数据校验装置另一个实施例包括:
[0085] 启动模块301,用于接收数据校验指令,并根据所述数据校验指令启动数据校验任务;
[0086] 连接模块302,用于执行所述数据校验任务并创建源数据库与目标数据库之间的连接关系,生成源连接和目标连接,并根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验;
[0087] 监听模块303,用于若所述校验类型为增量数据校验,则基于预设的时间间隔监听所述目标数据库的数据写入事件,当监听到所述目标数据库中存在数据写入事件时,通过预设的字段名称获取所述数据写入事件对应的数据唯一标识地址;
[0088] 抽取模块304,用于根据所述数据唯一标识地址、所述源连接和所述目标连接分别抽取所述源数据库和所述目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;
[0089] 验证模块305,用于对所述源增量校验数据和所述目标增量校验数据进行数据一致性验证,得到增量数据校验结果;
[0090] 获取模块306,用于若所述校验类型为全量数据校验,则获取预先设置的与所述源数据库和所述目标数据库对应的表名称、排序和排序字段;
[0091] 查询模块307,用于根据所述表名称、所述排序和所述排序字段分别查询所述源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;
[0092] 校验模块308,用于根据所述源全量校验数据和所述目标全量校验数据并通过遍历法对所述源数据库和所述目标数据库数据进行全量数据校验,得到全量数据校验结果。
[0093] 可选的,所述连接模块302具体用于:当执行所述数据校验任务时,调用预置的源数据库和预置的目标数据库;获取所述源数据库中的源字段数据,以及获取所述目标数据库中的目标字段数据;创建所述源字段数据和所述目标字段数据之间的字段数据对应关系;创建所述源数据库和所述目标数据库之间的映射关系;根据所述字段数据对应关系和所述映射关系生成所述源数据库与所述目标数据库之间的连接关系,得到源连接和目标连接;根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验。
[0094] 可选的,所述校验模块308还包括:
[0095] 查询子模块,用于分别查询所述源数据库和所述目标数据库中的游标,得到源数据库游标和目标数据库游标;
[0096] 配置子模块,用于按照预设的初始化条件对所述源数据库游标和所述目标数据库游标进行初始化配置,得到初始源游标和初始目标游标;
[0097] 遍历子模块,用于基于所述初始源游标和所述初始目标游标对所述源全量校验数据和所述目标全量校验数据进行遍历比较,生成全量数据校验结果。
[0098] 可选的,所述遍历子模块还包括:
[0099] 设置单元,用于将所述初始源游标的游标状态设置为第一源状态,并将所述初始目标游标的游标状态设置为第一目标状态;
[0100] 移动单元,用于移动所述初始源游标,并设置所述初始源游标的游标状态为第二源状态,以及移动所述初始目标游标,并设置所述初始目标游标的游标状态为第二目标状态;
[0101] 处理单元,用于在所述初始源游标和所述初始目标游标移动的过程中,对所述源数据库中的源字段数据和所述目标数据库中的目标字段数据进行遍历比较,得到目标比较结果,其中,所述目标比较结果包括:源字段数据大、相等和目标字段数据大;
[0102] 生成单元,用于根据所述比较结果生成全量数据校验结果。
[0103] 可选的,所述处理单元还包括:
[0104] 定位子单元,用于基于所述初始源游标定位所述源数据库中的源字段数据中的第一行源数据,并基于所述初始目标游标定位所述目标数据库中的目标字段数据中的第二行目标数据;
[0105] 比较子单元,用于对所述第一行源数据和所述第二行目标数据进行比较,得到第一行比较结果;
[0106] 遍历子单元,用于根据所述第一行比较结果并按照预置的游标移动策略控制所述初始源游标和所述初始目标游标进行移动,直至所述源字段数据和所述目标字段数据遍历完成,得到目标比较结果,其中,所述目标比较结果包括:源字段数据大、相等和目标字段数据大。
[0107] 可选的,所述遍历子单元具体用于:若所述第一行比较结果为源字段数据大,则记录所述源数据库大并控制所述初始源游标按照预设方向进行移动,得到第二行源数据;对所述第二行源数据和所述第二行目标数据进行比较,得到第二行比较结果;根据所述第二行比较结果控制所述初始源游标和所述初始目标游标进行移动进行下一轮比较,直至所述源字段数据和所述目标字段数据读取完成,得到每一行的比较结果;将所述每一行的比较结果作为目标比较结果并输出。
[0108] 可选的,所述基于数据库的数据校验模块还包括:
[0109] 退出模块309,用于当所述初始源游标的游标状态为第二源状态并且所述初始目标游标的游标状态为第二目标状态时,确定所述源字段数据和所述目标字段数据读取完成;判断所述每一行的比较结果是否满足预设退出条件;若不满足,则循环执行基于所述初始源游标和所述初始目标游标对所述源全量校验数据和所述目标全量校验数据进行遍历比较,生成全量数据校验结果;若满足,则将所述每一行的比较结果作为目标比较结果并输出。
[0110] 本发明实施例中,根据所述数据校验任务确定校验类型,其中,所述校验类型包括:增量数据校验和全量数据校验;若所述校验类型为增量数据校验,则基于预设的时间间隔监听所述目标数据库的数据写入事件,当监听到所述目标数据库中存在数据写入事件时,通过预设的字段名称获取所述数据写入事件对应的数据唯一标识地址;根据所述数据唯一标识地址、所述源连接和所述目标连接分别抽取所述源数据库和所述目标数据库中的增量校验数据,得到源增量校验数据和目标增量校验数据;对所述源增量校验数据和所述目标增量校验数据进行数据一致性验证,得到增量数据校验结果;若所述校验类型为全量数据校验,则获取预先设置的与所述源数据库和所述目标数据库对应的表名称、排序和排序字段;根据所述表名称、所述排序和所述排序字段分别查询所述源数据库和目标数据库中的全量校验数据,得到源全量校验数据和目标全量校验数据;根据所述源全量校验数据和所述目标全量校验数据并通过遍历法对所述源数据库和所述目标数据库数据进行全量数据校验,得到全量数据校验结果。本发明通过对源数据库和目标数据库中不同的数据校验类型采用不同的数据校验流程,通过遍历的方式对全量数据进行校验,提高了数据校验的准确率。
[0111] 上面图3和图4从模块化功能实体的角度对本发明实施例中的基于数据库的数据校验装置进行详细描述,下面从硬件处理的角度对本发明实施例中基于数据库的数据校验设备进行详细描述。
[0112] 图5是本发明实施例提供的一种基于数据库的数据校验设备的结构示意图,该基于数据库的数据校验设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对基于数据库的数据校验设备500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在基于数据库的数据校验设备500上执行存储介质530中的一系列指令操作。
[0113] 基于数据库的数据校验设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图5示出的基于数据库的数据校验设备结构并不构成对基于数据库的数据校验设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0114] 本发明还提供一种基于数据库的数据校验设备,所述基于数据库的数据校验设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中的所述基于数据库的数据校验方法的步骤。
[0115] 本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述基于数据库的数据校验方法的步骤。
[0116] 进一步地,计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
[0117] 本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
[0118] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0119] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read‑only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0120] 以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。