CN110489405A - 数据处理的方法、装置和服务器 - Google Patents

数据处理的方法、装置和服务器 Download PDF

Info

Publication number
CN110489405A
CN110489405A CN201910628181.5A CN201910628181A CN110489405A CN 110489405 A CN110489405 A CN 110489405A CN 201910628181 A CN201910628181 A CN 201910628181A CN 110489405 A CN110489405 A CN 110489405A
Authority
CN
China
Prior art keywords
data
bucket
bit
value
record
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
Application number
CN201910628181.5A
Other languages
English (en)
Other versions
CN110489405B (zh
Inventor
张�杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201910628181.5A priority Critical patent/CN110489405B/zh
Priority to PCT/CN2019/116646 priority patent/WO2021008024A1/zh
Publication of CN110489405A publication Critical patent/CN110489405A/zh
Application granted granted Critical
Publication of CN110489405B publication Critical patent/CN110489405B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例适用于数据处理技术领域,提供了一种数据处理的方法、装置和服务器,该方法包括:对数据库中的数据记录进行分桶并设置过期时间;确定任一数据记录对应的比特位,将对应比特位的比特值置为第二数值;当接收到新数据的入库请求时,识别目标数据桶以及新数据在目标数据桶中对应的比特位,通过判断对应比特位的比特值是否为第二数值,确定是否将新数据写入目标数据桶中;若在到达过期时间之前,数据桶中未有新数据写入,则在到达过期时间时删除数据桶及其数据记录,否则,延长过期时间。本实施例通过分桶将数据的判重范围缩小,某些桶的数据因为不再活跃而逐渐过期,达到删除数据的目的,解决了数据判重时假阳率增大的问题。

Description

数据处理的方法、装置和服务器
技术领域
本发明属于数据处理技术领域,特别是涉及一种数据处理的方法、一种数据处理的装置、一种服务器及一种计算机可读存储介质。
背景技术
数据判重主要用于对数据中是否存在重复记录进行判断,广泛应用于各种业务场景下。例如,在用户注册账号时,通过数据判重可以确认该账号是否已被注册。
目前,对数据进行判重主要通过两种方式来实现。一种是在数据库中直接查询某条记录是否存在。例如,当用户使用“张三”这一用户名注册账号时,需要在数据库中查询是否存在相同的记录。如果数据库中已经有一条叫“张三”的记录,则新注册的用户名不允许入库,如果不存在则可以入库。这种判重方式主要用于数据量较小时。如果需要入库的数据量非常大,那么判断查询的次数将会非常多,导致数据库开销也非常大。因此,针对大数据的判重主要通过使用本地内存来实现,例如结合布隆过滤器等等。但是,由于布隆过滤器中的比特位是不允许重置的,使得布隆过滤器无法伸缩,采用这种判重方式无法删除数据。随着数据越来越多,占用的内存也会越来越多,假阳率也会逐渐增大。
发明内容
有鉴于此,本发明实施例提供了一种数据处理的方法、装置和服务器,以解决现有技术中结合布隆过滤器进行大数据的判重时,由于数据无法删除,导致占用内存较多、假阳率增大的问题。
本发明实施例的第一方面提供了一种数据处理的方法,包括:
获取数据库中已有的数据记录;
对所述数据记录进行分桶,并设置各个数据桶的过期时间,所述各个数据桶中包括多个比特位,所述多个比特位的初始比特值均为第一数值;
确定所述各个数据桶中任一数据记录对应的比特位,将所述各个数据记录对应的比特位的比特值置为第二数值;
当接收到新数据的入库请求时,识别用于写入所述新数据的目标数据桶,以及所述新数据在所述目标数据桶中对应的比特位,通过判断所述新数据对应的比特位的比特值是否为所述第二数值,确定是否将所述新数据写入所述目标数据桶中;
若在到达所述数据桶过期时间之前,所述数据桶中未有新数据写入,则在到达所述过期时间时删除所述数据桶及所述数据桶中的数据记录,否则,则延长所述数据桶的过期时间。
本发明实施例的第二方面提供了一种数据处理的装置,包括:
获取模块,用于获取数据库中已有的数据记录;
分桶模块,用于对所述数据记录进行分桶,并设置各个数据桶的过期时间,所述各个数据桶中包括多个比特位,所述多个比特位的初始比特值均为第一数值;
变更模块,用于确定所述各个数据桶中任一数据记录对应的比特位,将所述各个数据记录对应的比特位的比特值置为第二数值;
确定模块,用于当接收到新数据的入库请求时,识别用于写入所述新数据的目标数据桶,以及所述新数据在所述目标数据桶中对应的比特位,通过判断所述新数据对应的比特位的比特值是否为所述第二数值,确定是否将所述新数据写入所述目标数据桶中;
处理模块,用于若在到达所述数据桶过期时间之前,所述数据桶中未有新数据写入,则在到达所述过期时间时删除所述数据桶及所述数据桶中的数据记录,否则,则延长所述数据桶的过期时间。
本发明实施例的第三方面提供了一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述数据处理的方法的步骤。
本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述第一方面所述数据处理的方法的步骤。
与现有技术相比,本发明实施例包括以下优点:
本发明实施例,通过获取数据库中已有的数据记录,可以对数据记录进行分桶并设置各个数据桶的过期时间,从而在接收到新数据的入库请求时,可以通过识别用于写入新数据的目标数据桶,以及新数据在目标数据桶中对应的比特位,并判断该新数据对应的比特位的比特值是否为特定数值,从而确定是否需要将该新数据写入目标数据桶中,实现对数据的判重处理;同时,若在到达数据桶过期时间之前,该数据桶中未有新数据写入,则可以在到达过期时间时删除数据桶及数据桶中的数据记录,减少对内存的占用,否则,则可以延长该数据桶的过期时间。本实施例通过分桶将数据的判重范围缩小,某些桶的数据因为不再活跃而逐渐过期,达到删除数据的目的,而不会随着时间的推移,导致数据永久的存在于布隆过滤器中,实现删除布隆过滤器中数据的目的。由于数据记录会一直增加,布隆过滤器需要越来越多的bit位来进行判重,采用本实施例的方法,布隆过滤器的bitmap会增加也会减少,达到伸缩布隆过滤器的目的,减少了对内存的占用,解决了数据判重时假阳率增大的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的一种数据处理的方法的步骤流程示意图;
图2是本发明一个实施例的另一种数据处理的方法的步骤流程示意图;
图3是本发明一个实施例的一种数据处理的装置的示意图;
图4是本发明一个实施例的一种服务器的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本发明。在其他情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
下面通过具体实施例来说明本发明的技术方案。
为了便于理解,首先对布隆过滤器作一简单介绍。
1、比喻
假如将布隆过滤器比喻为一组电器开关,可以给每个开关进行编号。如果有10000个开关,那么就可以从0开始编号,一直到9999。在布隆过滤器中的开关指的就是bit(比特位)。开指代bit位为1,关指代bit位为0。默认所有的开关都置为关,也就是所有的bit位为0。
2、入库的过程
假设有一个字符串A,将其进行哈希计算(可以理解为将字符串映射为一个10000以内的数值),经过不同的哈希方法可以得到n个不同的哈希值。例如,对于字符串A,将其进行哈希计算后,可以得到一组哈希值为{5,300,891,2999,7821}。那么,可以将编号为5,300,891,2999,7821的bit位置为1。
3、判重的过程
当对字符串A进行判重的时候,可以使用入库时相同的哈希方法得到相同的一组哈希值{5,300,891,2999,7821},判重的过程就只需要判断这组编号的bit位是否都为1。
4、为什么会出现假阳率
使用哈希方法去获取一个字符串的哈希值是可能发生碰撞的。碰撞就是不同的字符串经过不同的哈希方法可能获取到的哈希值是相同的。例如,字符串A经过哈希方法得到的一组哈希值是{5,300,891,2999,7821},字符串B经过哈希方法得到的一组哈希值是{300,2999,5,7821,891},虽然他们的顺序是不一样的,但是他们其实在布隆过滤器中的存储是一致的。当对字符串B来进行判重的时候,实际上数据库中并不存在这个字符串,但是布隆过滤器判断(所谓编号为哈希值的bit位都置为1了)是已存在字符串B,这就是所谓的假阳,假的存在。但是,这个碰撞完全相同是有一定的概率的,所以称为假阳率。当布隆过滤器中的大多数bit位都被置为1后,假阳率就会越来越高。
5、为什么无法删除
通过上面的描述,有一种观点可能会认为,如果要删除布隆过滤器中的字符串A,那么将{5,300,891,2999,7821}这5个编号的bit位再置为0就可以了。但,这是不允许的。
当另外一个字符串C得到的哈希值为{5,300,1000,4521,123},因为哈希的碰撞,这组哈希值和字符串A得到的有部分相同。那么当删除了字符串A,也就是将其所有的哈希值对应的bit位都置为0了之后,那么字符串C在判重的时候就会发现编号为5和300的bit位是0,此时字符串C就会被误判。所以布隆过滤器中的bit位是不允许重置的。也就是不能删除数据了。
因此,基于布隆过滤器的上述特性,提出了本实施例的一种数据处理的方法的核心构思在于,采用redis这一个基于内存的缓存工具,由于redis有一个bitmap结构正好可以当成布隆过滤器来使用,所以,通过构建很多个小的bitmap结构的布隆过滤器,并设置各个bitmap结构的布隆过滤器的过期时间为30天,当某个bitmap结构的布隆过滤器超过30天不再写入数据时,就会自动被redis过期删除,通过这种方式来节省内存空间,达到数据伸缩的目的。
参照图1,示出了本发明一个实施例的一种数据处理的方法的步骤流程示意图,具体可以包括如下步骤:
S101、获取数据库中已有的数据记录;
需要说明的是,本方法可以应用于对大数据的判重处理。
本实施例的数据库中已有的数据记录可以是指存储于服务器中的各种类型的数据记录。例如,用户ID等等。当然,数据记录也可以是其他类型的,如邮箱账号、URL等等,本实施例对数据记录的类型不作限定。
在按照本方法对数据进行判重前,需要首先对数据库中已有的数据记录进行处理。因此,可以获取数据库中已有的数据记录。
S102、对所述数据记录进行分桶,并设置各个数据桶的过期时间,所述各个数据桶中包括多个比特位,所述多个比特位的初始比特值均为第一数值;
在获取到数据库中已有的数据记录后,可以首先将这些数据记录划分至多个数据桶中。
在本发明实施例中,每个数据桶都是一个基于redis超时过期特性来设计的bitmap结构的布隆过滤器。
Redis是一个基于内存的缓存工具,具有bitmap结构。Bitmap的基本原理就是用一个bit(比特位)来标记某个元素对应的value,而key即是该元素,bitmap结构可以当成布隆过滤器来使用。由于采用一个bit来存储一个数据,因此可以大大的节省存储空间。
在本发明实施例中,可以构建多个bitmap结构的布隆过滤器,每一个布隆过滤器便是后续用于存储数据记录的一个数据桶。因此,各个数据桶中都包括有多个比特位,上述多个比特位的初始比特值均可以为第一数值。例如,在初始时,每个比特位的值均为0。与此同时,为了便于区分各个数据桶,还可以为每个数据桶分别设置相应的编号。例如,0-9999等等。
因此,可以按照一定的规则,将获取到的数据记录相对均匀地分配到各个数据桶中。
作为本发明的一种示例,可以首先采用预设随机函数分别将各个数据记录生成整数值,然后计算各个数据记录的整数值除以上述数据桶的数量后得到的余数,由于各个数据桶分别具有相应的桶编号,因此可以分别将各个数据记录置入与计算得到的余数相同的桶编号对应的数据桶中,从而实现对数据记录的相对均匀的分配。
在具体实现中,crc32函数可以将字符串经过一定的算法过程生成一个长整型的数值,因此可以使用crc32随机函数对已有的数据记录进行分桶。
以已有的数据记录为用户ID为例。若有20亿用户ID,可以使用crc32随机函数将上述用户ID分成200000个数据桶,每个数据桶中包括10000个用户ID。
即,首先使用crc32随机函数将每个用户ID生成一个整型数值,然后使用该数值除以数据桶的数量,即除以200000,然后以得到的余数作为数据桶的编号,将该用户ID置于对应的数据桶中。
由于crc32随机函数对不同字符串生成的整型数值具有随机性,使用该函数分桶会使数据记录相对均匀地分布在每个数据桶中。
当然,上述分桶方式仅为本实施例的一种示例,本领域技术人员可以根据实际需要采用其他方式对获取到的数据记录进行分桶。例如,可以按照全部数据记录的数量,随机地将各个数据记录相对平均地分布在每个数据桶中,本实施例对此不作限定。
各个数据桶的过期时间即是bitmap的过期时间,也就是为redis中的TTL(Time ToLive,生存时间值)过期时间。在设置有TTL时间后,若用户没有再重新设置该TTL时间的时候,它就开始倒计时。当倒计时为0时,redis中的这条记录就会被redis自动删除,不再占用内存。
在本发明实施例中,每个数据桶的过期时间可以根据业务需求来具体确定。例如,可以设置各个数据桶的过期时间均为30天。
S103、确定所述各个数据桶中任一数据记录对应的比特位,将所述各个数据记录对应的比特位的比特值置为第二数值;
在本发明实施例中,可以为各个数据桶中的比特位设置相应的编号。例如,各个比特位可以从0开始编号,一直到9999,使得该数据桶中的每个数据记录均与一个或多个比特位相对应。
在具体实现中,可以采用预设算法计算得到任一数据记录的哈希值,然后将比特位编号与该哈希值相同的比特位的比特值置为第二数值。例如,将比特位的比特值由初始值0变更为1。
哈希计算可以理解为将某个字符串映射为一个10000以内的数值,采用不同的哈希方法可以得到n个不同的哈希值。因此,一个数据记录所对应的哈希值也可以包括多个。
当采用多种哈希方法计算得到一个数据记录的多个哈希值后,可以将比特位编号与上述哈希值相同的多个比特位的比特值均置为1。
S104、当接收到新数据的入库请求时,识别用于写入所述新数据的目标数据桶,以及所述新数据在所述目标数据桶中对应的比特位,通过判断所述新数据对应的比特位的比特值是否为所述第二数值,确定是否将所述新数据写入所述目标数据桶中;
在按照前述步骤完成对数据库中已有的数据记录的处理后,便可以基于各个数据桶,对新接收到的数据进行判重。
在本发明实施例中,可以首先识别用于写入新数据的目标数据桶,以及该新数据在目标数据桶中对应的比特位,通过判断新接收到的数据在待写入的目标数据桶中所对应的比特位的比特值是否为第二数值,来确定该数据是否是数据库中已有的数据。
在具体实现中,可以按照对已有的数据记录进行分桶时的操作方式,确定新数据的目标数据桶是哪一个,即确定该新数据应当被写入哪个数据库中。
例如,可以使用crc32函数将新数据转换为一个整型数值,然后使用该数值除以数据桶的数量,以得到的余数作为目标数据桶的编号。
在识别出目标数据桶后,可以继续判断在该数据桶中,与新数据对应的各个比特位的比特值是否为第二数值。
作为本发明的一种示例,为了提高数据判重的准确性,在对数据库中已有的数据记录进行分桶时可以采用多种哈希方法计算得到多个哈希值,并将多个哈希值对应的比特位的比特值均置为第二数值。因此,在对接收到的新数据进行判重时,也应当采用同样的多种哈希方法计算得到多个哈希值,通过确定各个哈希值对应的比特位的比特值是否均为第二数值来完成判重的过程。
如果对新数据进行哈希计算后得到的多个哈希值所对应的比特位的比特值均为第二数值,则可以判定该新数据是数据库中已有的数据记录。此时,可以拒绝该新数据的入库请求。
若上述多个哈希值所对应的比特位的比特值中任意一个比特值不是第二数值,则可以确认该新数据并非数据库中已有的数据记录,从而可以将新数据写入当前的数据桶中。
S105、若在到达所述数据桶过期时间之前,所述数据桶中未有新数据写入,则在到达所述过期时间时删除所述数据桶及所述数据桶中的数据记录,否则,则延长所述数据桶的过期时间。
Bitmap结构的布隆过滤器的过期时间在设置后便会开始倒计时,当倒计时为0时,该条记录就会被redis自动删除。由于本实施例中的数据桶即是bitmap结构的布隆过滤器,因此,在数据桶的过期时间到达时,该数据桶及在其中存储的数据记录也会一并被删除。
因此,在本发明实施例中,可以通过是否更改数据桶的过期时间来决定是否保留该数据桶及桶中的数据记录。
在具体实现中,在设置数据桶的过期时间后,一直到该过期时间到达之前,如果该数据桶中未有新数据写入,则在过期时间到达时,可以直接将该数据桶及其中的数据记录删除,减少对内存的占用。
而在此过程中,若有新数据写入数据桶中,则可以延长该数据桶的过期时间。
需要说明的是,延长数据桶的过期时间可以是在新数据写入数据桶时进行,延长的过期时间也可以是与原先设置的过期时间的时长相同。例如,若某个数据桶的过期时间为30天,在倒计时开始后第3天该数据桶中有新数据写入,则可以在此时,将该数据桶的过期时间延长为30天。即,在新数据写入数据桶当时,重新设置该数据桶的过期时间。
当然,以上介绍的延长过期时间的方式仅为一种示例,本领域技术人员开采用其他方式延长数据桶的过期时间,本实施例对此不作限定。
在本发明实施例中,通过获取数据库中已有的数据记录,可以对数据记录进行分桶并设置各个数据桶的过期时间,从而在接收到新数据的入库请求时,可以通过识别用于写入新数据的目标数据桶,以及新数据在目标数据桶中对应的比特位,并判断该新数据对应的比特位的比特值是否为特定数值,从而确定是否需要将该新数据写入目标数据桶中,实现对数据的判重处理;同时,若在到达数据桶过期时间之前,该数据桶中未有新数据写入,则可以在到达过期时间时删除数据桶及数据桶中的数据记录,减少对内存的占用,否则,则可以延长该数据桶的过期时间。本实施例通过分桶将数据的判重范围缩小,某些桶的数据因为不再活跃而逐渐过期,达到删除数据的目的,而不会随着时间的推移,导致数据永久的存在于布隆过滤器中,实现删除布隆过滤器中数据的目的。由于数据记录会一直增加,布隆过滤器需要越来越多的bit位来进行判重,采用本实施例的方法,布隆过滤器的bitmap会增加也会减少,达到伸缩布隆过滤器的目的,减少了对内存的占用,解决了数据判重时假阳率增大的问题。
参照图2,示出了本发明一个实施例的另一种数据处理的方法的步骤流程示意图,具体可以包括如下步骤:
S201、获取数据库中已有的数据记录;
需要说明的是,本方法可以应用于对大数据的判重处理。
本实施例的数据库中已有的数据记录可以是指存储于服务器中的各种类型的数据记录。例如,用户ID、邮箱账号、URL等等,本实施例对数据记录的类型不作限定。
为了便于理解,本实施以数据库中的数据记录为用户ID为例进行后续介绍。
S202、对所述数据记录进行分桶,并设置各个数据桶的过期时间,所述各个数据桶中包括多个比特位,所述多个比特位的初始比特值均为第一数值;
在获取到数据库中已有的数据记录后,可以首先将这些数据记录划分至多个数据桶中。本实施例中的每个数据桶都是一个基于redis超时过期特性来设计的bitmap结构的布隆过滤器。
因此,可以构建多个bitmap结构的布隆过滤器作为后续用于存储数据记录的数据桶,并为每个数据桶设置相同的桶编号。在每个数据桶中都包括有多个比特位,可以理解为一组带编号的电器开关,然后可以给每个开关编号,得到每个比特位的比特位编号。例如,若有一万个开关,那么就可以从0开始编号,一直到9999。在布隆过滤器中,开关的开可以指代比特位的比特值为1,关指代比特位的比特值为0。
在本发明实施例中,可以使用crc32随机函数对已有的数据记录进行分桶。例如,可以首先使用crc32随机函数将每个用户ID生成一个整型数值,然后使用该数值除以数据桶的数量,然后以得到的余数作为数据桶的编号,将该用户ID置于对应的数据桶中。
由于crc32随机函数对不同字符串生成的整型数值具有随机性,使用该函数分桶会使数据记录相对均匀地分布在每个数据桶中。
在本发明实施例中,每个数据桶的过期时间可以根据业务需求来具体确定。例如,可以设置各个数据桶的过期时间均为30天。
S203、采用预设算法计算得到所述任一数据记录的哈希值;
在本发明实施例中,对于已经分桶后的数据记录,可以首先对其进行哈希计算,然后根据哈希计算的结果,设置各个比特位的比特值。
哈希计算可以理解为将某个字符串映射为一个10000以内的数值,采用不同的哈希方法可以得到n个不同的哈希值。因此,一个数据记录所对应的哈希值也可以包括多个。
假设存在一个用户ID,在对其进行哈希计算时,采用不同的哈希方法可以得到n个不同的哈希值。例如,可以得到一组哈希值为{5,300,891,2999,7821}。
S204、将比特位编号与多个哈希值相同的多个比特位的比特值均置为第二数值;
在本发明实施例中,第一数值与第二数值分别表示各个比特位所指代的开关的“关”和“开”两种状态。因此,在计算得到某个用户ID的哈希值后,可以将该哈希值所对应的比特位的比特值由初始状态的0变更为1.
例如,针对上述一组哈希值{5,300,891,2999,7821},可以将当前数据桶中比特位编号为5,300,891,2999,7821的比特位置为1。
需要说明的是,根据布隆过滤器的特点,为保证假阳率小于0.00001,每个数据桶可以使用239627个bit来进行判重,每个数据桶可以对10000个用户ID进行判重。
S205、当接收到新数据的入库请求时,识别用于写入所述新数据的目标数据桶;
在按照前述步骤完成对数据库中已有的数据记录的处理后,便可以基于各个数据桶,对新接收到的数据进行判重。
在本发明实施例中,目标数据桶即是接收到的新数据在经过判重后应该被写入的数据桶。可以按照对已有的数据记录进行分桶时的操作方式,确定新数据待写入的目标数据桶是哪一个。
例如,可以使用crc32函数将新数据转换为一个整型数值,然后使用该数值除以数据桶的数量,以得到的余数作为目标数据桶的编号。
S206、采用所述预设算法计算得到所述新数据的多个目标哈希值;
在对接收到的新数据进行判重时,应当采用与分桶时相同的哈希方法计算得到多个哈希值,然后通过比较上述多个哈希值与目标数据桶中对应的比特位的比特值,确认该新数据是否是目标数据桶中已有的数据记录。
S207、判断所述目标数据桶中比特位编号与所述多个目标哈希值相同的多个比特位的比特值是否均为第二数值;
在本发明实施例中,对新数据进行判重可以通过确定新数据的各个哈希值对应的比特位的比特值是否均为第二数值来实现。
如果对新数据进行哈希计算后得到的多个哈希值所对应的比特位的比特值均为第二数值,则可以执行步骤S208,识别该新数据是目标数据桶中已有的数据记录。此时,可以拒绝该新数据的入库请求。
若上述多个哈希值所对应的比特位的比特值中任意一个比特值不是第二数值,则可以确认该新数据并非数据库中已有的数据记录,从而可以执行步骤S210,将新数据写入当前的目标数据桶中。
S208、识别所述新数据为所述目标数据桶中已有的数据记录;
S209、若在到达所述数据桶过期时间之前,所述数据桶中未有新数据写入,则在到达所述过期时间时删除所述数据桶及所述数据桶中的数据记录;
在本发明实施例中,可以通过是否更改数据桶的过期时间来决定是否保留该数据桶及桶中的数据记录。
在具体实现中,在设置数据桶的过期时间后,一直到该过期时间到达之前,如果该数据桶中未有新数据写入,则在过期时间到达时,可以直接将该数据桶及其中的数据记录删除,减少对内存的占用。
S210、将所述新数据写入所述目标数据桶中;
S211、延长所述数据桶的过期时间;
若在设置数据桶的过期时间后,一直到该过期时间到达的过程中,有新数据写入数据桶中,则可以延长该数据桶的过期时间。例如,若某个数据桶的过期时间为30天,在倒计时开始后第3天该数据桶中有新数据写入,则可以在此时,将该数据桶的过期时间延长为30天。
S212、当任一数据桶中的数据记录超过预设数量时,再次对所述数据桶中的数据记录进行分桶,并分别设置分桶后的各个数据桶的过期时间。
对于有新数据写入的数据桶,随着数据的不断写入,每个数据桶中包含的用户ID的数量也会越来越多。这种情况下该数据桶的假阳率也会越来越高,也就是出现大部分比特位被写满的情况。
此时,可以对该数据桶中的数据记录重新进行分桶,其分桶过程如步骤S202所述。经过对bitmap的删除和重建,可以重新写入活跃的数据,僵尸用户也就被排除出去了。
在本发明实施例中,通过设置bitmap(布隆过滤器)的过期时间,可以将某些数据记录删除。当某个bitmap过期被删除,可以视作在30天范围里,这个bitmap里的数据没有再被写入和更新,这时就会被删除,并且释放空间。当有新数据写入到这个bitmap时,系统再创建这个bitmap。Bitmap(布隆过滤器)的过期时间设置具有非常重要的意义:
第一,一些用户已经成为僵尸用户,过期后,bitmap被删除,那么这些僵尸用户就不再存在于bitmap中,可以达到删除用户的目的。
第二,bitmap过期可以节省很大的内存空间,相当于布隆过滤器被清空了。虽然在被清空的这一小段时间内,有些数据库中已存在的活跃用户数据需要重新入库。但这个空档期并不是集中的,也就是说并不是所有bitmap在同一时间被清空。
第三,bitmap不再写入或者更新,也有一种情况就是假阳率非常高的情况,也就是大部分bit位被写满的情况下。这种情况下,删除并重建bitmap将会重新写入活跃的数据,僵尸用户就被排除出去了。
需要说明的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
参照图3,示出了本发明一个实施例的一种数据处理的装置的示意图,具体可以包括如下模块:
获取模块301,用于获取数据库中已有的数据记录;
分桶模块302,用于对所述数据记录进行分桶,并设置各个数据桶的过期时间,所述各个数据桶中包括多个比特位,所述多个比特位的初始比特值均为第一数值;
变更模块303,用于确定所述各个数据桶中任一数据记录对应的比特位,将所述各个数据记录对应的比特位的比特值置为第二数值;
确定模块304,用于当接收到新数据的入库请求时,识别用于写入所述新数据的目标数据桶,以及所述新数据在所述目标数据桶中对应的比特位,通过判断所述新数据对应的比特位的比特值是否为所述第二数值,确定是否将所述新数据写入所述目标数据桶中;
处理模块305,用于若在到达所述数据桶过期时间之前,所述数据桶中未有新数据写入,则在到达所述过期时间时删除所述数据桶及所述数据桶中的数据记录,否则,则延长所述数据桶的过期时间。
在本发明实施例中,所述分桶模块302具体可以包括如下子模块:
整数值生成子模块,用于采用预设随机函数分别将各个数据记录生成整数值;
余数计算子模块,用于计算所述各个数据记录的整数值除以所述数据桶的数量后得到的余数,所述各个数据桶分别具有相应的桶编号;
数据记录分桶子模块,用于分别将所述各个数据记录置入与所述余数相同的桶编号对应的数据桶中。
在本发明实施例中,所述多个比特位分别具有相应的比特位编号,所述变更模块303具体可以包括如下子模块:
哈希值计算子模块,用于采用预设算法计算得到所述任一数据记录的哈希值;
比特值变更子模块,用于将比特位编号与所述哈希值相同的比特位的比特值置为第二数值。
在本发明实施例中,计算得到的所述任一数据记录的哈希值包括多个,所述比特值变更子模块具体可以包括如下单元:
比特值变更单元,用于将比特位编号与多个哈希值相同的多个比特位的比特值均置为第二数值。
在本发明实施例中,所述确定模块304具体可以包括如下子模块:
整数值生成子模块,用于在接收到新数据的入库请求时,采用预设随机函数将所述新数据生成整数值;
余数计算子模块,用于计算所述整数值除以所述数据桶的数量后得到的余数,所述各个数据桶分别具有相应的桶编号;
目标数据桶识别子模块,用于识别所述桶编号与所述余数相同的数据桶为目标数据桶。
在本发明实施例中,所述确定模块304还可以包括如下子模块:
目标哈希值计算子模块,用于采用所述预设算法计算得到所述新数据的多个目标哈希值;
比特值判断子模块,用于判断所述目标数据桶中比特位编号与所述多个目标哈希值相同的多个比特位的比特值是否均为第二数值;
数据记录识别子模块,用于若所述目标数据桶中比特位编号与所述多个目标哈希值相同的多个比特位的比特值均为所述第二数值,则识别所述新数据为所述目标数据桶中已有的数据记录;
数据记录写入子模块,用于若所述目标数据桶中比特位编号与所述多个目标哈希值相同的多个比特位的任一比特值不为所述第二数值,则将所述新数据写入所述目标数据桶中。
在本发明实施例中,所述分桶模块302还用于在任一数据桶中的数据记录超过预设数量时,再次对所述数据桶中的数据记录进行分桶,并分别设置分桶后的各个数据桶的过期时间。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例部分的说明即可。
参照图4,示出了本发明一个实施例的一种服务器的示意图。如图4所示,本实施例的服务器400包括:处理器410、存储器420以及存储在所述存储器420中并可在所述处理器410上运行的计算机程序421。所述处理器410执行所述计算机程序421时实现上述数据处理的方法各个实施例中的步骤,例如图1所示的步骤S101至S105。或者,所述处理器410执行所述计算机程序421时实现上述各装置实施例中各模块/单元的功能,例如图3所示模块301至305的功能。
示例性的,所述计算机程序421可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器420中,并由所述处理器410执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段可以用于描述所述计算机程序421在所述服务器400中的执行过程。例如,所述计算机程序421可以被分割成获取模块、分桶模块、变更模块、确定模块和处理模块,各模块具体功能如下:
获取模块,用于获取数据库中已有的数据记录;
分桶模块,用于对所述数据记录进行分桶,并设置各个数据桶的过期时间,所述各个数据桶中包括多个比特位,所述多个比特位的初始比特值均为第一数值;
变更模块,用于确定所述各个数据桶中任一数据记录对应的比特位,将所述各个数据记录对应的比特位的比特值置为第二数值;
确定模块,用于当接收到新数据的入库请求时,识别用于写入所述新数据的目标数据桶,以及所述新数据在所述目标数据桶中对应的比特位,通过判断所述新数据对应的比特位的比特值是否为所述第二数值,确定是否将所述新数据写入所述目标数据桶中;
处理模块,用于若在到达所述数据桶过期时间之前,所述数据桶中未有新数据写入,则在到达所述过期时间时删除所述数据桶及所述数据桶中的数据记录,否则,则延长所述数据桶的过期时间。
所述服务器400可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述服务器400可包括,但不仅限于,处理器410、存储器420。本领域技术人员可以理解,图4仅仅是服务器400的一种示例,并不构成对服务器400的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述服务器400还可以包括输入输出设备、网络接入设备、总线等。
所述处理器410可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器420可以是所述服务器400的内部存储单元,例如服务器400的硬盘或内存。所述存储器420也可以是所述服务器400的外部存储设备,例如所述服务器400上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等等。进一步地,所述存储器420还可以既包括所述服务器400的内部存储单元也包括外部存储设备。所述存储器420用于存储所述计算机程序421以及所述服务器400所需的其他程序和数据。所述存储器420还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制。尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据处理的方法,其特征在于,包括:
获取数据库中已有的数据记录;
对所述数据记录进行分桶,并设置各个数据桶的过期时间,所述各个数据桶中包括多个比特位,所述多个比特位的初始比特值均为第一数值;
确定所述各个数据桶中任一数据记录对应的比特位,将所述各个数据记录对应的比特位的比特值置为第二数值;
当接收到新数据的入库请求时,识别用于写入所述新数据的目标数据桶,以及所述新数据在所述目标数据桶中对应的比特位,通过判断所述新数据对应的比特位的比特值是否为所述第二数值,确定是否将所述新数据写入所述目标数据桶中;
若在到达所述数据桶过期时间之前,所述数据桶中未有新数据写入,则在到达所述过期时间时删除所述数据桶及所述数据桶中的数据记录,否则,则延长所述数据桶的过期时间。
2.根据权利要求1所述的方法,其特征在于,所述对所述数据记录进行分桶的步骤包括:
采用预设随机函数分别将各个数据记录生成整数值;
计算所述各个数据记录的整数值除以所述数据桶的数量后得到的余数,所述各个数据桶分别具有相应的桶编号;
分别将所述各个数据记录置入与所述余数相同的桶编号对应的数据桶中。
3.根据权利要求1所述的方法,其特征在于,所述多个比特位分别具有相应的比特位编号,所述将所述各个数据记录对应的比特位的比特值置为第二数值的步骤包括:
采用预设算法计算得到所述任一数据记录的哈希值;
将比特位编号与所述哈希值相同的比特位的比特值置为第二数值。
4.根据权利要求3所述的方法,其特征在于,计算得到的所述任一数据记录的哈希值包括多个,所述将比特位编号与所述哈希值相同的比特位的比特值置为第二数值的步骤包括:
将比特位编号与多个哈希值相同的多个比特位的比特值均置为第二数值。
5.根据权利要求1所述的方法,其特征在于,所述当接收到新数据的入库请求时,识别用于写入所述新数据的目标数据桶的步骤包括:
当接收到新数据的入库请求时,采用预设随机函数将所述新数据生成整数值;
计算所述整数值除以所述数据桶的数量后得到的余数,所述各个数据桶分别具有相应的桶编号;
识别所述桶编号与所述余数相同的数据桶为目标数据桶。
6.根据权利要求4所述的方法,其特征在于,所述通过判断所述新数据对应的比特位的比特值是否为所述第二数值,确定是否将所述新数据写入所述目标数据桶中的步骤包括:
采用所述预设算法计算得到所述新数据的多个目标哈希值;
判断所述目标数据桶中比特位编号与所述多个目标哈希值相同的多个比特位的比特值是否均为第二数值;
若所述目标数据桶中比特位编号与所述多个目标哈希值相同的多个比特位的比特值均为所述第二数值,则识别所述新数据为所述目标数据桶中已有的数据记录;
若所述目标数据桶中比特位编号与所述多个目标哈希值相同的多个比特位的任一比特值不为所述第二数值,则将所述新数据写入所述目标数据桶中。
7.根据权利要求1所述的方法,其特征在于,还包括:
当任一数据桶中的数据记录超过预设数量时,再次对所述数据桶中的数据记录进行分桶,并分别设置分桶后的各个数据桶的过期时间。
8.一种数据处理的装置,其特征在于,包括:
获取模块,用于获取数据库中已有的数据记录;
分桶模块,用于对所述数据记录进行分桶,并设置各个数据桶的过期时间,所述各个数据桶中包括多个比特位,所述多个比特位的初始比特值均为第一数值;
变更模块,用于确定所述各个数据桶中任一数据记录对应的比特位,将所述各个数据记录对应的比特位的比特值置为第二数值;
确定模块,用于当接收到新数据的入库请求时,识别用于写入所述新数据的目标数据桶,以及所述新数据在所述目标数据桶中对应的比特位,通过判断所述新数据对应的比特位的比特值是否为所述第二数值,确定是否将所述新数据写入所述目标数据桶中;
处理模块,用于若在到达所述数据桶过期时间之前,所述数据桶中未有新数据写入,则在到达所述过期时间时删除所述数据桶及所述数据桶中的数据记录,否则,则延长所述数据桶的过期时间。
9.一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述数据处理的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述数据处理的方法的步骤。
CN201910628181.5A 2019-07-12 2019-07-12 数据处理的方法、装置和服务器 Active CN110489405B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910628181.5A CN110489405B (zh) 2019-07-12 2019-07-12 数据处理的方法、装置和服务器
PCT/CN2019/116646 WO2021008024A1 (zh) 2019-07-12 2019-11-08 数据处理的方法、装置和服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910628181.5A CN110489405B (zh) 2019-07-12 2019-07-12 数据处理的方法、装置和服务器

Publications (2)

Publication Number Publication Date
CN110489405A true CN110489405A (zh) 2019-11-22
CN110489405B CN110489405B (zh) 2024-01-12

Family

ID=68547033

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910628181.5A Active CN110489405B (zh) 2019-07-12 2019-07-12 数据处理的方法、装置和服务器

Country Status (2)

Country Link
CN (1) CN110489405B (zh)
WO (1) WO2021008024A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035479A (zh) * 2020-08-31 2020-12-04 平安医疗健康管理股份有限公司 医药类数据库的访问方法、装置和计算机设备
CN112487177A (zh) * 2020-12-17 2021-03-12 杭州火石数智科技有限公司 一种海量短文本自适应分桶的反向去重方法
CN113590890A (zh) * 2021-08-04 2021-11-02 拉卡拉支付股份有限公司 信息存储方法、装置、电子设备、存储介质及程序产品

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113516506B (zh) * 2021-06-10 2024-04-26 深圳市云网万店科技有限公司 一种数据处理方法、装置及电子设备
CN114510474A (zh) * 2022-02-18 2022-05-17 中兴通讯股份有限公司 基于时间衰减的样本删除方法及其装置、存储介质
CN114528053A (zh) * 2022-02-28 2022-05-24 上海识装信息科技有限公司 一种业务功能执行方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101666758B1 (ko) * 2015-08-03 2016-10-17 성균관대학교산학협력단 개선된 블룸 필터를 이용하는 데이터 검색 방법
WO2017016423A1 (zh) * 2015-07-29 2017-02-02 阿里巴巴集团控股有限公司 一种实时新增数据更新方法和装置
CN106570025A (zh) * 2015-10-10 2017-04-19 北京国双科技有限公司 一种数据过滤的方法及装置
CN107391034A (zh) * 2017-07-07 2017-11-24 华中科技大学 一种基于局部性优化的重复数据检测方法
CN108121810A (zh) * 2017-12-26 2018-06-05 北京锐安科技有限公司 一种数据去重方法、系统、中心服务器及分布式服务器
CN109656901A (zh) * 2018-10-15 2019-04-19 阿里巴巴集团控股有限公司 数据处理方法和装置、电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102402394B (zh) * 2010-09-13 2014-10-22 腾讯科技(深圳)有限公司 一种基于哈希算法的数据存储方法及装置
CN107291746B (zh) * 2016-03-31 2021-08-17 阿里巴巴集团控股有限公司 一种存储和读取数据的方法及设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017016423A1 (zh) * 2015-07-29 2017-02-02 阿里巴巴集团控股有限公司 一种实时新增数据更新方法和装置
KR101666758B1 (ko) * 2015-08-03 2016-10-17 성균관대학교산학협력단 개선된 블룸 필터를 이용하는 데이터 검색 방법
CN106570025A (zh) * 2015-10-10 2017-04-19 北京国双科技有限公司 一种数据过滤的方法及装置
CN107391034A (zh) * 2017-07-07 2017-11-24 华中科技大学 一种基于局部性优化的重复数据检测方法
CN108121810A (zh) * 2017-12-26 2018-06-05 北京锐安科技有限公司 一种数据去重方法、系统、中心服务器及分布式服务器
CN109656901A (zh) * 2018-10-15 2019-04-19 阿里巴巴集团控股有限公司 数据处理方法和装置、电子设备

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035479A (zh) * 2020-08-31 2020-12-04 平安医疗健康管理股份有限公司 医药类数据库的访问方法、装置和计算机设备
CN112487177A (zh) * 2020-12-17 2021-03-12 杭州火石数智科技有限公司 一种海量短文本自适应分桶的反向去重方法
CN112487177B (zh) * 2020-12-17 2022-05-10 杭州火石数智科技有限公司 一种海量短文本自适应分桶的反向去重方法
CN113590890A (zh) * 2021-08-04 2021-11-02 拉卡拉支付股份有限公司 信息存储方法、装置、电子设备、存储介质及程序产品
CN113590890B (zh) * 2021-08-04 2024-03-26 拉卡拉支付股份有限公司 信息存储方法、装置、电子设备、存储介质及程序产品

Also Published As

Publication number Publication date
CN110489405B (zh) 2024-01-12
WO2021008024A1 (zh) 2021-01-21

Similar Documents

Publication Publication Date Title
CN110489405A (zh) 数据处理的方法、装置和服务器
KR102226257B1 (ko) 서비스 데이터를 블록체인 시스템에 기입하기 위한 방법 및 디바이스
EP3848875B1 (en) Method, device, computer apparatus and storage medium for electing representative node apparatus
CN106096023B (zh) 数据读取方法、数据写入方法及数据服务器
CN102521334B (zh) 一种基于分类特性和平衡二叉树的数据存储、查询方法
CN109271391A (zh) 数据存储方法、服务器、存储介质及装置
CN102546299B (zh) 一种在大流量下进行深度包检测的方法
CN111966912B (zh) 基于知识图谱的推荐方法、装置、计算机设备及存储介质
CN110168532B (zh) 数据更新方法和存储装置
CN111221840B (zh) 数据处理方法及装置、数据缓存方法、存储介质、系统
CN112074818A (zh) 用于能够在区块链网络中访问过去的交易的方法及节点
US9135572B2 (en) Method and arrangement for processing data
ES2855074T3 (es) Realización de la adaptación de actualización de caché
CN111858651A (zh) 一种数据处理方法以及数据处理装置
CN111552692A (zh) 一种加减法布谷鸟过滤器
CN106569963A (zh) 缓存方法和装置
CN110059129A (zh) 数据存储方法、装置及电子设备
CN111641496B (zh) 区块链数据更新方法、装置、设备、系统及可读存储介质
CN114490060A (zh) 内存分配方法、装置、计算机设备和计算机可读存储介质
CN106599247A (zh) LSM‑tree结构中数据文件的合并方法及装置
CN109992708B (zh) 一种元数据查询的方法、装置、设备以及存储介质
CN116450607A (zh) 数据处理方法、设备及存储介质
CN110245130A (zh) 数据去重方法、装置、计算机设备及存储介质
CN109492020A (zh) 一种数据缓存方法、装置、电子设备及存储介质
CN107451259A (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