一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种重复数据判断方法与流程

2022-02-22 23:28:09 来源:中国专利 TAG:
1.本发明涉及数据检索
技术领域
:,具体为一种重复数据判断方法。
背景技术
::2.在基于数据库进行数据处理的工作中,很多时候需要统计重复数据的数量。如:在统计机构对企业信用数据的归集共享工作中,不同的用户会持续的提交自身企业信用相关数据。因为提交管理不规范,导致出现数据重复提交的问题频繁发生。为了改善数据提交工作,管理部门将重复数据量作为对机关绩效考核和各地级以上考核评分项,这就需要统计每次提交的数据中的数据重复量。但是,因为每次提交的数据需要与数据库中现存的数据进行比较,而当数据库中的数据量非常大的时候,比如存储单位达到千万、上亿条,直接将每一条提交的数据与所有的现存数据进行比较,会导致查重效率很低,同时对服务器的硬件性能要求非常高。技术实现要素:3.为了解决现有技术中基于大数据进行重复数据统计效率低并且对服务器硬件性能要求高的问题,本发明提供一种重复数据判断方法,其可以高效的完成大数据中的重复数据统计的工作,同时对服务器硬件性能要求也很低。4.本发明的技术方案是这样的:一种重复数据判断方法,其包括以下步骤:s1:获取待检索数据库的数据库表;所述数据库表中包括:数据id、数据的业务字段;所述数据id为标记该条目数据的唯一id;所述业务字段为表示该条目数据的实质内容的数据;数据的所述业务字段相同,则表明存在数据重复;其特征在于,其还包括以下步骤:s2:获取数据库中的检索用表,确认所述检索用表是否存在;如果所述检索用表不存在,则实施步骤s3;否则实施步骤s4;s3:为所述数据库表中存储的所有数据,建立一个所述检索用表;所述检索用表存储的内容包括:数据id、数据id对应的数据哈希值、重复状态、创建时间;所述检索用表中的所述数据id为所述数据库表中所述数据id的子集;在所述检索用表中,每一条所述数据id与其他字段分别为1:1关系;所述数据哈希值为基于所述数据id对应的数据的所述业务字段使用哈希函数生成;所述创建时间为数据存入所述待检索数据库的时间;所述重复状态的值包括:重复、不重复;s4:比对所述数据库表、所述检索用表;如果所述数据库表中的所述数据id与所述检索用表中的所述数据id不一致,则实施步骤s5,进行本轮数据重复检索操作;否则结束本次操作;s5:获取存在于所述数据库表中,但不存在于所述检索用表中的所有所述数据id,记做:待处理数据id;向所述检索用表中,插入所有所述待处理数据id对应的数据哈希值;s6:在所述检索用表中,查找重复数据;所述查找重复数据的步骤包括:a1:将所述检索用表中的所有所述数据id,以所述数据哈希值进行排序;a2:以所述数据哈希值为区分,将所有所述所述数据id分组;找到所有所述数据id个数大于1的组,记做重复数据组;其余的数据记做:无重复数据;a3:获取每组所述重复数据组,对其包括的所述数据id以所述创建时间进行排序;除所述创建时间最早的所述数据id以外,将其他所有所述数据id对应的所述重复状态字段设置为:重复;a4:所有所述无重复数据对应的所述重复状态字段设置为:不重复;a5:按照数据的所述创建时间将所有数据分组,找到其中所有的重复状态字段为重复的数据,即得到该批次上传到所述待检索数据库的数据中的重复数据。5.其进一步特征在于:所述数据哈希值的生成方法为:获取数据的所有所述业务字段,将所有的所述业务字段直接拼接成字符串,然后计算出此字符串的哈希值;步骤s1实施之前,预设一个数据重复检索定时方式,按照所述重复检索定时方式,循环实施步骤s1~s6;所述重复检索定时方式包括:设置定时启动时间、设置重复检索相隔时间t;所述定时启动时间包括一个或者多个具体的时间,每天的所述定时启动时间到达后,实施一轮步骤s1~s6;所述重复检索相隔时间t为两次所述数据重复检索操作之间的间隔时间,上一次的数据重复检索操作中步骤s6结束t时间后,开始实施下一轮重复数据判断方法中的步骤s1;当所述重复检索定时方式选择所述定时启动时间时,如果因为数据量过大,导致前一次数据重复检索操作还未完成,下一次定时启动时间已经到达,则顺延下一次所述数据重复检索操作的开始时间到前次数据重复检索操作的结束时间;步骤s5中,所述插入数据哈希值操作的步骤包括:b1:建立临时表;所述临时表包括:数据id、数据哈希值;b2:将所有的所述待处理数据id存入所述临时表中;b3:为所述临时表中的每一条所述待处理id,基于其对应的业务字段生成其对应的所述数据哈希值,并存入所述临时表;将所述临时表中的所述待处理id、所述数据哈希值批量存入所述检索用表中;b4:当所有的所述待处理id的所述数据哈希值都被存入到所述检索用表中后,删除所述临时表;步骤b3中将所述数据哈希值批量存入所述检索用表的过程,包括以下步骤:c1:预设一个分页处理阈值m;所述分页处理阈值m表示每次生成所述数据哈希值的数据的条目数;c2:每次获取m条所述待处理数据id,基于所述所述数据库表,得到其对应数据的所述业务字段,分别生成所述数据哈希值;c3:将每个所述数据哈希值存入所述临时表中;c4:将本次m条所述待处理数据id对应的所述数据哈希值一起存入到所述检索用表中;c5:循环执行步骤c2~c4,直至所有的待处理数据id对应的所述数据哈希值,都被存入到所述检索用表中。6.本发明提供的一种重复数据判断方法,基于数据的业务字段生成数据哈希值,通过数据哈希值的比对,找到所有的重复数据;每次进行比对是通过比对数据库表、检索用表,找到二者不一致的数据id,作为待处理数据id,然后成批次的对待处理数据id生成数据哈希值,通过分别对数据哈希值排序、同哈希值的数据之间通过创建时间排序,找到待处理数据id中与待检索数据库中原有数据重复的数据,无需针对每一条数据分别查重,极大的提高了实施效率,同时降低了对服务器性能的要求;通过设置检索用表存储数据哈希值,以及进行数据重复检索操作,避免直接操作数据库表,而导致对服务器性能要求过高;生成数据哈希值的时候,通过建立临时表批量的生成待处理数据id对应的数据哈希值,然后分批次的插入到检索用表中,避免了直接在检索用表中对每一条数据生成数据哈希值然后插入,导致整体效率低下的问题,进一步的提高了整个数据重复检索操作的执行效率,且降低了对服务器性能的要求。附图说明7.图1为重复数据判断方法的流程示意图。具体实施方式8.如图1所示,本发明一种重复数据判断方法,其包括以下步骤。9.s1:获取待检索数据库的数据库表;数据库表中包括:数据id、数据的业务字段;数据id为标记该条目数据的唯一id;业务字段为表示该条目数据的实质内容的数据;本实施例中,数据的业务字段相同,则表明存在数据重复,即通过两条数据的所有的业务字段是否完全一致来判断二者是否为重复数据。10.实际工作中,数据的具体结构根据其对应的业务内容不同而不同。11.本实施例中,存储在待检索数据库中的数据包括如下字段:id、fk_log_id、insert_type、status、info_type、task_code、create_time、create_user、dept_code,、dept_name、table_version_id;cf_wsh、cf_sy、cf_xdr、xk_xdr_shxym、xk_xdr_zdm、xk_xdr_lb;其中,“cf_wsh、cf_sy、cf_xdr、xk_xdr_shxym、xk_xdr_zdm、xk_xdr_lb”为数据的业务字段;其他的字段为数据存储用的固定字段,如id为数据id。12.s2:获取数据库中的检索用表,确认检索用表是否存在;如果检索用表不存在,则实施步骤s3;否则实施步骤s4。13.因为待检索数据库的数据量非常大,所以数据库表的数据量必然很大,直接将每个数据id对应的数据哈希值在数据库表中存储,必然会导致效率降低,所以本发明技术方案中另外建立一个检索用表,用于存储重复数据检索时用到的数据哈希值。14.s3:为数据库表中存储的所有数据,建立一个检索用表;检索用表存储的内容包括:数据id、数据id对应的数据哈希值、重复状态、创建时间;检索用表中的数据id为数据库表中数据id的子集;在检索用表中,每一条数据id与其他字段分别为1:1关系;数据哈希值为基于数据id对应的数据的业务字段使用哈希函数生成;创建时间为数据存入待检索数据库的时间;重复状态的值包括:重复、不重复。15.如下面表1,为一个空的检索用表的实施例1。16.表1:检索用表实施例1表1中id为数据id的字段,hash_code为数据id对应的数据哈希值,create_time为创建时间,is_duplicate为重复状态;具体实施的时候,重复状态用1、0表示,0表示不重复,1表示重复。因为检索用表是为了对数据库表中的数据进行查重而建立的表,所以检索用表中的数据id是依据数据库表建立的,所以检索用表中的数据id为数据库表中数据id的子集。17.创建检索用表时,直接从数据库表获取数据id、创建时间;而数据哈希值通过临时表进行计算后插入,重复状态则在每次进行数据重复检索操作后填入。18.数据哈希值的生成方法为:获取数据的所有业务字段,将数据对应的所有的业务字段直接拼接成字符串,然后计算出此字符串的哈希值。19.如数据id为1的数据的业务字段:cf_wsh、cf_sy、cf_xdr、xk_xdr_shxym、xk_xdr_zdm、xk_xdr_lb对应的具体数值为:10001、罚款、100、未至科技、91370104ma3mmcx3xa、法人及非法人组织则其生成数据哈希值过程为:首先将所有的业务字段拼接成字符串str:str=“10001罚款100未至科技91370104ma3mmcx3xa法人及非法人组织”基于指定的哈希函数,计算出此字符串的数据哈希值hashcode:hashcode=faa94af6afbfb438709ebd1e01371b89即得到在检索用表中,数据id:为1的数据对应的数据哈希值。20.将上述数据存入检索用表中,参照下面的表2;表2:检索用表实施例2s4:比对数据库表、检索用表;如果数据库表中的数据id与检索用表中的数据id不一致,则实施步骤s5,进行本轮数据重复检索操作;否则不进行数据重复检索操作,结束本次操作;s5:获取存在于数据库表中,但不存在于检索用表中的所有数据id,记做:待处理数据id;向检索用表中,插入所有待处理数据id对应的数据哈希值。21.插入数据哈希值操作的步骤包括:b1:建立临时表;临时表包括:数据id、数据哈希值;b2:将所有的待处理数据id存入临时表中;b3:为临时表中的每一条待处理id,基于其对应的业务字段生成其对应的数据哈希值,并存入临时表;将临时表中的待处理id、数据哈希值批量存入检索用表中;b4:当所有的待处理id的数据哈希值都被存入到检索用表中后,删除临时表。22.步骤b3中将数据哈希值批量存入检索用表的过程,包括以下步骤:c1:预设一个分页处理阈值m;分页处理阈值m表示每次生成数据哈希值的数据的条目数;c2:每次获取m条待处理数据id,基于数据库表,得到其对应数据的业务字段,分别生成数据哈希值;c3:将每个数据哈希值存入临时表中;c4:将本次m条待处理数据id对应的数据哈希值一起存入到检索用表中;c5:循环执行步骤c2~c4,直至所有的待处理数据id对应的数据哈希值,都被存入到检索用表中。23.因为随着待检索数据库中数据的增加,数据库表、检索用表中的数据量必然也越来越大,插入数据哈希值因为涉及到增量数据计算,需要记录本次数据执行到哪里了,直接读取数据库表、检索用表中千万级别的原始存量数据,对服务器的性能要求也会非常高,本发明技术方案中,创建了临时表用于保存本次需要处理原始存量数据的哪些数据,降低了对服务器性能的要求,同时对数据哈希值的存储不是逐条进行,而是通过批处理方式对检索用表进行commit等数据库操作,与逐条提交相比,提高了操作效率。24.本实施例中,分页处理阈值m设置为10000条,即每10000条数据的数据哈希值会被作为一个批次存入到检索用表中。25.s6:在检索用表中,查找重复数据;查找重复数据的步骤包括:a1:将检索用表中的所有数据id,以数据哈希值进行排序;a2:以数据哈希值为区分,将所有数据id分组;找到所有数据id个数大于1的组,记做重复数据组;a3:获取每组重复数据组,对其包括的数据id以创建时间进行排序;除创建时间最早的数据id以外,将其他所有数据id对应的重复状态字段设置为:重复;a4:所有无重复数据对应的重复状态字段设置为:不重复;a5:按照数据的创建时间将所有数据分组,找到其中所有的重复状态字段为重复的数据,即得到该批次上传到待检索数据库的数据中的重复数据。26.假设,本轮数据重复检索操作的数据为如下5条数据,在临时表中生成相应的数据哈希值。27.第1条:str=“10001罚款100未至科技91370104ma3mmcx3xa法人及非法人组织”hashcode=faa94af6afbfb438709ebd1e01371b89第2条:str=“10002不予处罚未至科技91370104ma3mmcx4xa法人”hashcode=2b44839b53165ee540bf64ade693fbd6第3条:str=“10003罚款1000未至科技91370104ma3mmcx3xa法人及非法人组织”hashcode=bb1d789b4197e2b2afe2e46a55822ce7第4条:str=“10004罚款300未至科技91370104ma3mmcx3xa法人及非法人组织”hashcode=1ae256a9df403474f2a8e8ffe5cf991f第5条:str=“10002不予处罚未至科技91370104ma3mmcx4xa法人”hashcode=2b44839b53165ee540bf64ade693fbd6将上述5条数据的数据哈希值插入到检索用表后,参照下面表3:表3:检索用表实施例3将表3中的数据,先按照数据哈希值排序后分组,发现id为2和5的数据哈希值是相同的,将两条数据分为一组,记做重复数据组;本次查重只存在一组重复数组,则该组重复数据组的数据按照创建时间进行排序,则可知数据id为5的数据为先提交到待检索数据库中的数据,则数据id为5的数据对应的重复状态(is_duplicate)设置为0,数据id为2的数据对应的重复状态设置为1;而其他的数据id为1、3、4的数据为无重复数据,其对应的重复状态字段填写为0;如下面表4所示。28.表4:检索用表实施例4按照数据的创建时间将所有数据分组,可知2021/9/28日提交的这批次数据中,存在3个数据,其中1个数据存在重复提交现象。29.实际工作中,因为用户提交数据是不定时的持续的提交,基于本发明技术方案的数据重复检索操作需要按批次对提交到待检索数据库的数据进行操作,所以具体实施的是,通过设置定时方式,来控制发明技术方案的自动循环实施,无需人工指定开始时间,可以24小时循环进行,进一步提高了数据重复检索的效率。30.步骤s1实施之前,预设一个数据重复检索定时方式,按照重复检索定时方式,循环实施步骤s1~s6;重复检索定时方式包括:设置定时启动时间、设置重复检索相隔时间t;定时启动时间包括一个或者多个具体的时间,每天的定时启动时间到达后,实施一轮步骤s1~s6;重复检索相隔时间t为两次数据重复检索操作之间的间隔时间,上一次的数据重复检索操作中步骤s6结束t时间后,开始实施下一轮重复数据判断方法中的步骤s1。31.同时,因为用户每次提交的数据量是不可控的,基于定时任务实现数据重复检索操作是,每轮操作的执行时间有长有短,当重复检索定时方式选择定时启动时间时,为了确保上一次的任务完成了才执行下一个任务,本发明技术方案中通过设置一个队列,将每天的定时启动时间存入队列;如果因为数据量过大,导致前一次数据重复检索操作还未完成,下一次定时启动时间已经到达,则顺延下一次数据重复检索操作的开始时间到前次数据重复检索操作的结束时间,通过对每轮数据重复检索操作开始时间的指定以及锁定,确保本专利技术方案更具实用性。32.使用本发明的技术方案后,即便待检索数据库中的数据量为千万级别的数据,每轮数据重复检索操作计算下来只需要几个小时就可以得到统计结果了,与逐条计算的原始方法相比,效率提高了数百倍,同时对服务器的性能要求很低,极大的降低了系统的硬件成本。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献