CN111882310A - 一种数据对比方法、装置、设备及计算机可读存储介质 - Google Patents
一种数据对比方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111882310A CN111882310A CN202010416701.9A CN202010416701A CN111882310A CN 111882310 A CN111882310 A CN 111882310A CN 202010416701 A CN202010416701 A CN 202010416701A CN 111882310 A CN111882310 A CN 111882310A
- Authority
- CN
- China
- Prior art keywords
- data
- bloom filter
- payment
- payment system
- string
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000011068 loading method Methods 0.000 claims abstract description 23
- 230000006870 function Effects 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 6
- 238000002360 preparation method Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 7
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/085—Payment architectures involving remote charge determination or related payment systems
- G06Q20/0855—Payment architectures involving remote charge determination or related payment systems involving a third party
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/12—Accounting
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- Databases & Information Systems (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开了一种数据对比方法、装置、设备及计算机可读存储介质,涉及数据处理技术领域,以降低对账过程中对内存的消耗。该方法包括:获取第一支付系统的第一支付数据;将所述第一支付数据的数据特征分别加载到所述第一支付系统的布隆过滤器或者Set集合中;获取第二支付系统的第二支付数据;将所述第二支付数据的数据特征依次和所述Set集合、所述布隆过滤器进行比较,得到数据对比结果。本发明实施例可降低对账过程中对内存的消耗。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据对比方法、装置、设备及计算机可读存储介质。
背景技术
随着消费金融的迅猛发展,支付业务是消费金融公司的基础保障,其交易流水与第三方支付渠道的一致性是尤为重要。在消费金融公司的支付系统中,每天都需要与第三方支付渠道进行流水的对账,以保障每笔交易的一致性。
一般的支付流水对账流程,是将支付系统中的所有支付流水加载到内存中,再获取第三方渠道的支付流水,并逐一对比。然后,再将第三方渠道的所有支付流水加载到内存中,再获取支付系统的支付流水,并逐一对比。
在这种对账模式中,需要将一方所有的支付流水加载到内存中,对内存的消耗比较大。
发明内容
本发明实施例提供一种数据对比方法、装置、设备及计算机可读存储介质,以降低对账过程中对内存的消耗。
第一方面,本发明实施例提供了一种数据对比方法,包括:
获取第一支付系统的第一支付数据;
将所述第一支付数据的数据特征分别加载到所述第一支付系统的布隆过滤器或者Set集合中;
获取第二支付系统的第二支付数据;
将所述第二支付数据的数据特征依次和所述Set集合、所述布隆过滤器进行比较,得到数据对比结果。
第二方面,本发明实施例还提供一种数据对比装置,包括:
第一获取模块,用于获取第一支付系统的第一支付数据;
加载模块,用于将所述第一支付数据的数据特征分别加载到所述第一支付系统的布隆过滤器或者Set集合中;
第二获取模块,用于获取第二支付系统的第二支付数据;
对比模块,用于将所述第二支付数据的数据特征依次和所述Set集合、所述布隆过滤器进行比较,得到数据对比结果。
第三方面,本发明实施例还提供一种数据对比设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如上所述的第一方面的数据对比方法中的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的第一方面的数据对比方法中的步骤。
在本发明实施例中,将第一支付系统的第一支付数据的数据特征分别加载到第一支付系统的布隆过滤器或者Set集合中,然后,将第二支付系统的第二支付数据的数据特征分别和布隆过滤器或者Set集合进行比较,从而得到数据对比结果。由于内存中存储的是支付数据的数据特征,其大小远小于支付数据本身,因此,利用本发明实施例的方案,减少了对内存的占用,从而降低了对账过程中对内存的消耗。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的数据对比方法的流程图之一;
图2是本发明实施例中步骤104的过程示意图;
图3是本发明实施例中生成第一支付系统的布隆过滤器的过程示意图;
图4是本发明实施例中将第一支付系统的支付数据加载到内存的过程示意图;
图5是本发明实施例提供的数据对比方法的流程图之二;
图6是本发明实施例提供的数据对比装置的结构图;
图7是本发明实施例提供的数据对比设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,图1是本发明实施例提供的数据对比方法的流程图,如图1所示,包括以下步骤:
步骤101、获取第一支付系统的第一支付数据。
其中,第一支付系统可以是消费金融公司的支付系统,下文的第二支付系统可以是第三方渠道的支付系统;或者,第一支付系统可以是第三方渠道的支付系统,下文的第二支付系统可以是消费金融公司的支付系统。或者,第一支付系统和第二支付系统还可以是其他需要进行对账处理的支付系统。
所述第一支付数据指的是第一支付系统中需要对账的数据,可以是一笔或者多笔。每个支付数据都具有各自的组成字段,包括流水号字段和交易信息字段等,其中,交易信息字段可包括交易类型字段、交易金额字段、交易状态字段等等。
步骤102、将所述第一支付数据的数据特征分别加载到所述第一支付系统的布隆过滤器或者Set集合中。
在本发明实施例中,“数据特征”包括由支付数据的组成字段拼接形成的字符串,或者,还可以是其他可以代表支付数据本身的真正含义的信息。
以下对布隆过滤器和Set集合做一简要介绍。
布隆过滤器(Bloom Filter)可以用于检索一个元素是否在一个集合中。当一个元素被加入集合时,通过K个哈希函数将这个元素映射成比特(bit)数组中的K个点,把K个点设置为1。检索时,对于某个被检元素,通过确定这些点是否都为1,就可大约确定集合中有没有这个元素。如果这些点有任何一个为0,则被检元素一定不在这个集合中。
Set集合是一种用java语言实现的数据结构,注重数据的独特性,所以该集合中不会存储重复的元素。通过搜索该集合,即可确定某元素是否已经存在于集合中。
利用以上两种工具的特点,在本发明实施例中,可按照如下方式将所述第一支付数据的数据特征分别加载到所述第一支付系统的布隆过滤器或者Set集合中:
(1)将所述第一支付数据的组成字段拼接形成第一字符串,其中,所述组成字段包括流水号字段和交易信息字段,其中,交易信息字段可包括交易类型字段、交易金额字段、交易状态字段等等。
(2)确定所述第一字符串是否位于所述布隆过滤器中。
具体的,在此步骤中,将所述第一字符串通过至少一个哈希函数映射到位数组的至少一个第一目标位置上,所述至少一个哈希函数和所述位数组分别是所述第一支付系统生成所述布隆过滤器时所使用的哈希函数和位数组。所述第一目标位置的为至少一个。然后,判断所述第一目标位置的值是否全部为1。若所述第一目标位置的值不全部为1(也即至少有一个目标位置为0),则确定所述第一字符串未位于所述布隆过滤器中。
(3)在所述第一字符串未位于所述布隆过滤器中的情况下,将所述第一字符串加载到所述布隆过滤器中。否则,将所述第一字符串加载到所述Set集合中。
在以上的过程中,如果所述第一目标位置的值全部为1,也不能够确定第一字符串一定位于布隆过滤器中,也就是该第一字符串可能位于布隆过滤器中。对于这种情况,将其存储到Set集合中。
通过以上数据加载方法,可保证第一支付数据的每个数据都被进行比较,从而保证了数据对比的效果。
步骤103、获取第二支付系统的第二支付数据。
例如,第一支付系统可向第二支付系统发送请求,以获取第二支付系统的第二支付数据。第二支付数据可以是一个或多个。
步骤104、将所述第二支付数据的数据特征依次和所述Set集合、所述布隆过滤器进行比较,得到数据对比结果。
在本发明实施例中,结合图2,可按照如下方式将所述第二支付数据的数据特征依次和所述Set集合、所述布隆过滤器进行比较,得到数据对比结果:
步骤1041、将所述第二支付数据的组成字段拼接形成第二字符串,其中,所述组成字段包括流水号字段和交易信息字段。其中,交易信息字段可包括交易类型字段、交易金额字段、交易状态字段等等。在此步骤中,将第二支付数据拼接形成字符串的规则,与第一支付系统侧形成第一字符串的规则相同。
步骤1042、确定所述第二字符串是否位于所述Set集合中。
由于Set集合中存储的也是字符串,那么,在此步骤中,可将第二字符串分别和Set集合中的每个字符串进行比较,从而确定第二字符串是否位于Set集合中。
在所述第二字符串位于所述Set集合中的情况下,确定所述第一支付系统中具有与所述第二支付数据相同的支付数据。同时,可返回步骤1041进行下一字符串的处理。
如果第二字符串未位于所述Set集合中,则表示第二字符串可能是差异数据,也可能存在于布隆过滤器中。
步骤1043、在所述第二字符串未位于所述Set集合中的情况下,确定所述第二字符串是否位于所述布隆过滤器中。
具体的,在此步骤中,可将所述第二字符串通过至少一个哈希函数映射到位数组的至少一个第二目标位置上,所述至少一个哈希函数和所述位数组分别是所述第一支付系统生成所述布隆过滤器时所使用的哈希函数和位数组。然后,判断所述第二目标位置的值是否全部为1。若所述第二目标位置的值不全部为1,则确定所述第二字符串未位于所述布隆过滤器中;否则,由于第一支付系统的支付数据对应的字符串要么位于布隆过滤器中,要么位于Set集合中,因此,可确定第二字符串位于所述布隆过滤器中。
步骤1044、在所述第二字符串未位于所述布隆过滤器中的情况下,确定所述第二支付数据为差异数据;在所述第二字符串位于所述布隆过滤器中的情况下,确定所述第一支付系统中具有与所述第二支付数据相同的支付数据,可返回到步骤1041。
根据字符串的生成规则,这些差异数据可能是流水号不同,交易金额不同,交易状态不同等。通过流水号可以找出两个支付系统中的原交易流水,从而可确定差异的具体原因。如果只找到了一笔流水不同,则说明是漏单或者多单。
在本发明实施例中,将第一支付系统的第一支付数据的数据特征分别加载到第一支付系统的布隆过滤器或者Set集合中,然后,将第二支付系统的第二支付数据的数据特征分别和布隆过滤器或者Set集合进行比较,从而得到数据对比结果。
由于内存中存储的是支付数据的数据特征,其大小远小于支付数据本身,因此,利用本发明实施例的方案,减少了对内存的占用,从而降低了对账过程中对内存的消耗;另外,由布隆过滤器的特性可知,当经判断的数据特征在布隆过滤器中时,可能会存在误差,导致不同系统之间的数据比对结果不准确,而对账要求不同系统之间的数据比对结果准确,因此,在将从第一支付系统提取的数据特征进行存储时,将一定不在布隆过滤器中的数据特征存储于布隆过滤器中,可能存在于布隆过滤器中的数据特征存储在set集合中。这样,在对第一支付系统和第二支付系统的数据进行对比的时候,先在Set集合中判断是否存在该数据特征,在Set集合中不存在该数据特征时再判断布隆过滤器中是否存在该数据特征,这样就能找出有问题的数据特征,即该数据特征能够在第二支付系统找到但在第一支付系统找不到的数据特征。Set集合的设置解决了布隆过滤器在判断数据一致性时因该数据在布隆过滤器时而有误差的缺陷,通过Set集合与布隆过滤器的结合能够实现不同系统之间的准确对账。
在本发明实施例中,为了提高对账的效率,在步骤101之前,所述方法还可包括:生成所述第一支付系统的布隆过滤器。因此,在本发明实施例中,通过预先生成布隆过滤器,可以提高数据对比的效率。
参见图3,生成第一支付系统的布隆过滤器的过程可包括:
步骤301、确定第一支付系统的第一支付数据的总数据量。
这些支付数据存储在第一支付系统的数据库中,可采用sql(Structured QueryLanguage,结构化查询语言)的方式获取。该总数据量可以是个预估值。在此,总数据量用n表示,为大于0的整数。
步骤302、获取目标字符串长度值。
其中,该目标字符串长度值可以是根据经验设置的值。或者,也可将第一支付数据中的每个支付数据的组成字段拼接形成字符串,并获得各字符串的长度,然后,将各字符串的长度求取平均值,并将该平均值作为在此的目标字符串长度值。
例如,将每个支付数据的流水号,交易状态,金额等对比字段拼接在一起组成一个字符串key,例如,按照流水号|交易状态|金额的顺序,将这些对比字段拼接组成字符串key。然后,确定每个字符串的大小。由于每个key的大小都不同,目标字符串长度值k可以取所有key的大小的平均值。
步骤303、根据所述目标字符串长度值,确定误差率,所述误差率为使得所述第一支付系统的内存使用量最小的误差率。
步骤304、根据所述误差率和所述总数据量,确定位数组的大小和哈希函数的个数。
步骤305、利用所述位数组和所述哈希函数,生成所述布隆过滤器。
第一支付系统的内存分为两部分,一部分是布隆过滤器的内存,另一部分是Set集合的内存。由布隆过滤器的原理得知,布隆过滤器的内存大小主要由位(bit)数组组成,而bit数组的大小m由以下公式(1)确定:
其中,n表示总数据量,fpp表示误差率,大于0,也就是多个哈希函数都冲突的概率。Set集合主要用于存储是冲突的字符串,因此,Set集合的总数为fpp×n。那么,Set集合的内存N为:N=fpp×n×k。其中,k为目标字符串长度值,为大于0的整数。所以,总内存M=m/8+N(byte)。
要使得总内存M的使用最少,需要设置适当的fpp的值。具体的,fpp的值的具体计算过程如下:
在确定了fpp,n的值,可以根据上述公式(1)计算得出m。
参见图4,是本发明实施例将第一支付系统的支付数据加载到内存中的过程示意图。如图4所述,该过程可包括:
步骤401、获取第一支付系统的支付数据。
步骤402、对于待处理的一笔支付数据,将其组成字段拼接形成字符串,其中,所述组成字段包括流水号字段和交易信息字段,其中,交易信息字段可包括交易类型字段、交易金额字段、交易状态字段等等。
例如,按照流水号|交易状态|金额的顺序,将这些对比字段拼接组成字符串。
步骤403、确定形成的字符字符串是否一定不位于布隆过滤器中。
由布隆过滤器的特性可知,将某个字符串通过多个hash函数映射到bit数组对应的位置上。如果这些位置上的值有一个不为1,那么这个字符串肯定不在布隆过滤器中。如果都为1,也无法判断这字符串是否已经存在于布隆过滤器中,只能说明可能会存在于布隆过滤器中。由于对账需要是完全的准确,因此,在本发明实施例中,将一定不存在于布隆过滤器中的字符串存储在布隆过滤器中,可能存在于布隆过滤器中的字符串存储在Set集合中。
步骤404、将一定不存在于布隆过滤器中的字符串存储在布隆过滤器中。
步骤405、将可能存在于布隆过滤器中的字符串存储在Set集合中。
参见图5,图5是本发明实施例提供的数据对比方法的流程图。在图5中,以消费金融的支付数据为第一支付系统的支付数据、第三方渠道的支付数据为第二支付系统的支付数据为例进行描述。反之的话,实现原理相同。其中,消费金融的支付数据已经按照前述实施例描述的方法加载到布隆过滤器或者Set集合中。如图5所示,包括以下步骤:
步骤501、获取第三方渠道的支付数据。
步骤502、对于待处理的一笔支付数据,将该支付数据生成字符串。
其中,生成字符串的规则和将消费金融的支付系统生成字符串的规则相同。同时,在消费金融的支付系统中,已经按照前述的方式生成了布隆过滤器,并且将各支付数据的字符串分别加载到了布隆过滤器或者Set集合中。
步骤503、对于生成的字符串,判断生成的字符串是否存在于Set集合中。如果存在,则表示该字符串无差异,可返回到步骤502继续下一笔支付数据的处理。如果不存在,则表示该字符串可能是差异,也可能存在于布隆过滤器中。
步骤504、判断生成的字符串是否存在于布隆过滤器中。
如果该字符串存在于布隆过滤器中,则表示该字符串无差异,可返回到步骤502继续下一笔支付数据的处理。如果该字符串不存在,则表示该字符串一定存在差异的。
步骤505、获得差异数据。
根据前述字符串的生成规则,这些差异数据可能是流水号不同,金额不同,状态不同等。通过流水号可查找两个支付系统中的原交易流水,因此,就可以判断出具体的差异。如果只找到了一笔有差异的流水,则说明是漏单或者多单。
在本实施例中,根据前述所述的布隆过滤器与Set集合进行结合的存储字符串的结构,及布隆过滤器的特性可知,将第三方渠道的支付数据生成的字符串先与Set集合的字符串进行比对,在不存在Set集合的字符串中的字符串再与布隆过滤器的字符串进行比对,这样更能保证所述第三方渠道的支付数据与第一支付系统的数据对比的准确性。
对比传统的对账模式,以300000的数据为例,利用本发明实施例的方案获得的字符串的平均大小为38字节,从而可减少24到30倍左右的内存使用。因此,利用本发明实施例的方案,减少了数据对账的内存使用。
本发明实施例还提供了一种数据对比装置。参见图6,图6是本发明实施例提供的数据对比装置的结构图。由于数据对比装置解决问题的原理与本发明实施例中数据对比方法相似,因此该数据对比装置的实施可以参见方法的实施,重复之处不再赘述。
如图6所示,数据对比装置600包括:
第一获取模块601,用于获取第一支付系统的第一支付数据;加载模块602,用于将所述第一支付数据的数据特征分别加载到所述第一支付系统的布隆过滤器或者Set集合中;第二获取模块603,用于获取第二支付系统的第二支付数据;对比模块604,用于将所述第二支付数据的数据特征依次和所述Set集合、所述布隆过滤器进行比较,得到数据对比结果。
可选的,所述加载模块602可包括:
拼接子模块,用于将所述第一支付数据的组成字段拼接形成第一字符串,其中,所述组成字段包括流水号字段和交易信息字段;确定子模块,用于确定所述第一字符串是否位于所述布隆过滤器中;加载子模块,用于在所述第一字符串未位于所述布隆过滤器中的情况下,将所述第一字符串加载到所述布隆过滤器中;否则,将所述第一字符串加载到所述Set集合中。
可选的,所述确定子模块可包括:
映射单元,用于将所述第一字符串通过至少一个哈希函数映射到位数组的至少一个第一目标位置上,所述至少一个哈希函数和所述位数组分别是所述第一支付系统生成所述布隆过滤器时所使用的哈希函数和位数组;判断单元,用于判断所述第一目标位置的值是否全部为1;确定单元,用于若所述第一目标位置的值不全部为1,则确定所述第一字符串未位于所述布隆过滤器中。
可选的,所述对比模块604可包括:
拼接子模块,用于将所述第二支付数据的组成字段拼接形成第二字符串,其中,所述组成字段包括流水号字段和交易信息字段;
第一确定子模块,用于确定所述第二字符串是否位于所述Set集合中;
第二确定子模块,用于在所述第二字符串位于所述Set集合中的情况下,确定所述第一支付系统中具有与所述第二支付数据相同的支付数据;
第三确定子模块,用于在所述第二字符串未位于所述Set集合中的情况下,确定所述第二字符串是否位于所述布隆过滤器中;
第四确定子模块,用于在所述第二字符串未位于所述布隆过滤器中的情况下,确定所述第二支付数据为差异数据;在所述第二字符串位于所述布隆过滤器中的情况下,确定所述第一支付系统中具有与所述第二支付数据相同的支付数据。
可选的,所述第三确定子模块可包括:
映射单元,用于将所述第二字符串通过至少一个哈希函数映射到位数组的至少一个第二目标位置上,所述至少一个哈希函数和所述位数组分别是所述第一支付系统生成所述布隆过滤器时所使用的哈希函数和位数组;判断单元,用于判断所述第二目标位置的值是否全部为1;确定单元,用于若所述第二目标位置的值不全部为1,则确定所述第二字符串未位于所述布隆过滤器中,否则确定所述第二字符串位于所述布隆过滤器中。
可选的,所述装置还可包括:生成模块,用于生成所述第一支付系统的布隆过滤器。
可选的,所述生成模块可包括:
第一确定子模块,用于确定所述第一支付系统的第一支付数据的总数据量;获取子模块,用于获取目标字符串长度值;第二确定子模块,用于根据所述目标字符串长度值,确定误差率,所述误差率为使得所述第一支付系统的内存使用量最小的误差率;第三确定子模块,用于根据所述误差率和所述总数据量,确定位数组的大小和哈希函数的个数;生成子模块,用于利用所述位数组和所述哈希函数,生成所述布隆过滤器。
本发明实施例提供的装置,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
如图7所示,本发明实施例的数据对比设备,包括:处理器700,用于读取存储器710中的程序,执行下列过程:
获取第一支付系统的第一支付数据;
将所述第一支付数据的数据特征分别加载到所述第一支付系统的布隆过滤器或者Set集合中;
获取第二支付系统的第二支付数据;
将所述第二支付数据的数据特征依次和所述Set集合、所述布隆过滤器进行比较,得到数据对比结果。
其中,在图7中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器700代表的一个或多个处理器和存储器710代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。处理器700负责管理总线架构和通常的处理,存储器710可以存储处理器700在执行操作时所使用的数据。
处理器700负责管理总线架构和通常的处理,存储器710可以存储处理器700在执行操作时所使用的数据。
处理器700还用于读取所述程序,执行如下步骤:
将所述第一支付数据的组成字段拼接形成第一字符串,其中,所述组成字段包括流水号字段和交易信息字段;
确定所述第一字符串是否位于所述布隆过滤器中;
在所述第一字符串未位于所述布隆过滤器中的情况下,将所述第一字符串加载到所述布隆过滤器中;否则,将所述第一字符串加载到所述Set集合中。
处理器700还用于读取所述程序,执行如下步骤:
将所述第一字符串通过至少一个哈希函数映射到位数组的至少一个第一目标位置上,所述至少一个哈希函数和所述位数组分别是所述第一支付系统生成所述布隆过滤器时所使用的哈希函数和位数组;
判断所述第一目标位置的值是否全部为1;
若所述第一目标位置的值不全部为1,则确定所述第一字符串未位于所述布隆过滤器中。
处理器700还用于读取所述程序,执行如下步骤:
将所述第二支付数据的组成字段拼接形成第二字符串,其中,所述组成字段包括流水号字段和交易信息字段;
确定所述第二字符串是否位于所述Set集合中;
在所述第二字符串位于所述Set集合中的情况下,确定所述第一支付系统中具有与所述第二支付数据相同的支付数据;
在所述第二字符串未位于所述Set集合中的情况下,确定所述第二字符串是否位于所述布隆过滤器中;
在所述第二字符串未位于所述布隆过滤器中的情况下,确定所述第二支付数据为差异数据;在所述第二字符串位于所述布隆过滤器中的情况下,确定所述第一支付系统中具有与所述第二支付数据相同的支付数据。
处理器700还用于读取所述程序,执行如下步骤:
将所述第二字符串通过至少一个哈希函数映射到位数组的至少一个第二目标位置上,所述至少一个哈希函数和所述位数组分别是所述第一支付系统生成所述布隆过滤器时所使用的哈希函数和位数组;
判断所述第二目标位置的值是否全部为1;
若所述第二目标位置的值不全部为1,则确定所述第二字符串未位于所述布隆过滤器中,否则确定所述第二字符串位于所述布隆过滤器中。
处理器700还用于读取所述程序,执行如下步骤:
生成所述第一支付系统的布隆过滤器。
处理器700还用于读取所述程序,执行如下步骤:
确定所述第一支付系统的第一支付数据的总数据量;
获取目标字符串长度值;
根据所述目标字符串长度值,确定误差率,所述误差率为使得所述第一支付系统的内存使用量最小的误差率;
根据所述误差率和所述总数据量,确定位数组的大小和哈希函数的个数;
利用所述位数组和所述哈希函数,生成所述布隆过滤器。
本发明实施例提供的设备,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述数据对比方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。根据这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
Claims (10)
1.一种数据对比方法,其特征在于,包括:
获取第一支付系统的第一支付数据;
将所述第一支付数据的数据特征分别加载到所述第一支付系统的布隆过滤器或者Set集合中;
获取第二支付系统的第二支付数据;
将所述第二支付数据的数据特征依次和所述Set集合、所述布隆过滤器进行比较,得到数据对比结果。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一支付数据的数据特征分别加载到所述第一支付系统的布隆过滤器或者Set集合中,包括:
将所述第一支付数据的组成字段拼接形成第一字符串,其中,所述组成字段包括流水号字段和交易信息字段;
确定所述第一字符串是否位于所述布隆过滤器中;
在所述第一字符串未位于所述布隆过滤器中的情况下,将所述第一字符串加载到所述布隆过滤器中;否则,将所述第一字符串加载到所述Set集合中。
3.根据权利要求2所述的方法,其特征在于,所述确定所述第一字符串是否位于所述布隆过滤器中,包括:
将所述第一字符串通过至少一个哈希函数映射到位数组的至少一个第一目标位置上,所述至少一个哈希函数和所述位数组分别是所述第一支付系统生成所述布隆过滤器时所使用的哈希函数和位数组;
判断所述第一目标位置的值是否全部为1;
若所述第一目标位置的值不全部为1,则确定所述第一字符串未位于所述布隆过滤器中。
4.根据权利要求1所述的方法,其特征在于,所述将所述第二支付数据的数据特征依次和所述Set集合、所述布隆过滤器进行比较,得到数据对比结果,包括:
将所述第二支付数据的组成字段拼接形成第二字符串,其中,所述组成字段包括流水号字段和交易信息字段;
确定所述第二字符串是否位于所述Set集合中;
在所述第二字符串位于所述Set集合中的情况下,确定所述第一支付系统中具有与所述第二支付数据相同的支付数据;
在所述第二字符串未位于所述Set集合中的情况下,确定所述第二字符串是否位于所述布隆过滤器中;
在所述第二字符串未位于所述布隆过滤器中的情况下,确定所述第二支付数据为差异数据;在所述第二字符串位于所述布隆过滤器中的情况下,确定所述第一支付系统中具有与所述第二支付数据相同的支付数据。
5.根据权利要求4所述的方法,其特征在于,所述确定所述第二字符串是否位于所述布隆过滤器中,包括:
将所述第二字符串通过至少一个哈希函数映射到位数组的至少一个第二目标位置上,所述至少一个哈希函数和所述位数组分别是所述第一支付系统生成所述布隆过滤器时所使用的哈希函数和位数组;
判断所述第二目标位置的值是否全部为1;
若所述第二目标位置的值不全部为1,则确定所述第二字符串未位于所述布隆过滤器中,否则确定所述第二字符串位于所述布隆过滤器中。
6.根据权利要求1所述的方法,其特征在于,在所述将所述第一支付数据的数据特征分别加载到所述第一支付系统的布隆过滤器或者Set集合中之前,所述方法还包括:
生成所述第一支付系统的布隆过滤器。
7.根据权利要求6所述的方法,其特征在于,所述生成所述第一支付系统的布隆过滤器,包括:
确定所述第一支付系统的第一支付数据的总数据量;
获取目标字符串长度值;
根据所述目标字符串长度值,确定误差率,所述误差率为使得所述第一支付系统的内存使用量最小的误差率;
根据所述误差率和所述总数据量,确定位数组的大小和哈希函数的个数;
利用所述位数组和所述哈希函数,生成所述布隆过滤器。
8.一种数据对比装置,其特征在于,包括:
第一获取模块,用于获取第一支付系统的第一支付数据;
加载模块,用于将所述第一支付数据的数据特征分别加载到所述第一支付系统的布隆过滤器或者Set集合中;
第二获取模块,用于获取第二支付系统的第二支付数据;
对比模块,用于将所述第二支付数据的数据特征依次和所述Set集合、所述布隆过滤器进行比较,得到数据对比结果。
9.一种数据对比设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;其特征在于,
所述处理器,用于读取存储器中的程序实现包括如权利要求1至7中任一项所述的数据对比方法中的步骤。
10.一种计算机可读存储介质,用于存储计算机程序,其特征在于,所述计算机程序被处理器执行时实现包括如权利要求1至7中任一项所述的数据对比方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010416701.9A CN111882310B (zh) | 2020-05-15 | 2020-05-15 | 一种数据对比方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010416701.9A CN111882310B (zh) | 2020-05-15 | 2020-05-15 | 一种数据对比方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111882310A true CN111882310A (zh) | 2020-11-03 |
CN111882310B CN111882310B (zh) | 2022-03-22 |
Family
ID=73154344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010416701.9A Active CN111882310B (zh) | 2020-05-15 | 2020-05-15 | 一种数据对比方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111882310B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105701018A (zh) * | 2014-11-24 | 2016-06-22 | 阿里巴巴集团控股有限公司 | 一种用于流计算的数据处理方法与设备 |
CN106446296A (zh) * | 2016-11-28 | 2017-02-22 | 泰康保险集团股份有限公司 | 用于处理交易消息的方法和交易系统 |
CN107516046A (zh) * | 2017-06-26 | 2017-12-26 | 江苏通付盾科技有限公司 | 数据保护方法及装置、电子设备、计算机存储介质 |
CN107909495A (zh) * | 2017-12-22 | 2018-04-13 | 泰康保险集团股份有限公司 | 一种对账方法、系统、介质、电子设备 |
US10037517B1 (en) * | 2014-12-22 | 2018-07-31 | Square, Inc. | Risk management in online and offline transactions |
CN110990640A (zh) * | 2019-11-15 | 2020-04-10 | 北京浪潮数据技术有限公司 | 一种数据判定方法、装置、设备及计算机可读存储介质 |
-
2020
- 2020-05-15 CN CN202010416701.9A patent/CN111882310B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105701018A (zh) * | 2014-11-24 | 2016-06-22 | 阿里巴巴集团控股有限公司 | 一种用于流计算的数据处理方法与设备 |
US10037517B1 (en) * | 2014-12-22 | 2018-07-31 | Square, Inc. | Risk management in online and offline transactions |
CN106446296A (zh) * | 2016-11-28 | 2017-02-22 | 泰康保险集团股份有限公司 | 用于处理交易消息的方法和交易系统 |
CN107516046A (zh) * | 2017-06-26 | 2017-12-26 | 江苏通付盾科技有限公司 | 数据保护方法及装置、电子设备、计算机存储介质 |
CN107909495A (zh) * | 2017-12-22 | 2018-04-13 | 泰康保险集团股份有限公司 | 一种对账方法、系统、介质、电子设备 |
CN110990640A (zh) * | 2019-11-15 | 2020-04-10 | 北京浪潮数据技术有限公司 | 一种数据判定方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111882310B (zh) | 2022-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111352902A (zh) | 日志处理方法、装置、终端设备及存储介质 | |
US11556812B2 (en) | Method and device for acquiring data model in knowledge graph, and medium | |
CN112765163A (zh) | 一种可任意扩展维度的数据指标存储方法、系统及装置 | |
CN115617888A (zh) | 数据导入方法、装置、设备、存储介质及产品 | |
CN112765155B (zh) | 基于区块链的键值存储方法、装置、终端设备及介质 | |
CN110955658B (zh) | 一种基于Java智能合约的数据组织和存储方法 | |
CN111882310B (zh) | 一种数据对比方法、装置、设备及计算机可读存储介质 | |
CN111984674A (zh) | 结构化查询语言的生成方法及系统 | |
CN116955856A (zh) | 信息展示方法、装置、电子设备以及存储介质 | |
CN115190010B (zh) | 基于软件服务依赖关系的分布推荐方法和装置 | |
CN115809259A (zh) | 基于sql的数据查询方法、终端及服务器 | |
US8577861B2 (en) | Apparatus and method for searching information | |
CN115114289A (zh) | 一种数据查询方法、装置及电子设备 | |
CN114417089A (zh) | 查询方法、装置、终端设备及计算机可读存储介质 | |
CN114490651A (zh) | 数据存储方法及装置 | |
CN113342647A (zh) | 一种测试数据的生成方法及装置 | |
CN112069164B (zh) | 数据查询方法、装置、电子设备及计算机可读存储介质 | |
CN108984615B (zh) | 一种数据查询方法和系统、存储介质 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
CN111914008A (zh) | 工单数据批量导出的方法、装置、电子设备以及介质 | |
CN117435640A (zh) | 一种用于定位相似实例的方法、装置和电子设备 | |
CN112181539B (zh) | 文件处理方法、装置、设备及介质 | |
CN112463065B (zh) | 一种账号打通的计算方法及系统 | |
CN115858183B (zh) | 异步并行i/o请求的进程间联合分析方法、装置及设备 | |
CN113987322A (zh) | 指标数据查询方法、装置、计算机设备和计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |