CN109145158B - 一种布隆过滤器中数据的处理方法以及布隆过滤器 - Google Patents

一种布隆过滤器中数据的处理方法以及布隆过滤器 Download PDF

Info

Publication number
CN109145158B
CN109145158B CN201710444590.0A CN201710444590A CN109145158B CN 109145158 B CN109145158 B CN 109145158B CN 201710444590 A CN201710444590 A CN 201710444590A CN 109145158 B CN109145158 B CN 109145158B
Authority
CN
China
Prior art keywords
address
addresses
bloom filter
word
hash
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.)
Active
Application number
CN201710444590.0A
Other languages
English (en)
Other versions
CN109145158A (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.)
Tsinghua University
Huawei Technologies Co Ltd
Original Assignee
Tsinghua University
Huawei Technologies 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 Tsinghua University, Huawei Technologies Co Ltd filed Critical Tsinghua University
Priority to CN201710444590.0A priority Critical patent/CN109145158B/zh
Priority to EP18818792.6A priority patent/EP3493084B1/en
Priority to PCT/CN2018/081768 priority patent/WO2018228030A1/zh
Publication of CN109145158A publication Critical patent/CN109145158A/zh
Priority to US16/409,629 priority patent/US20190266193A1/en
Application granted granted Critical
Publication of CN109145158B publication Critical patent/CN109145158B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9035Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例公开了一种布隆过滤器中数据的处理方法以及布隆过滤器,涉及存储技术领域,用以提高布隆过滤器的查找与存储效率。包括:获取关键值;利用K个不同的哈希函数对关键值分别作哈希运算,计算得到K个哈希值;根据K个哈希值,计算得到K个地址,K个地址中每个地址与目标数据块包括的K个Word中的一个Word一一关联,一个地址用于指示与该地址关联的Word中的一个比特位;根据K个地址,设置每个地址在各自关联的Word中所指示的比特位上的参数,或者,读取K个地址在各自关联的Word中所指示的比特位上的参数,以根据读取参数确定关键值是否属于布隆过滤器。本发明实施例用于确定关键值是否位于布隆过滤器的过程。

Description

一种布隆过滤器中数据的处理方法以及布隆过滤器
技术领域
本发明实施例涉及存储技术领域,尤其涉及一种布隆过滤器中数据的处理方法以及布隆过滤器。
背景技术
布隆过滤器(Bloom Filter)可以把一个大的数据集合编码压缩到非常小的存储空间上,属于空间高效的随机数据结构,由于布隆过滤器的查询只可以回答一个问题:所查元素是否属于一个集合。因此,通常可以在设计计算机软件时,可以用布隆过滤器判断一个元素是否在一个集合中。但是,在实际过程中不属于一个集合中的元素通常会和属于集合中的元素产生哈希冲突,因此会造成布隆过滤器的查询结果存在假阳性(FalsePositive)。假阳性表示:一个不属于编码集合的元素被判定为属于这个集合。在实际应用中,为不显著影响程序的性能,假阳性概率通常会被设置为一个特别小的值,比如10-6布隆过滤器是由Burton H.Bloom于1970年提出,称之为标准布隆过滤器(Standard BloomFilter,SBF)。
SBF把一个集合S编码存储在一个有m比特的位向量上。位向量的所有比特被初始化为0。假设SBF要将集合S={x1,x2,…,xn}中的n个元素编码在SBF中。每个元素使用k个独立随机哈希函数h1,h2,…,hk,因此,SBF需要在位向量中选择k个比特,通常会将m个比特中被选中的比特位置1。每个哈希函数生成哈希值的范围属于[0,m-1]。当所有的元素都执行完一次编码过程,布隆过滤器的插入过程就完成了。位向量中的比特由所有的哈希函数和所有的元素共享。因此SBF中的一个比特可能被多次置1,但只有第一次有影响。图1所示为SBF数据结构的一个示例。
插入过程结束后,SBF就可以执行它的查询功能了。给定一个元素e,SBF需要判定该元素是否属于集合S。如果所有位于hi(e),1≤i≤k的比特都是1,那么可以判定元素e∈S。如果位于hi(e),1≤i≤k的比特至少有一个0,那么可以判定
Figure BDA0001320913470000011
一个假阳性结果在如下情况时发生:
Figure BDA0001320913470000012
但是位于hi(e),1≤i≤k的比特恰好都被置1。
但是,布隆过滤器在执行一次元素插入过程中,由于SBF在位向量中所选择的k个比特有可能位于一个Word中,SBF使用k个哈希函数在这个Word内映射k个比特以完成元素的插入,这样有可能存在访问冲突,且k个元素是依次完成编码或者读取的,这样每次访存都会产生一次高速缓存缺失,较高的缓存缺失率会极大降低程序性能。
发明内容
本发明实施例提供一种布隆过滤器中数据的处理方法以及布隆过滤器,用以提高布隆过滤器的查找与存储效率。
为达到上述目的,本发明实施例采用如下技术方案:
本发明实施例的第一方面,提供一种布隆过滤器中数据的处理方法,包括:获取关键值;利用K个不同的哈希函数对关键值作哈希运算,得到K个哈希值;根据K个哈希值,计算得到K个地址,K个地址中每个地址与目标数据块包括的K个Word字中的一个Word一一关联;不同的地址与不同的Word关联,一个地址用于指示与该一个地址关联的Word中的一个比特位;根据K个地址,设置K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,或者,读取K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,并根据读取的参数确定关键值是否属于布隆过滤器。
本发明实施例提供一种布隆过滤器中数据的处理方法,通过利用K个哈希函数对同一个关键值作运算,这样可以便于得到K个哈希值,并且利用根据K个哈希值,计算得到K个地址,并利用K个地址将关键值编码至一个数据块中与每个地址一一关联的Word中,或者读取与每个地址关联的Word中所指示的比特位上的参数,由于在编码过程中布隆过滤器把一个关键值映射到一个目标数据块上,且该目标数据块包括K个独立的且地址连续的Word,不同的地址与不同的Word关联,这样不论是设置每个地址在各自关联的Word中所指示的比特位的参数还是读取每个地址在各自关联的Word中所指示的比特位的参数均不会产生影响,从而可以有效地提高元素查询和存储过程中的高速缓存效率。
结合第一方面,在第一方面的第一种可能的实现方式中,利用第一哈希函数对关键值作哈希运算,以计算得到第一哈希值,第一哈希函数与K个哈希函数不同;根据第一哈希值计算得到第一地址;根据K个地址,设置K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,或者,读取K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,并根据读取的参数确定关键值是否属于布隆过滤器之前,本发明实施例提供的方法还包括:根据第一地址从布隆过滤器包括的多个数据块中确定与第一地址关联的目标数据块。通过确定与第一地址关联的目标数据块可以便于确定关键值所被编码的数据块。
结合第一方面或第一方面的第一种可能的实现方式中,在第一方面的第二种可能的实现方式中,根据K个地址,设置K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,包括:对目标数据块包括的K个Word中每个Word包括的比特位,执行下述步骤以设置每个Word包括的比特位的参数:将K个地址中一个地址关联的Word中一个地址所指示的比特位的参数设置为第一参数。通过将关键值所被编码的比特位上的参数设置为第一参数,这样在查询关键值是否属于布隆过滤器中时,可以加快查询速度。
结合第一方面至第一方面的第二种可能的实现方式中任一项,在第一方面的第三种可能的实现方式中,根据K个地址,读取K个地址在各自关联的Word中所指示的比特位上的参数,以确定关键值是否属于布隆过滤器,包括:根据K个地址,从目标数据块包括的K个Word中读取K个地址中每个地址在各自关联的Word中所指示的比特位上的参数。确定K个地址在各自关联的Word中所指示的比特位上的参数均为第一参数,则确定关键值属于布隆过滤器。由于一个关键值被编码至一个数据块的每个Word中,因此利用每个地址在各自关联的Word中所指示的比特位上的参数这样可以快速确定关键值是否属于布隆过滤器。
结合第一方面至第一方面的第三种可能的实现方式中任一项,在第一方面的第四种可能的实现方式中,本发明实施例提供的方法还包括:确定K个地址在各自关联的Word中所指示的比特位中存在至少一个比特位上的参数为第二参数,则确定关键值不属于布隆过滤器,第二参数与第一参数不同。当一个数据块中的Word所包括的一个比特位上的参数为第二参数时,则可以确定关键值不属于布隆过滤器,即关键值未编码至布隆过滤器中。
结合第一方面至第一方面的第四种可能的实现方式中任一项,在第一方面的第五种可能的实现方式中,布隆过滤器包括至少一个数据块,至少一个数据块中每个数据块用于存储一个元素的信息,每个数据块包括K个Word,K个Word中每个Word字包括w个比特位,w为大于或等于1的整数。把一个元素的信息映射到一个数据块上,可以有效地提高了元素查询过程中的高速缓存效率。
结合第一方面至第一方面的第五种可能的实现方式中任一项,在第一方面的第六种可能的实现方式中,利用K个不同的哈希函数分别对关键值作哈希运算,获取K个哈希值,包括:利用K个哈希计算单元分别对关键值作并行哈希函数计算,以获得K个哈希值,一个哈希计算单元用于根据关键值获得一个哈希值。通过并行计算K个地址可以进一步加速后续利用布隆过滤器查询元素是否属于布隆过滤器的速度。
结合第一方面至第一方面的第六种可能的实现方式中任一项,在第一方面的第七种可能的实现方式中,根据K个哈希值,计算得到K个地址,包括:根据K个哈希值,利用K个地址计算单元并行计算,以计算得到K个地址。通过并行计算K个地址可以进一步加速后续利用布隆过滤器查询元素是否属于布隆过滤器的速度。
结合第一方面至第一方面的第七种可能的实现方式中任一项,在第一方面的第八种可能的实现方式中,根据K个地址,设置K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,包括:根据K个地址,并行设置K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,或者,读取K个地址在各自关联的Word中所指示的比特位上的参数,以确定关键值是否属于布隆过滤器,包括:根据K个地址,并行读取K个地址在各自关联的Word中所指示的比特位上的参数;在确定K个地址在各自关联的Word中所指示的比特位上的参数均为第一参数,则确定关键值属于布隆过滤器。通过并行设置每个地址在各自关联的Word中所指示的比特位上的参数,或者并行读取每个地址在各自关联的Word中所指示的比特位上的参数这样可以提高布隆过滤器的元素编码速度以及提高元素属性查询过程中的高速缓存效率。
第二方面,本发明实施例提供一种布隆过滤器,包括:获取单元,用于获取关键值和初始值集合,初始值集合包括K个初始值;第一计算单元,用于利用K个不同的哈希函数分别对关键值作哈希运算,得到K个哈希值;第二计算单元,用于根据K个哈希值,计算得到K个地址,K个地址中每个地址与目标数据块包括的K个Word字中的一个Word一一关联;不同的地址与不同的Word关联,一个地址用于指示与一个地址关联的Word中的一个比特位,处理单元,用于根据K个地址,设置K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,或者,读取K个地址在各自关联的Word中所指示的比特位上的参数,以确定关键值是否属于布隆过滤器。
结合第二方面,在第二方面的第一种可能的实现方式中,第一计算单元,还用于利用第一哈希函数对关键值作哈希运算,获取第一哈希值,第一哈希函数与K个哈希函数不同;第二计算单元,还用于根据第一哈希值计算得到第一地址;本发明实施例提供的装置还包括:确定单元,用于根据第一地址从布隆过滤器包括的多个数据块中确定与第一地址关联的目标数据块。
结合第二方面,在第二方面的第一种可能的实现方式中,第三指令的操作类型为插入操作,处理单元,具体用于对目标数据块包括的K个Word中每个Word包括的比特位,执行下述步骤以设置每个Word包括的比特位的参数:将K个地址中一个地址关联的Word中一个地址所指示的比特位的参数设置为第一参数。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,获取单元,还用于根据K个地址,从目标数据块包括的K个Word中读取K个地址中每个地址在各自关联的Word中所指示的比特位上的参数;确定单元,具体用于:确定K个地址在各自关联的Word中所指示的比特位上的参数均为第一参数,则确定关键值属于布隆过滤器。
结合第二方面至第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,确定单元还具体用于:确定K个地址在各自关联的Word中所指示的比特位中存在至少一个比特位上的参数为第二参数,则确定关键值不属于布隆过滤器,第二参数与第一参数不同。
结合第二方面至第二方面的第三种可能的实现方式中,在第二方面的第四种可能的实现方式中,布隆过滤器包括至少一个数据块,至少一个数据块中每个数据块用于存储一个元素的信息,每个数据块包括K个Word字,K个Word字中每个Word字包括w个比特位,w为大于或等于1的整数。
结合第二方面至第二方面的第四种可能的实现方式中,在第二方面的第五种可能的实现方式中,第一计算单元,包括K个哈希计算单元,第一计算单元具体用于,利用K个哈希计算单元分别对关键值作并行哈希函数计算,以获得K个哈希值,一个哈希计算单元用于根据关键值获得一个哈希值。
结合第二方面至第二方面的第五种可能的实现方式中,在第二方面的第六种可能的实现方式中,第二指令包括K个依次输入的第二子指令,计算单元,具体用于在每个第二子指令的触发下,执行下述步骤以获取K个地址:在K个依次输入的第二子指令中一个第二子指令的触发下,根据K个哈希值中的一个哈希值,计算一个地址。
结合第二方面至第二方面的第六种可能的实现方式中,在第二方面的第七种可能的实现方式中,第二计算单元包括K个地址计算单元,第二计算单元具体用于根据K个哈希值,利用K个地址计算单元并行计算,以计算得到K个地址。
结合第二方面至第二方面的第七种可能的实现方式中,在第二方面的第八种可能的实现方式中,处理单元,具体用于根据K个地址,并行设置K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,或者,获取单元,还用于根据K个地址,并行读取K个地址在各自关联的Word中所指示的比特位上的参数;确定单元,还用于在确定K个地址在各自关联的Word中所指示的比特位上的参数均为第一参数,则确定关键值属于布隆过滤器。
第三方面,本发明实施例提供一种路由查找系统,该路由查找系统包括路由表,路由表包括一个或多个前缀组,前缀组采用如第二方面至第二方面的第八种可能的实现方式中任一项所描述的布隆过滤器来存储。
第四方面,本发明实施例提供一种每流测量系统,每流测量系统SRAM Module使用如第二方面至第二方面的第八种可能的实现方式中任一项所描述的布隆过滤器来存储。
第五方面,本发明实施例提供一种深度包检测DPI系统,该DPI系统包括一个或多个安全特征组,安全特征组中包括一个或多个安全特征,安全特征组中包括的一个或多个安全特征采用如第二方面至第二方面的第八种可能的实现方式中任一项所描述的布隆过滤器来存储。
第六方面,本发明实施例提供一种布隆过滤器,包括:存储器、处理器、总线和通信接口,存储器中存储代码和数据,处理器与存储器通过总线连接,通信接口用于获取关键值;处理器用于根据通信接口获取到的关键值,利用K个不同的哈希函数分别对关键值作哈希运算,计算得到K个哈希值;以及用于根据K个哈希值,计算得到K个地址,K个地址中每个地址与目标数据块包括的K个Word字中的一个Word一一关联,不同的地址与不同的Word关联,一个地址用于指示与一个地址关联的Word中的一个比特位;以及用于根据K个地址,设置K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,或者,读取K个地址在各自关联的Word中所指示的比特位上的参数,并根据读取的参数确定关键值是否属于布隆过滤器。
结合第六方面,在第六方面的第一种可能的实现方式中,处理器还用于利用第一哈希函数对关键值作哈希运算,以计算得到第一哈希值,第一哈希函数与K个哈希函数不同;以及用于根据第一哈希值计算得到第一地址;以及用于根据第一地址从布隆过滤器包括的多个数据块中确定与第一地址关联的目标数据块。
结合第六方面或第六方面的第一种可能的实现方式,在第六方面的第二种可能的实现方式中,处理器,具体用于对目标数据块包括的K个Word中每个Word包括的比特位,执行下述步骤以设置每个Word包括的比特位的参数:将K个地址中一个地址关联的Word中一个地址所指示的比特位的参数设置为第一参数。
结合第六方面至第六方面的第二种可能的实现方式中任一项,在第六方面的第三种可能的实现方式中,处理器还用于根据K个地址,从目标数据块包括的K个Word中读取K个地址中每个地址在各自关联的Word中所指示的比特位上的参数;以及处理器还用于:确定K个地址在各自关联的Word中所指示的比特位上的参数均为第一参数,则确定关键值属于布隆过滤器。
结合第六方面至第六方面的第三种可能的实现方式,在第六方面的第四种可能的实现方式中,处理器还用于:确定K个地址在各自关联的Word中所指示的比特位中存在至少一个比特位上的参数为第二参数,则确定关键值不属于布隆过滤器,第二参数与第一参数不同。
结合第六方面至第六方面的第四种可能的实现方式中,在第六方面的第五种可能的实现方式中,布隆过滤器包括至少一个数据块,至少一个数据块中每个数据块用于存储一个元素的信息,每个数据块包括K个Word字,K个Word字中每个Word字包括w个比特位,w为大于或等于1的整数。
结合第六方面至第六方面的第五种可能的实现方式中,在第六方面的第六种可能的实现方式中,根据关键值,利用K个哈希计算单元并行计算,以获得K个哈希值,一个哈希计算单元用于根据关键值获得一个哈希值。
结合第六方面至第六方面的第六种可能的实现方式中,在第六方面的第七种可能的实现方式中,处理器具体用于:根据K个哈希值,利用K个地址计算单元并行计算,以计算得到K个地址。
结合第六方面至第六方面的第七种可能的实现方式中,在第六方面的第八种可能的实现方式中,处理器具体用于:根据K个地址,并行设置K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,或者,处理器具体用于:根据K个地址,并行读取K个地址在各自关联的Word中所指示的比特位上的参数;在确定K个地址在各自关联的Word中所指示的比特位上的参数均为第一参数,则确定关键值属于布隆过滤器。
第七方面,本发明实施例提供一种计算机可读存储介质,包括指令,当指令在布隆过滤器上运行时,使得布隆过滤器执行第一方面至第一方面的第八种可能的实现方式中任意一项所描述的布隆过滤器中数据的处理方法。
第八方面,本发明实施例提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;布隆过滤器的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得车辆实施上述第一方面至第一方面的第八种可能的实现方式中任意一项所描述的布隆过滤器中数据的处理方法。
可以理解地,上述提供的任一种布隆过滤器中数据的处理方法、布隆过滤器、计算机存储介质或者计算机程序产品均用于执行上文所提供的布隆过滤器中数据的处理方法,因此,其所能达到的有益效果可参考上文所提供的布隆过滤器中数据的处理方法中的有益效果,此处不再赘述。
附图说明
图1为现有技术提供的一种布隆过滤器的示意图;
图2为本发明实施例提供的一种系统架构的简化示意图;
图3为本发明实施例提供的另一种系统架构的简化示意图;
图4为本发明实施例提供的一种布隆过滤器中Word的示意图;
图5为本发明实施例提供的一种布隆过滤器中数据的处理方法的流程示意图;
图6为本发明实施例提供的另一种布隆过滤器中数据的处理方法的流程示意图;
图7为本发明实施例提供的另一种布隆过滤器中Word的示意图;
图8为本发明实施例提供的一种布隆过滤器的组成示意图;
图9为本发明实施例提供的另一种布隆过滤器的组成示意图;
图10为本发明实施例提供的一种路由查找系统的示意图;
图11为本发明实施例提供的一种每流测量系统的示意图;
图12为本发明实施例提供的一种深度包检测系统的示意图。
具体实施方式
为了解决传统的技术方案中,布隆过滤器在执行一次元素插入过程中,由于SBF在位向量中所选择的k个比特有可能位于一个Word中,SBF使用k个哈希函数在这个Word内映射k个比特以完成元素的插入,这样有可能存在访问冲突,且k个元素是依次完成编码或者读取的,这样每次访存都会产生一次高速缓存缺失,较高的缓存缺失率会极大降低程序性能。本发明实施例提供的方法通过利用K个哈希函数对同一个关键值作运算,这样可以便于得到K个哈希值,并且利用根据K个哈希值,计算得到K个地址,并利用K个地址将关键值编码至一个数据块中与每个地址一一关联的Word中,或者读取与每个地址关联的Word中所指示的比特位上的参数,由于在编码过程中布隆过滤器把一个关键值映射到一个目标数据块上,且该目标数据块包括K个独立的且地址连续的Word,这样不论是设置每个地址在各自关联的Word中所指示的比特位的参数还是读取每个地址在各自关联的Word中所指示的比特位的参数均不会产生影响,从而可以有效地提高元素查询和存储过程中的高速缓存效率。
下面将结合附图对本发明实施例的实施方式进行详细描述。
图2和图3示出的是可以应用本申请实施例的系统架构的简化示意图。
如图2所示,在本申请实施例的第一种应用场景下,该系统架构可以包括:获取单元10、与获取单元10连接的第一计算单元20、与第一计算单元20连接的第二计算单元30以及与第二计算单元30连接的处理单元40。
其中,获取单元10用于向第一计算单元20输入K个不同的初始值,例如如图2所示的V1、V2、…、VK。
可选的,如图2所示,本发明实施例中还包括寄存单元组,例如,如图2所示的寄存单元1、寄存单元2、…、以及寄存单元K,其中,每个寄存单元用于存储一个输入至第一计算单元20的初始值,可以理解的是,本申请中的关键值Key也可以存储在寄存单元中。
具体的,获取单元10可以从K个寄存器中获取K个不同的初始值,以及从存储关键值的寄存器中获取关键值。
第一计算单元20包括K个哈希计算单元,例如,如图2所示的哈希计算单元201、哈希计算单元202、…、以及哈希计算单元20K,其中,一个哈希计算单元用于利用哈希函数对输入至该哈希计算单元的关键值和初始值作哈希运算,以计算得到一个哈希值。
具体的,在实际过程中,本申请提供的K个哈希计算单元,在第一指令的触发下,利用K个哈希计算单元中的哈希函数对各自接收到的关键值和初始值并行计算,以获得K个哈希值。
第二计算单元30包括K个地址计算单元,例如,如图2所示的地址计算单元301、地址计算单元302、…、以及地址计算单元30K,其中,一个地址计算单元用于根据输入至该地址计算单元的哈希值计算得到一个地址。该地址与一个数据块包括的K个Word中的一个Word关联,且用于指示与该地址关联的Word中的一个比特位。
处理单元40用于根据地址计算单元30输入的K个地址,设置K个地址中每个地址在各自所关联的Word中所指示的比特位上的参数,以及读取每个地址各自所关联的Word中所指示的比特位上的参数,并根据读取到的每个地址所关联的Word中所指示的比特位上的参数确定关键值是否属于布隆过滤器。
由于在实际过程中,布隆过滤器可以包括一个或多个数据块,因此,图3示出了本申请实施例的第二种应用场景,图3与图2的区别在于,图2适用于布隆过滤器仅包括一个数据块的情况,或者布隆过滤器包括多个数据块。但是,在使用布隆过滤器查询元素是否位于布隆过滤器之前已经确定目标数据块的情况,而图3的架构适用于布隆过滤器包括多个数据块的情况,且在查询元素是否位于布隆过滤器之前并不已经确定目标数据块的情况,因此,如图3所示,第一地址单元20还包括:哈希计算单元200,第二地址计算单元30还包括:地址计算单元300,其中,哈希计算单元200用于利用哈希函数对关键值和初始值作哈希运算以得到第一哈希值,第一哈希值用于确定目标数据块的地址,地址计算单元300用于根据第一哈希值确定目标数据块的地址。
可以理解的是,如图2所示的装置,还包括一个或多个指令寄存单元,该一个或多个指令寄存单元用于存储布隆过滤器在元素插入或者查询过程中所需要的各种指令,例如,如图2所示的第一指令,第二指令,第三指令。
在如图3所示的架构中,哈希计算单元20用于对关键值和寄存单元0输入的初始值V0作哈希运算以得到第一哈希值,并将第一哈希值输入至地址计算单元300中,地址计算单元300用于在第四指令的触发下,根据第一哈希值计算得到目标数据块的地址。这样处理单元40在接收到的目标数据块的地址之后,在第三指令的触发下,根据目标数据块的地址从布隆过滤器包括的一个或多个数据块中选择出与目标数据块的地址关联的目标数据块,并按照K个地址将目标数据块中与每个地址各自关联的Word中所指示的比特位上的参数进行设置或者读取。
如图4所示,图4示出了本发明实施例提供的布隆过滤器包括的数据块的结构,如图4所示,本发明实施例提供的布隆过滤器包括r个地址连续的数据块(Block),一个数据块包括b个比特位,一个数据块包括K个地址连续且相互独立的Word,每个Word有w个比特位(bit),因此,b=k×w。布隆过滤器通常具有m个比特位,因此,m=r×b=r×k×w。
需要说明的是,本发明实施例中的Word指机器字,表示传统指令可操作寄存器的长度,一个字表示一组可以加载进通用寄存器的比特位,比如,现代中央处理器(CentralProcessing Unit,CPU)的通用寄存器常用为32bit或者64bit,也即一个Word包含有w=32比特或64个比特。
需要说明的是,本发明实施例中在系统初始化时,每个Word包含的K个比特位上每个比特位上的参数均默认设置为第二参数,该第二参数可以为字母、字符或者数字,本申请对此不限定,示例性的,本申请中的第二参数可以为“0”。
如图5所示,图5示出了本发明实施例提供的一种布隆过滤器中数据的处理方法的流程示意图,如图5所示,该方法包括:
S101、布隆过滤器获取关键值。
S102、布隆过滤器利用K个不同的哈希函数分别对关键值作哈希运算,计算得到K个哈希值。
示例性的,(Key+100)%M,其中Key是关键值,100是这个哈希函数的随机数,也即哈希函数对应的初始值,M是正整数,是一个限界值。
可选的,本发明实施例中的K个哈希值中每个哈希值的范围属于[0,K-1]。哈希值为0表示用于指示第一个比特位。哈希值为K-1用于指示第K个比特位。
本发明实施例中的加密哈希函数可以采用加密哈希函数,也可以采用非加密哈希函数。
S103、布隆过滤器根据K个哈希值,计算得到K个地址,K个地址中每个地址与目标数据块包括的K个Word字中的一个Word一一关联,不同的地址与不同的Word关联,一个地址用于指示与一个地址关联的Word中的一个比特位。
S104、布隆过滤器根据K个地址,设置K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,或者,读取K个地址在各自关联的Word中所指示的比特位上的参数,以根据读取参数确定关键值是否属于布隆过滤器。
本发明实施例提供一种布隆过滤器中数据的处理方法,通过利用K个哈希函数对同一个关键值作运算,这样可以便于得到K个哈希值,并且利用根据K个哈希值,计算得到K个地址,并利用K个地址将关键值编码至一个数据块中与每个地址一一关联的Word中,或者读取与每个地址关联的Word中所指示的比特位上的参数,由于在编码过程中布隆过滤器把一个关键值映射到一个目标数据块上,且该目标数据块包括K个独立的且地址连续的Word,不同的地址与不同的Word关联,这样不论是设置每个地址在各自关联的Word中所指示的比特位的参数还是读取每个地址在各自关联的Word中所指示的比特位的参数均不会产生影响,从而可以有效地提高元素查询和存储过程中的高速缓存效率。
由于在实际使用过程中,布隆过滤器通常包括两个或两个以上的数据块,因此,在执行S104之前,还需要确定目标数据块的地址,这样布隆过滤器才能够根据目标数据块的地址从布隆过滤器包括的两个或两个以上的数据块中获取到目标数据块,因此,如图6所示本发明实施例提供的方法还包括:
S105、布隆过滤器利用第一哈希函数对关键值作哈希运算,以计算得到第一哈希值,第一哈希函数与K个哈希函数不同。
S106、布隆过滤器根据第一哈希值计算得到第一地址。
S107、布隆过滤器根据第一地址从布隆过滤器包括的多个数据块中确定与第一地址关联的目标数据块。
示例性的,当布隆过滤器包括两个或两个以上的数据块时,布隆过滤器可以先利用第一哈希函数以及K个不同的函数分别对关键值作哈希运算,以计算得到第一哈希值和K个哈希值,然后再根据第一哈希值计算得到第一地址,并根据K个哈希值计算得到K个地址,这样在后续查询或者插入过程中,首先根据第一地址确定目标数据块,然后根据K个哈希值确定在由第一地址确定的目标数据块中每个地址各自关联的Word,以及每个地址在各自关联的Word中所指示的比特位。
可选的,在如图2或图3所示的场景下,若布隆过滤器接收到的第三指令的操作类型为插入操作,则本发明实施例中的布隆过滤器通过步骤S104向目标数据块包括的Word的比特位上写入参数,具体的,通过对目标数据块包括的K个Word中每个Word包括的比特位,执行下述步骤以设置每个Word包括的比特位的参数:
S1041、布隆过滤器将K个地址中一个地址关联的Word中一个地址所指示的比特位的参数设置为第一参数。
需要说明的是,本发明实施例中设置每个地址在各自所关联的Word中所指示的比特位上的参数的方式均与步骤S1041相同,本申请在此不再赘述。
具体的,本发明实施例中的第一参数的值可以为字母、数字或者其他值,本申请对此不进行限定,示例性的,本申请中的第一参数可以为“1”。
示例性的,如图7所示,图7以目标数据块的地址由布隆过滤器根据关键值和初始值得到的哈希值h0,以及根据哈希值ho得到的地址d0确定。在这种情况下,如图7所示地址d1指向地址d0所关联的目标数据块中的Word1中的第1个比特位,因此,在Word1的第1个比特位上设置第一参数“1”,由于地址d2指向地址d1所关联的目标数据块中的Word2中的第二个比特位,那么在Word2的第2个比特位上设置第一参数“1”,由于地址dK所关联的目标数据块中WordK的第K个比特位,那么在WordK的第K个比特位上设置第一参数“1”。
需要说明的是,由于本发明实施例中的Word为32比特或者64比特,因此,K取值为32或64,当然,在Word还可以包括除32比特或者64比特之外的其余比特时,K的取值由Word所包含的比特位数量确定。
本发明实施例中的机器字表示片下存储器和处理器之间一次读写的通信带宽,通常为3 2比特或者64比特。为了编码一个元素(关键值),传统技术中单访存布隆过滤器首先使用一个额外的哈希函数选择一个机器字,然后使用K个哈希函数在这个机器字内映射K个比特,以将元素编码至布隆过滤器中,而本申请为了编码一个元素,利用一个地址选择一个目标数据块(包括K个机器字)。然后利用K个地址在K个地址各自关联的机器字中将各个地址所指示的比特位上的参数设置为第一参数,这样以实现将元素编码至布隆过滤器中。
此外,在实际过程中,K个地址中每个地址的值指向与各自关联的Word中的一个比特位,例如,d1的值若为15,那么布隆过滤器需要将与d1关联的Word1中的第16个比特位上的参数设置为第一参数,d2的值若为13,那么布隆过滤器需要将与d2关联的Word2中的第14个比特位上的参数设置为第一参数。依次类推,本申请对此不进行限定。
可选的,在实际过程中布隆过滤器通常用于查询一个元素是否属于布隆过滤器,因此,本发明实施例中当需要判断元素是否属于布隆过滤器时,步骤S104具体可以通过以下方式实现:
S1042、布隆过滤器根据K个地址,从目标数据块包括的K个Word中读取K个地址中每个地址所指示的比特位上的参数。
S1043、布隆过滤器确定K个地址在各自关联的Word中所指示的比特位上的参数均为第一参数,则确定关键值属于布隆过滤器。
示例性的,本申请以一个Word包括32个比特为例,K个地址分别为d1、d2、…、d32,d1与Word1关联,d2与Word2关联,…,d32与Word32关联,且d1的值为15,d2的值为13,d32的值为25,那么在布隆过滤器在执行编码过程中,将Word1的第16个比特位的参数设置为第一参数,将Word2的第14个比特位的参数设置为第一参数,将Word32的第26个比特位的参数设置为第一参数。
那么,最终布隆过滤器读取到的Word1的第16个比特位的参数为第一参数,读取到的Word2的第14个比特位的参数为第一参数,读取到的Word32的第26个比特位的参数为第一参数,因此,布隆过滤器确定关键值属于布隆过滤器中。
可以理解的是,本发明实施例中的一个比特位上的第一参数用于表示关键值编码在该一个比特位上。本发明实施例中的一个比特位上的第二参数用于表示关键值编码没有在该一个比特位上。
可选的,步骤S104还可以通过以下方式实现:
S1044、布隆过滤器确定K个地址在各自关联的Word中所指示的比特位中存在至少一个比特位上的参数为第二参数,则确定关键值不属于布隆过滤器,第二参数与第一参数不同。
可以理解的是,在实际过程中,有可能存在关键值并没有编码至布隆过滤器中,因此,只需要确定K个Word中存在至少一个Word的比特位上的参数为第二参数则确定关键值不属于布隆过滤器。
可选的,本申请中的布隆过滤器包括至少一个数据块,至少一个数据块中每个数据块用于存储一个元素的信息,每个数据块包括K个Word字,K个Word中每个Word包括w个比特位,所述w为大于或等于1的整数。
可选的,为了提高哈希计算和元素比特位检测的并行性,本申请中的步骤S102具体可以通过以下方式实现:根据关键值,利用K个哈希计算单元并行计算,以获得K个哈希值,一个哈希计算单元用于根据关键值获得一个哈希值。
具体的,如图2或如图3所示,在第一指令的触发下,K个哈希计算单元(例如,哈希计算单元201、哈希计算单元202、…、以及哈希计算单元20K)同时根据接收到的同一个关键值和各自接收到的初始值,并行计算获得K个哈希值。可以理解的是,在如图3所示的结构中,哈希计算单元200还用于根据接收到的关键值和接收到的初始值V0与其他哈希计算单元(例如,哈希计算单元201、哈希计算单元202、…、以及哈希计算单元20K)并行计算,这样可以得到K+1个哈希值,其中,哈希计算单元200得到的第一哈希值用于确定目标数据块的地址,即第一地址。
可选的,本发明实施例中的步骤S103具体可以通过以下方式实现:布隆过滤器根据K个哈希值,利用K个地址计算单元并行计算,以计算得到K个地址。
具体的,在如图2和图3所示的结构中,K个地址计算单元(包括:地址计算单元301、地址计算单元302、…、地址计算单元303)用于在第二指令的触发下根据各自接收到的哈希值(或者与各自相连的哈希计算单元输出的哈希值)并行计算得到K个地址,此外,在如图3所示的结构中,地址计算单元300还用于在第四指令的触发下根据哈希计算单元200输出的哈希值计算得到的目标数据块的地址。
可选的,本发明实施例中的步骤S104具体可以通过以下方式实现:布隆过滤器根据K个地址,并行设置K个地址中每个地址在各自关联的Word中所指示的比特位上的参数。
具体的,布隆过滤器可以根据K个地址确定每个地址在各自关联的Word中所指示的比特位,在确定每个地址在各自关联的Word中所指示的比特位后,并行设置每个地址在各自关联的Word中所指示的比特位的参数。
或者,布隆过滤器根据K个地址,并行读取K个地址在各自关联的Word中所指示的比特位上的参数;布隆过滤器在确定K个地址在各自关联的Word中所指示的比特位上的参数均为第一参数,则确定关键值属于布隆过滤器。
具体的,布隆过滤器可以根据K个地址确定每个地址在各自关联的Word中所指示的比特位,在确定每个地址在各自关联的Word中所指示的比特位后,并行读取每个地址在各自关联的Word中所指示的比特位的参数。
可以理解的是,本发明实施例中的布隆过滤器基于单指令多数据流(SingleInstruction Multiple Data,SIMD)技术,因此,本申请提供的布隆过滤器简称为超快速布隆过滤器(Ultra-Fast Bloom Filter,UFBF)。
单指令多数据流是只多个处理单元并行执行同一指令来处理不同的数据,从而得到不同的结果。
可以理解的是,上述实施例介绍了布隆过滤器并行计算得到哈希值以及并行计算得到K+1个地址的情况,在实际情况中,本发明实施例提供的方法还适用于:在指令1的触发下,利用第一哈希函数对关键值作哈希运算以得到第一哈希值,在指令2的触发下,根据第一哈希值计算得到第一地址,在指令3的触发下利用第一地址确定与第一地址关联的目标数据块,在指令4的触发下,利用第二哈希函数对关键值作哈希运算以得到第二哈希值,在指令5的触发下,根据第二哈希值计算得到地址,在指令6的触发下根据地址将目标数据块中与地址关联的Word字中地址所指示的比特位上的参数设置为第一参数;在指令7的触发下,利用第三哈希函数对关键值作哈希运算以得到第三哈希值,在指令8的触发下,根据第三哈希值计算得到第三地址,在指令9的触发下根据第三地址将目标数据块中与第三地址关联的Word字中第三地址所指示的比特位上的参数设置为第一参数;在指令10的触发下,利用第四哈希函数对关键值作哈希运算以得到第四哈希值,在指令11的触发下,根据第四哈希值计算得到第四地址,在指令12的触发下根据第四地址将目标数据块中与第四地址关联的Word字中第四地址所指示的比特位上的参数设置为第一参数;依次类推,直至将关键值编码在目标数据块包括的所有Word中每个Word的一个比特位上。
在查询过程中,本发明实施例中在指令13的触发下,利用第一哈希函数对关键值作哈希运算以得到第一哈希值,在指令14的触发下,根据第一哈希值计算得到第一地址,在指令15的触发下利用第一地址确定与第一地址关联的目标数据块,在指令16的触发下,利用第二哈希函数对关键值作哈希运算以得到第二哈希值,在指令17的触发下,根据第二哈希值计算得到地址,在指令18的触发下根据地址读取目标数据块中与地址关联的Word字中地址所指示的比特位上的参数;在指令18的触发下,利用第三哈希函数对关键值作哈希运算以得到第三哈希值,在指令19的触发下,根据第三哈希值计算得到第三地址,在指令20的触发下根据第三地址读取目标数据块中与第三地址关联的Word字中第三地址所指示的比特位上的参数;在指令20的触发下,利用第四哈希函数对关键值作哈希运算以得到第四哈希值,在指令21的触发下,根据第四哈希值计算得到第四地址,在指令22的触发下根据第四地址读取目标数据块中与第四地址关联的Word字中第四地址所指示的比特位上的参数;依次类推,直至读取到目标数据块包括的所有Word中每个Word的一个比特位上的参数。并根据从每个Word的一个比特位上读取的参数确定关键值是否位于布隆过滤器中。
可以理解的是,本发明实施例在实际使用过程中还可以包括指令寄存器,用于存储关键值编码/查询过程中的指令,例如上述第一指令、第二指令、第三指令以及第四指令等。
上述主要从各个网元之间交互的角度对本发明实施例提供的方案进行了介绍。可以理解的是,各个网元,例如布隆过滤器为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本发明实施例可以根据上述方法示例对布隆过滤器进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,如图2或图3所示,图2或图3示出了上述和实施例中涉及的布隆过滤器的一种可能的组成示意图,如图2或图3所示,该布隆过滤器可以包括:获取单元10、第一计算单元20以及第二计算单元30以及处理单元40。
其中,获取单元10,用于支持布隆过滤器执行上述实施例中的步骤S101,S1042。
第一计算单元20,用于支持布隆过滤器执行上述实施例中的步骤S102,S105。
第二计算单元30,用于支持布隆过滤器执行上述实施例中的步骤S103,S106。
处理单元40用于支持布隆过滤器执行上述实施例中的步骤S104、S1041。
在本发明实施例中,进一步的,如图2所示,该布隆过滤器还可以包括:确定单元50。
确定单元50,用于支持布隆过滤器执行上述实施例中的步骤S107,S1043,S1044。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本发明实施例提供的布隆过滤器,用于执行上述数据处理方法,因此可以达到与上述数据处理方法相同的效果。
在采用集成的单元的情况下,图8示出了上述实施例中所涉及的布隆过滤器的另一种可能的组成示意图。如图8所示,该布隆过滤器包括:处理模块81和通信模块82。
处理模块81用于对布隆过滤器的动作进行控制管理,例如,处理模块81用于支持布隆过滤器执行步骤S102,S105,S103,S106,S104、S1041,S107,S1043,S1044、和/或用于本文所描述的技术的其它过程。通信模块82用于支持布隆过滤器与其他网络实体的通信,例如与图2中示出的功能模块(例如,寄存器)或网络实体之间的通信,具体支持布隆过滤器执行步骤S101,S1042。布隆过滤器还可以包括存储模块83,用于存储布隆过滤器的程序代码和数据。
其中,处理模块81可以是处理器或控制器。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块82可以是通信接口、收发电路或通信接口等。存储模块83可以是存储器。
当处理模块81为处理器,通信模块82为通信接口,存储模块83为存储器时,本发明实施例所涉及的服务器可以为图9所示的布隆过滤器。可以理解的是,本发明实施例中的每个哈希计算单元集成在一个处理器,每个地址计算单元集成在一个处理器上。本发明实施例中的处理器还包括寄存器,其中寄存器用于存储处理器在执行上述方法时所需要的指令。
如图9所示,该布隆过滤器包括:至少一个处理器31,存储器32、通信接口33、总线34。
处理器31是布隆过滤器的控制中心,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器31是一个中央处理器(Central Processing Unit,CPU),也可以是特定集成电路(Application Specific Integrated Circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(Digital SignalProcessor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)。
其中,处理器31可以通过运行或执行存储在存储器32内的软件程序,以及调用存储在存储器32内的数据,执行布隆过滤器的各种功能。
在具体的实现中,作为一种实施例,处理器31可以包括一个或多个CPU,例如图9中所示的CPU0和CPU1。本发明实施例中的处理器还包括寄存器,其中寄存器用于存储处理器在执行上述方法时所需要的指令。
在具体实现中,作为一种实施例,布隆过滤器可以包括多个处理器,例如图9中所示的处理器31和处理器35。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
存储器32可以是只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器32可以是独立存在,通过总线34与处理器31相连接。存储器32也可以和处理器31集成在一起。
其中,存储器32用于存储执行本申请方案的软件程序,并由处理器31来控制执行。
通信接口33,使用任何收发器一类的装置,用于与其他设备或通信网络通信。如以太网接口,无线接入网(Radio Access Network,RAN)接口,无线局域网(Wireless LocalArea Networks,WLAN)接口等。通信接口33可以包括接收单元实现接收功能,以及发送单元实现发送功能。
总线34,可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在硬件实现上,图2和图3所示的处理单元40、第一计算单元20、第二计算单元30、寄存单元0、寄存单元1、寄存单元2、…、寄存单元K均集成在如图9所示的处理器上,获取单元10可以为如图9所示的通信接口。可选的,寄存单元0、寄存单元1、寄存单元2、…、寄存单元K可以为位于处理器内部的一个或多个寄存器。
图9中示出的设备结构并不构成对外部设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明实施例可应用于高速网络领域,例如采用布隆过滤器的路由查找、网络测量、深度包监测中。
如图10所示,图10示出了本申请提供的一种路由查找系统,在该路由查找系统中一个路由表中的前缀根据长度被分成了N个前缀组。一个前缀组使用一个布隆过滤器和一个哈希表来存储。在本实施例中,布隆过滤器采用如图2或图3、图8和图9所示的布隆过滤器,这样可以加快每个布隆过滤器的查找速度。图10中,BF(1)到BF(N)为N个采用本发明实施例的如图2或图3、图8和图9所示的布隆过滤器,能有效的加快整个路由查找的速度。
如图11所示,图11示出了本申请提供的一种每流测量系统,在该系统中,静态随机存取存储器(Static Random-Access Memory,SRAM)组件(Module)使用本发明实施例提供的布隆过滤器来记录每个流的状态。由于本发明实施例提出的布隆过滤器机制具有高查找性能、高压缩率的特性,使得每流测量系统可以存储在高速的SRAM存储器上。本发明实施例的布隆过滤器由于通过并行计算每个哈希值以及地址可以极大提高每流测量系统在实际应用中的测量速率,从而实现测量的整体优化。
具体的,当有新的数据包到达时,将程序的包头输入至CPU中,然后CPU将其写入SCBF组件中,其中,SCBF组件包括SRAM Module1和SRAM Module2,然后SRAM Module1和SRAMModule2一次将所有文件写入持久存储设备中,这样在可以通过查询以确定是否属于布隆过滤器。
如图12所示,图12示出了本申请提供的一种深度包检测(Deep PacketInspection,DPI)系统,在该系统中,所有的安全特征(Security Signature)根据长度划分为若干组,每个组采用本发明实施例提出的布隆过滤器机制来存储一组安全特征。到达的数据包,依次查找这些布隆过滤器,从而确定是否有网络完全问题。由于网络链路速率越来越高,使得布隆过滤器的查找速度越来越快,因此采用本发明实施例可以显著减速布隆过滤器的执行,进而提高DPI系统的吞吐量。
可选的,DPI系统可以用于网络安全领域、内容收费(Content-based Billing)领域以及内容转发(Content-based Forwarding)领域。
具体的,本发明实施例中的布隆过滤器由于是在同一个指令的触发下利用多个不同的哈希函数对同一个关键值做哈希运算,以获得K+1个哈希值,并在一个指令的触发下,利用K+1个哈希值中的一个哈希值获取目标数据块的地址,且在另一个指令的触发下,利用K+1个地址之外的其余K个地址,计算得到K个地址,用于指示各自关联的Word字中的比特位,这样在元素编码过程中可以通过并行计算将一个关键值编码在一个数据块的K个Word字中,不仅有效提高了布隆过滤器中的并行执行的能力,且提高了缓存效率,使得超快速布隆过滤器查询速度提升约2到3倍;并且布隆过滤器的大小无论是小于cache大小,还是大于cache大小,其查询速度都相较于传统布隆过滤器要快。本发明实施例的布隆过滤器查询速度不随哈希函数的增加而增加,可扩展性好。这样即使一个应用中使用多个布隆过滤器,或者一个布隆过滤器中使用较多数量的哈希函数,这样由于地址计算和设置参数/读取参数的过程均是并行执行的,因此会降低计算开销,且降低访存时延。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
另一方面,本发明实施例提供一种计算机存储介质,包括指令,当其在布隆过滤器上运行时,使得布隆过滤器执行S102,S105,S103,S106,S104、S1041,S107,S1043,S1044、步骤S101,S1042。和/或用于本文所描述的技术的其它由布隆过滤器所执行的过程。具体的各个步骤之间的执行顺序详见上述实施例,本申请在此不再赘述。
再一方面,本发明实施例提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;布隆过滤器中的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得布隆过滤器实施上述实施例中的步骤执行S102,S105,S103,S106,S104、S1041,S107,S1043,S1044、步骤S101,S1042。和/或用于本文所描述的技术的其它由布隆过滤器所执行的过程。需要说明的是,上述步骤的具体执行顺序可以参见上述实施例中的描述,本申请在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (21)

1.一种布隆过滤器中数据的处理方法,其特征在于,包括:
获取关键值;
利用K个不同的哈希函数对所述关键值分别作哈希运算,得到K个哈希值;
根据所述K个哈希值,计算得到K个地址,所述K个地址中每个地址与目标数据块包括的K个Word字中的一个Word一一关联,不同的地址与不同的Word关联,一个所述地址用于指示与所述一个地址关联的Word中的一个比特位;
利用第一哈希函数对所述关键值作哈希运算,以计算得到第一哈希值,所述第一哈希函数与K个哈希函数不同;
根据所述第一哈希值计算得到第一地址;
根据所述第一地址从所述布隆过滤器包括的多个数据块中确定与所述第一地址关联的目标数据块;
根据所述K个地址,设置所述每个地址在各自关联的Word中所指示的比特位上的参数,或者,读取所述每个地址在各自关联的Word中所指示的比特位上的参数,以根据读取的参数确定所述关键值是否属于所述布隆过滤器。
2.根据权利要求1所述的方法,其特征在于,所述根据所述K个地址,设置所述每个地址在各自关联的Word中所指示的比特位上的参数,包括:
对所述目标数据块包括的K个Word中每个Word包括的比特位,执行下述步骤以设置每个Word包括的一个比特位的参数:
将所述K个地址中一个地址关联的Word中该地址所指示的比特位的参数设置为第一参数。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述K个地址,读取所述每个地址在各自关联的Word中所指示的比特位上的参数,并根据读取的参数确定所述关键值是否属于所述布隆过滤器,包括:
根据所述K个地址,从所述目标数据块包括的K个Word中读取所述K个地址中每个地址在各自所关联的Word中所指示的比特位上的参数;
确定所述K个地址在各自关联的Word中所指示的比特位上的参数均为第一参数,则确定所述关键值属于所述布隆过滤器。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
确定所述K个地址中每个地址在各自关联的Word中所指示的比特位中存在至少一个比特位上的参数为第二参数,则确定所述关键值不属于所述布隆过滤器,所述第二参数与所述第一参数不同。
5.根据权利要求1-2、4任一项所述的方法,其特征在于,所述布隆过滤器包括至少一个数据块,所述至少一个数据块中每个数据块包括K个地址连续且独立的Word字,所述K个Word中每个Word包括w个比特位,所述w为大于或等于1的整数。
6.根据权利要求1-2、4任一项所述的方法,其特征在于,所述利用K个不同的哈希函数对所述关键值分别作哈希运算,计算得到K个哈希值,包括:
利用K个哈希计算单元分别对所述关键值作并行哈希函数计算,以获得K个哈希值,一个哈希计算单元用于根据所述关键值获得一个哈希值。
7.根据权利要求1-2、4任一项所述的方法,其特征在于,所述根据所述K个哈希值,计算得到K个地址,包括:
根据所述K个哈希值,利用K个地址计算单元并行计算,以计算得到K个地址。
8.根据权利要求1-2、4任一项所述的方法,其特征在于,所述根据所述K个地址,设置所述K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,包括:
根据所述K个地址,并行设置所述K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,
或者,读取所述中每个地址在各自关联的Word中所指示的比特位上的参数,并根据读取的参数确定所述关键值是否属于所述布隆过滤器,包括:
根据所述K个地址,并行读取所述K个地址中每个地址在各自关联的Word中所指示的比特位上的参数;
在确定所述K个地址中每个地址在各自关联的Word中所指示的比特位上的参数均为第一参数时,则确定所述关键值属于所述布隆过滤器。
9.一种布隆过滤器,其特征在于,包括:
获取单元,用于获取关键值;
第一计算单元,用于利用K个不同的哈希函数分别对所述关键值作哈希运算,得到K个哈希值;
所述第一计算单元,还用于利用第一哈希函数对所述关键值作哈希运算,以计算得到第一哈希值,所述第一哈希函数与K个哈希函数不同;
第二计算单元,用于根据所述K个哈希值,计算得到K个地址,所述K个地址中每个地址与目标数据块包括的K个Word字中的一个Word一一关联,不同的地址与不同的Word关联,一个所述地址用于指示与所述一个地址关联的Word中的一个比特位;
所述第二计算单元,还用于根据所述第一哈希值计算得到第一地址;
处理单元,用于根据所述K个地址,设置所述K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,或者,读取所述K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,并根据读取的参数确定所述关键值是否属于所述布隆过滤器;
所述布隆过滤器还包括:确定单元,用于根据所述第一地址从所述布隆过滤器包括的多个数据块中确定与所述第一地址关联的目标数据块。
10.根据权利要求8或9所述的布隆过滤器,其特征在于,所述处理单元,具体用于对所述目标数据块包括的K个Word中每个Word包括的比特位,执行下述步骤以设置每个Word包括的比特位的参数:
将所述K个地址中一个地址关联的Word中该地址所指示的比特位的参数设置为第一参数。
11.根据权利要求9或10所述的布隆过滤器,其特征在于,所述获取单元,还用于根据所述K个地址,从所述目标数据块包括的K个Word中读取所述K个地址中每个地址在各自关联的Word中所指示的比特位上的参数;
确定单元,具体用于:确定所述K个地址中每个地址在各自关联的Word中所指示的比特位上的参数均为第一参数,则确定所述关键值属于所述布隆过滤器。
12.根据权利要求11所述的布隆过滤器,其特征在于,所述确定单元还具体用于:确定所述K个地址在各自关联的Word中所指示的比特位中存在至少一个比特位上的参数为第二参数,则确定所述关键值不属于所述布隆过滤器,所述第二参数与所述第一参数不同。
13.根据权利要求9-10、12任一项所述的布隆过滤器,其特征在于,所述布隆过滤器包括至少一个数据块,所述至少一个数据块中每个数据块包括K个Word字,所述K个Word字中每个Word字包括w个比特位,所述w为大于或等于1的整数。
14.根据权利要求9-10、12任一项所述的布隆过滤器,其特征在于,所述第一计算单元,包括K个哈希计算单元,所述第一计算单元具体用于,利用K个哈希计算单元分别对所述关键值作并行哈希函数计算,以获得K个哈希值,一个哈希计算单元用于根据所述关键值获得一个哈希值。
15.根据权利要求9-10、12任一项所述的布隆过滤器,其特征在于,所述第二计算单元包括K个地址计算单元,所述第二计算单元具体用于根据所述K个哈希值,利用K个地址计算单元并行计算,以计算得到K个地址。
16.根据权利要求9-10、12任一项所述的布隆过滤器,其特征在于,所述处理单元,具体用于根据所述K个地址,并行设置所述K个地址中每个地址在各自关联的Word中所指示的比特位上的参数,
或者,所述获取单元,还用于根据所述K个地址,并行读取所述K个地址在各自关联的Word中所指示的比特位上的参数;
确定单元,还用于在确定所述K个地址在各自关联的Word中所指示的比特位上的参数均为第一参数,则确定所述关键值属于所述布隆过滤器。
17.一种路由查找系统,其特征在于,所述路由查找系统包括路由表,所述路由表包括一个或多个前缀组,所述前缀组采用如权利要求9-16任一项所述的布隆过滤器来存储。
18.一种每流测量系统,其特征在于,所述每流测量系统SRAM Module使用如权利要求9-16任一项所述的布隆过滤器来记录每个流的状态。
19.一种深度包检测DPI系统,其特征在于,所DPI系统包括一个或多个安全特征组,所述安全特征组中包括一个或多个安全特征,所述安全特征组中包括的一个或多个安全特征采用如权利要求9-16任一项所述的布隆过滤器来存储。
20.一种布隆过滤器,其特征在于,包括:存储器、处理器、总线和通信接口,存储器中存储代码和数据,处理器与存储器通过总线连接,处理器运行存储器中的代码使得所述布隆过滤器执行如权利要求1-8中任意一项权利要求所述的布隆过滤器中数据的处理方法。
21.一种计算机可读存储介质,包括指令,当所述指令在布隆过滤器上运行时,使得布隆过滤器执行权利要求1-8中任意一项所述的布隆过滤器中数据的处理方法。
CN201710444590.0A 2017-06-13 2017-06-13 一种布隆过滤器中数据的处理方法以及布隆过滤器 Active CN109145158B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201710444590.0A CN109145158B (zh) 2017-06-13 2017-06-13 一种布隆过滤器中数据的处理方法以及布隆过滤器
EP18818792.6A EP3493084B1 (en) 2017-06-13 2018-04-03 Method for processing data in bloom filter and bloom filter
PCT/CN2018/081768 WO2018228030A1 (zh) 2017-06-13 2018-04-03 一种布隆过滤器中数据的处理方法以及布隆过滤器
US16/409,629 US20190266193A1 (en) 2017-06-13 2019-05-10 Data processing method for bloom filter, and bloom filter

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710444590.0A CN109145158B (zh) 2017-06-13 2017-06-13 一种布隆过滤器中数据的处理方法以及布隆过滤器

Publications (2)

Publication Number Publication Date
CN109145158A CN109145158A (zh) 2019-01-04
CN109145158B true CN109145158B (zh) 2021-07-20

Family

ID=64660398

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710444590.0A Active CN109145158B (zh) 2017-06-13 2017-06-13 一种布隆过滤器中数据的处理方法以及布隆过滤器

Country Status (4)

Country Link
US (1) US20190266193A1 (zh)
EP (1) EP3493084B1 (zh)
CN (1) CN109145158B (zh)
WO (1) WO2018228030A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110135196B (zh) * 2019-05-10 2020-07-17 内蒙古工业大学 一种基于输入数据压缩表示关联分析的数据融合防篡改方法
US11210280B2 (en) * 2019-06-04 2021-12-28 Alibaba Group Holding Limited Systems and methods for fast bloom filter operations
CN112839018B (zh) * 2019-11-25 2022-11-18 华为技术有限公司 一种度数值生成方法以及相关设备
CN111062013B (zh) * 2019-12-18 2022-06-03 北京爱奇艺科技有限公司 一种账号过滤方法、装置、电子设备及机器可读存储介质
CN111291126B (zh) * 2020-02-28 2023-09-05 深信服科技股份有限公司 数据回收方法、装置、设备及存储介质
CN111563199B (zh) * 2020-04-26 2023-10-10 北京奇艺世纪科技有限公司 一种数据处理方法及装置
CN112364017A (zh) * 2020-10-28 2021-02-12 中标慧安信息技术股份有限公司 一种利用布隆过滤器过滤黑白名单的方法
CN112445771A (zh) * 2020-12-10 2021-03-05 阿米华晟数据科技(江苏)有限公司 网络流量的数据处理方法、装置、设备及存储介质
CN112714040B (zh) * 2020-12-11 2022-10-28 深圳供电局有限公司 全息报文检测方法、装置、设备及存储介质
CN112905575A (zh) * 2020-12-30 2021-06-04 创盛视联数码科技(北京)有限公司 数据采集的方法、系统、存储介质及电子设备
CN113051567A (zh) * 2021-03-29 2021-06-29 深信服科技股份有限公司 一种病毒检测方法、装置、电子设备及存储介质
CN113099255B (zh) * 2021-04-01 2023-05-30 北京沃东天骏信息技术有限公司 数据生成方法和装置
CN113328947B (zh) * 2021-04-26 2022-08-23 中国科学院计算机网络信息中心 基于应用可控前缀扩展布隆过滤器的可变长路由查找方法及装置
CN113315705B (zh) * 2021-04-26 2022-07-15 中国科学院计算机网络信息中心 基于单次哈希布隆过滤器的Flexible IP寻址方法及装置
CN115454983B (zh) * 2022-09-13 2023-07-14 浪潮卓数大数据产业发展有限公司 一种基于布隆过滤器的海量Hbase数据去重方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103279532A (zh) * 2013-05-31 2013-09-04 北京鹏宇成软件技术有限公司 多集合元素去重并标识所属集合的过滤系统及其方法
CN105681280A (zh) * 2015-12-29 2016-06-15 西安电子科技大学 一种云环境中基于中文的可搜索加密方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620781B2 (en) * 2006-12-19 2009-11-17 Intel Corporation Efficient Bloom filter
US8032529B2 (en) * 2007-04-12 2011-10-04 Cisco Technology, Inc. Enhanced bloom filters
US8484438B2 (en) * 2009-06-29 2013-07-09 Oracle America, Inc. Hierarchical bloom filters for facilitating concurrency control
CN101901248B (zh) * 2010-04-07 2012-08-15 北京星网锐捷网络技术有限公司 一种布隆过滤器的生成、更新以及查询元素方法和装置
US8762396B2 (en) * 2011-12-22 2014-06-24 Sap Ag Dynamic, hierarchical bloom filters for network data routing
CN106469225B (zh) * 2016-09-28 2019-04-16 厦门嵘拓物联科技有限公司 一种智能车间管理中海量制造数据访问的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103279532A (zh) * 2013-05-31 2013-09-04 北京鹏宇成软件技术有限公司 多集合元素去重并标识所属集合的过滤系统及其方法
CN105681280A (zh) * 2015-12-29 2016-06-15 西安电子科技大学 一种云环境中基于中文的可搜索加密方法

Also Published As

Publication number Publication date
EP3493084A4 (en) 2019-10-09
EP3493084B1 (en) 2021-11-03
US20190266193A1 (en) 2019-08-29
CN109145158A (zh) 2019-01-04
WO2018228030A1 (zh) 2018-12-20
EP3493084A1 (en) 2019-06-05

Similar Documents

Publication Publication Date Title
CN109145158B (zh) 一种布隆过滤器中数据的处理方法以及布隆过滤器
US11681529B2 (en) Apparatuses, methods, and systems for access synchronization in a shared memory
US11706020B2 (en) Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms
EP3057272B1 (en) Technologies for concurrency of cuckoo hashing flow lookup
US8301788B2 (en) Deterministic finite automata (DFA) instruction
US11704036B2 (en) Deduplication decision based on metrics
US20060069872A1 (en) Deterministic finite automata (DFA) processing
US20200136971A1 (en) Hash-table lookup with controlled latency
US10671530B1 (en) High-speed and memory-efficient flow cache for network flow processors
TW201342110A (zh) 在狀態機晶格中之計數器操作
US20180150260A1 (en) Key-based memory deduplication protection
CN114356223A (zh) 存储器的访问方法及装置、芯片、电子设备
US8782375B2 (en) Hash-based managing of storage identifiers
US20160203149A1 (en) File scanning method and apparatus related application
CN107197000B (zh) 静态动态混合缓存方法、装置及系统
US20200226099A1 (en) Method and apparatus for improving hash searching throughput in the event of hash collisions
CN107003932B (zh) 多核处理器系统的缓存目录处理方法和目录控制器
US7657654B2 (en) Hashing assist for network processors
US9703484B2 (en) Memory with compressed key
Chu et al. IP address lookup by using GPU
CN113051569B (zh) 一种病毒检测方法、装置、电子设备及存储介质
US20220012010A1 (en) Reformatting Matrices to Improve Computing Efficiency
WO2024016863A1 (zh) 规则查找方法、装置、设备及计算机可读存储介质
US20220113969A1 (en) Techniques for use of a large scale multi-literal matching algorithm
Mahmud et al. Improving counting sort algorithm via data locality

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