CN101655861B - 基于双计数布鲁姆过滤器的哈希方法和哈希装置 - Google Patents

基于双计数布鲁姆过滤器的哈希方法和哈希装置 Download PDF

Info

Publication number
CN101655861B
CN101655861B CN200910092804.8A CN200910092804A CN101655861B CN 101655861 B CN101655861 B CN 101655861B CN 200910092804 A CN200910092804 A CN 200910092804A CN 101655861 B CN101655861 B CN 101655861B
Authority
CN
China
Prior art keywords
bucket
candidate
target
counter
deletion
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
CN200910092804.8A
Other languages
English (en)
Other versions
CN101655861A (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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN200910092804.8A priority Critical patent/CN101655861B/zh
Publication of CN101655861A publication Critical patent/CN101655861A/zh
Application granted granted Critical
Publication of CN101655861B publication Critical patent/CN101655861B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种哈希方法,用于在哈希表上实现哈希插入操作;哈希表包括多个存储桶,存储桶包括插入计数器和删除计数器,插入计数器用于记录所在存储桶中所插入元素的个数,删除计数器用于记录所在存储桶中删除元素的个数;该方法包括:将所要操作的元素按照哈希函数映射到哈希表的至少一个存储桶,存储桶被称为候选存储桶;根据目标存储桶的选取原则从候选存储桶中找出目标存储桶;在目标存储桶中插入所要插入的元素;判断新插入的元素是否对候选存储桶中先前已存储元素的存储位置造成影响,若已存储元素的存储位置已经不再满足目标存储桶的选取原则,则对已存储元素的存储位置重新进行调整;还包括累加所述候选存储桶的插入计数器的值的步骤。

Description

基于双计数布鲁姆过滤器的哈希方法和哈希装置
技术领域
本发明涉及数据查询领域,特别涉及一种基于双计数布鲁姆过滤器的哈希方法和哈希装置。
背景技术
哈希表是一种将关键值与数据值相关联的数据结构,它通过哈希函数将关键值映射到表中的一个存储位置,从而访问相关的数据值。哈希表在IP查找、数据包分类、深度数据包检测等多个领域中具有广泛的应用。哈希表虽然有助于数据的快速查找,但当哈希表的负荷较大时,会产生多个关键值映射到哈希表中同一存储位置的现象,使得哈希表频繁发生冲突,增加基本操作的访问时间,降低哈希表的查找性能。为了减少哈希表冲突所带来的不利影响,本领域技术人员提出了包括线性链接、线性探测和双重哈希在内的多种冲突解决方法。这些冲突解决方法虽然在一定程度上能够维持哈希表的平均查找性能,但仍然无法有效克服最坏情况性能降低的问题,使得哈希表的最坏情况性能成为提高网络数据包处理速度的瓶颈。
在参考文献1“H.Song,S.Dharmapurikar,J.Turner,J.Lockwood,“Fasthash table lookup using extended bloom filter:An aid to network processing,”Proceedings of ACM SIGCOMM,2005”中,Song等人提出了一种能够提高哈希表的最坏情况查找性能的快速哈希表(Fast Hash Table,FHT)。在图1所示的FHT中,所述的FHT由多个存储桶组成。每个存储桶包括一个计数器和一个片外共享链接表。所述计数器用于记录所在存储桶中所要存储元素的个数,而所述的片外共享链接表则用于记录所在存储桶中所要存储元素的具体信息。FHT中所有存储桶的计数器组合在一起形成计数布鲁姆过滤器(Counting Bloom Filters,CBFs),该计数布鲁姆过滤器采用多个哈希函数来支持近似查找。为了加快查找速度,所述计数布鲁姆过滤器通常在快速但小容量的片上存储器上实现,因而也被称为片上计数布鲁姆过滤器。存储桶中的片外共享链接表则位于片外存储器中,与片上存储器相比,片外存储器的容量更大,但访问速度较慢。FHT利用片上计数布鲁姆过滤器(Counting Bloom Filters,CBFs)来快速查询元素是否在哈希表中,从而消除不必要的片外存储器访问次数,进而提高哈希表的最坏情况查找性能。
通过FHT存储元素时,FHT将元素哈希映射到k个存储桶,并指向k个片外共享链接表。当查询元素时,FHT从哈希映射的k个存储桶中选择一个计数器值和桶索引值最小的存储桶,并在该存储桶的片外链接表中查找元素,从而减少片外存储器的查找时间。但是,当哈希表的元素是动态变化时,FHT存在更新开销高和片外存储需求大等问题。例如,图1中给出了在FHT中插入元素和删除元素的一个范例。在图1(a)中,需要在FHT中插入元素D。在插入过程中,由哈希函数的映射关系得到桶索引号为4、8、9的候选存储桶,将这些候选存储桶的计数器的值累加1,并将这些存储桶的尾指针指向共享元素D。由于第9个存储桶的计数器值小于从元素A到元素D的共享链接表的长度,FHT复制一个共享元素D,插入到第9个存储桶的共享链接表的表头,并删除虚线所示的其他无效指针。在图1(b)中,需要在FHT中删除元素D。在删除过程中,由哈希函数的映射关系得到桶索引号为4、8、9的候选存储桶,将这些候选存储桶的计数器的值累减1,并遍历这些存储桶的共享链接表,查找并删除两个共享元素D。从图1所示的上述操作可以看出,在FHT上实现哈希操作具有以下缺陷:
首先,FHT的更新开销高,其插入和删除操作的平均片外存储器访问次数分别为O(k+nk2/m)和O(k),其中n为元素个数,m为存储桶个数,k为哈希函数个数。特别是,当插入元素时,FHT需要至多遍历k个片外共享链接表,且每个链接表的平均长度为nk/m,这将导致频繁访问低速片外存储器,降低哈希表的更新操作性能。
其次,FHT的片外存储需求大,其片外存储器需要存储1-3倍的片外元素副本。当插入元素时,FHT的插入操作需要复制多个片外共享元素,用于保证每个存储桶的计数器值等于其指向的片外链接表长度。
总之,当哈希表是动态变化时,FHT存在时间和空间低效等问题,难以适应高速数据包处理和其他快速查找应用。
发明内容
本发明的目的是克服现有的哈希表难以适应高速数据包处理和快速查找应用的缺陷,从而提供一种快速、高效的哈希方法以及相应的哈希装置。
为了实现上述目的,本发明提供了一种哈希装置,包括存储桶、候选存储桶查找模块、目标存储桶查找模块以及元素插入模块;其中,所述的存储桶包括插入计数器和删除计数器,所述插入计数器用于记录所在存储桶中所插入元素的个数,所述删除计数器用于记录所在存储桶中删除元素的个数;
所述的候选存储桶查找模块用于将所要操作的元素按照哈希函数映射到一个存储桶,所述存储桶被称为候选存储桶;
所述的目标存储桶查找模块用于根据目标存储桶的选取原则从所述候选存储桶中找出目标存储桶;所述选取原则包括从所述候选存储桶中选出插入计数器值与删除计数器值之和最小的候选存储桶作为目标存储桶,若所能得到的插入计数器值与删除计数器值之和最小的候选存储桶多余一个,则根据存储桶索引值选择目标存储桶;
所述的元素插入模块用于在所述目标存储桶中插入所要插入的元素;用于判断新插入的元素是否对所述候选存储桶中先前已存储元素的存储位置造成影响,若已存储元素的存储位置已经不再满足所述的目标存储桶的选取原则,则根据所述的目标存储桶的选取原则对所述已存储元素的存储位置重新进行调整;用于累加所述候选存储桶的插入计数器的值。
上述技术方案中,还包括元素删除模块,该模块用于从所述目标存储桶中删除所要删除的元素;用于累减所述候选存储桶的插入计数器的值以及累加所述候选存储桶的删除计数器的值。
上述技术方案中,还包括元素查询模块,该模块用于从所述目标存储桶中找出所要查询的元素,并输出查询结果。
本发明还提供了一种哈希方法,用于在哈希表上实现哈希插入操作;所述哈希表包括多个存储桶,所述存储桶包括插入计数器和删除计数器,所述插入计数器用于记录所在存储桶中所插入元素的个数,所述删除计数器用于记录所在存储桶中删除元素的个数;该方法包括:
步骤1)、将所要操作的元素按照哈希函数映射到所述哈希表的至少一个存储桶,所述存储桶被称为候选存储桶;
步骤2)、根据目标存储桶的选取原则从所述候选存储桶中找出目标存储桶;所述选取原则包括从所述候选存储桶中选出插入计数器值与删除计数器值之和最小的候选存储桶作为目标存储桶,若所能得到的插入计数器值与删除计数器值之和最小的候选存储桶多余一个,则根据存储桶索引值选择目标存储桶;
步骤3)、在所述目标存储桶中插入所要插入的元素;
步骤4)、判断新插入的元素是否对所述候选存储桶中先前已存储元素的存储位置造成影响,若已存储元素的存储位置已经不再满足所述的目标存储桶的选取原则,则根据所述的目标存储桶的选取原则对所述已存储元素的存储位置重新进行调整;
其中,在所述的步骤2)之前或之后还包括累加所述候选存储桶的插入计数器的值的步骤。
上述技术方案中,在所述的目标存储桶的选择原则中,在根据存储桶索引值选择目标存储桶时,选择存储桶索引值最小的候选存储桶作为目标存储桶。
本发明又提供了一种哈希方法,用于在哈希表上实现哈希删除操作;所述哈希表包括多个存储桶,所述存储桶包括插入计数器和删除计数器,所述插入计数器用于记录所在存储桶中所插入元素的个数,所述删除计数器用于记录所在存储桶中删除元素的个数;该方法包括:
步骤1)、将所要操作的元素按照哈希函数映射到所述哈希表的至少一个存储桶,所述存储桶被称为候选存储桶;
步骤2)、根据目标存储桶的选取原则从所述候选存储桶中找出目标存储桶;所述选取原则包括从所述候选存储桶中选出插入计数器值与删除计数器值之和最小的候选存储桶作为目标存储桶,若所能得到的插入计数器值与删除计数器值之和最小的候选存储桶多余一个,则根据存储桶索引值选择目标存储桶;
步骤3)、从所述目标存储桶中删除所要删除的元素;
其中,在所述的步骤2)之前或之后还包括累减所述候选存储桶的插入计数器的值以及累加所述候选存储桶的删除计数器的值的步骤。
上述技术方案中,在所述的目标存储桶的选择原则中,在根据存储桶索引值选择目标存储桶时,选择存储桶索引值最小的候选存储桶作为目标存储桶。
本发明还提供了一种哈希方法,用于在哈希表上实现哈希查询操作;所述哈希表包括多个存储桶,所述存储桶包括插入计数器和删除计数器,所述插入计数器用于记录所在存储桶中所插入元素的个数,所述删除计数器用于记录所在存储桶中删除元素的个数;该方法包括:
步骤1)、将所要操作的元素按照哈希函数映射到所述哈希表的至少一个存储桶,所述存储桶被称为候选存储桶;
步骤2)、根据目标存储桶的选取原则从所述候选存储桶中找出目标存储桶;所述选取原则包括从所述候选存储桶中选出插入计数器值与删除计数器值之和最小的候选存储桶作为目标存储桶,若所能得到的插入计数器值与删除计数器值之和最小的候选存储桶多余一个,则根据存储桶索引值选择目标存储桶;
步骤3)、从所述目标存储桶中找出所要查询的元素,并输出查询结果。
上述技术方案中,在所述的目标存储桶的选择原则中,在根据存储桶索引值选择目标存储桶时,选择存储桶索引值最小的候选存储桶作为目标存储桶。
本发明还提供了一种哈希表,所述哈希表包括多个存储桶,所述存储桶包括插入计数器和删除计数器,所述插入计数器用于记录所在存储桶中所插入元素的个数,所述删除计数器用于记录所在存储桶中删除元素的个数;其中,
在所述哈希表中插入元素时,所述插入计数器的值增加,而所述删除计数器的值不变;
在所述哈希表中删除元素时,所述插入计数器的值减少,而所述删除计数器的值增加,且所述插入计数器的值与所述删除计数器的值在删除元素前后不发生变化。
本发明的优点在于:
本发明能够显著减少网络数据包处理的更新开销和片外存储需求,仅需要增加少量的片上存储空间,在时间效率和空间效率上有很大的提高。
附图说明
图1为快速哈希表的插入和删除操作实施例示意图;
其中图1(a)为插入元素D的示意图;
其中图1(b)为删除元素D的示意图;
图2为基于双计数布鲁姆过滤器的哈希表的插入操作实施例示意图;
其中图2(a)为插入元素A的示意图;
其中图2(b)为插入元素B的示意图;
图3为基于双计数布鲁姆过滤器的哈希表的删除操作实施例示意图;
图4为基于双计数布鲁姆过滤器的哈希表的查询操作实施例示意图;
图5为FHT和DBHT在不同元素个数下插入操作的平均片外存储器访问次数的示意图;
图6为FHT和DBHT在不同元素个数下删除操作的平均片外存储器访问次数的示意图;
图7为FHT和DBHT在不同元素个数下查询操作的平均片外存储器访问次数的示意图;
图8为FHT和DBHT所需要片外存储空间的大小的示意图;
图9为FHT和DBHT所需要片上存储空间的大小的示意图;
图10为FHT和DBHT在不同哈希函数个数下插入操作的平均片外存储器访问次数的示意图;
图11为FHT和DBHT在不同哈希函数个数下删除操作的平均片外存储器访问次数的示意图;
图12为在本发明的基于双计数布鲁姆过滤器的哈希表中所做的插入操作的流程图;
图13为在本发明的基于双计数布鲁姆过滤器的哈希表中所做的删除操作的流程图;
图14为在本发明的基于双计数布鲁姆过滤器的哈希表中所做的查询操作的流程图。
具体实施方式
下面结合附图和具体实施方式就本发明进行详细说明。
在对本发明的哈希方法进行说明前,首先对该方法中所采用的哈希表进行说明。本发明的哈希表包括多个存储桶,每个存储桶包括有两个计数器,一个计数器被称为插入计数器,用于记录所在存储桶中插入元素的个数。另一个计数器被称为删除计数器,用于记录所在存储桶中删除元素的个数。每个存储桶还包括有一个用于存储所要存储的元素的具体信息的片外元素链接表。所述哈希表中,所有存储桶的插入计数器和删除计数器形成了一个双计数布鲁姆过滤器,因而本发明的哈希表又被称为基于双计数布鲁姆过滤器的哈希表(Double-counter Bloom filtered Hash Table,DBHT),该哈希表可在片上存储器中实现。在图2中示出了本发明中所采用哈希表的一个实施例,从该实施例中可以看出,该哈希表的双计数布鲁姆过滤器的左侧为删除计数器,而其右侧为插入计数器。在该哈希表中一共有12个存储桶,为了区别各个存储桶,为这些存储桶编写相应的序号,如图中的1、2、3、……、12等,这些序号也被称为桶索引号。当在本发明哈希表中插入元素时,哈希映射到相应的存储桶,这些存储桶的插入计数器值会发生变化,而删除计数器值不会有任何改变。但当在本发明哈希表中中删除元素时,则不仅哈希映射的存储桶的插入计数器值会发生变化,删除计数器值也会发生变化,而且插入计数器值与删除计数器值之和在元素删除操作前后不会改变。
在本发明的基于双计数布鲁姆过滤器的哈希表的基础上,可实现对元素的插入、删除、查询等哈希操作。下面分别就上述操作的实现过程加以说明。
当要在哈希表中插入一个元素x时,所要插入的元素x根据哈希函数可能会映射到k(k≥1)个候选存储桶。为这些被映射到的k个候选存储桶中的插入计数器的值都累加1。然后从k个候选存储桶中找出插入计数器值与删除计数器值之和最小的存储桶,如果所能找到的存储桶的数目多于一个,则根据桶索引值找出目标存储桶。在一个实施例中,取桶索引值最小的存储桶作为目标存储桶,但在其它实施例中,也可以采用其它的桶索引值选取方法。在找到目标存储桶后,就可以在该存储桶中插入所述的元素x。在元素插入过程中,由于相关的k个候选存储桶的插入计数器的值都会发生变化,因此一个元素的插入可能会对这k个候选存储中已经存储的其他元素的存储位置造成影响。一旦对其他元素的存储位置造成影响,对受影响元素重复元素插入时的存储桶查找过程,重新确定受影响元素所要插入的存储桶。需要说明的是,虽然在本实施例中,先改变候选存储桶的插入计数器值,再选择目标存储桶,但在其它实施例中,也可以先选择目标存储桶,再改变所有候选存储桶的插入计数器值。
以图2为例,在图2(a)中,需要对元素A做插入操作。根据哈希函数的计算结果可以知道,该元素可以插入的候选存储桶包括桶索引号为1、3、9的存储桶。这些存储桶中的插入计数器的初始值分别为0、0、0。由于元素A可能会插入这些存储桶,因此,它们的插入计数器的值累加后变为1、1、1,如图2所示。上述三个存储桶的删除计数器的值分别为2、1、1,根据目标存储桶的查找规则,首先计算候选存储桶的插入计数器值和删除计数器值之和。1号存储桶的计算结果为3,3号存储桶的计算结果为2,9号存储桶的计算结果为2。根据前述说明,首先排除1号存储桶,继续对3号、9号存储桶进行判断。很显然,3号存储桶的桶索引值小于9号索引桶,因此选择3号存储桶作为目标存储桶。将元素A插入到3号存储桶中。
在图2(b)中,继续对元素B做插入操作。同样由哈希函数的计算结果知道,元素B的候选存储桶为桶索引号为1、3、6的存储桶。将这些存储桶的插入计数器值累加1,按桶索引顺序知道它们的插入计数器值分别为2、2、1。根据查找规则,可以知道,元素B应当插入到6号存储桶中。但此时,由于在插入元素B的过程中,1、3号存储桶的插入计数器值都发生了变化,如果重新计算1、3、9存储桶的插入计数器值和删除计数器值之和,所得到的结果变为4、3、2。按照前述的查找规则,元素A在此时最合适的插入位置应该是9号存储桶,而非原来的3号。因此,将元素A从3号存储桶转移到9号存储桶。
当要在哈希表中删除元素x时,首先需要对所要删除的元素进行定位。根据哈希函数的计算结果可以知道元素x可能被存储在k(k≥1)个候选存储桶中的一个,因此需要从这k个候选存储桶中找出唯一的目标存储桶。在找出目标存储桶之前,还要将这k个候选存储桶的插入计数器值减1,将这k个候选存储桶的删除计数器值累加1。目标存储桶的选择方法与前述在插入元素时所采用的查找规则类似,即从k个候选存储桶中找出插入计数器值与删除计数器值之和最小的存储桶,如果所能找到的存储桶的数目多于一个,则找出其中桶索引值最小的存储桶作为目标存储桶。在得到目标存储桶以后,从该存储桶中找出所要删除的元素x,并将其删除。由于k个候选存储桶中的插入计数器值在减1的同时,删除计数器值加1,因此删除计数器值与插入计数器值之和不会发生变化,对一个元素的删除操作也就不会对这k个候选存储桶中其他已存储元素的存储位置造成影响。需要说明的是,虽然在本实施例中,先改变候选存储桶的插入计数器和删除计数器的值,再选择目标存储桶,但在其它实施例中,也可以先选择目标存储桶,再改变所有候选存储桶的插入计数器和删除计数器的值。
以图3为例,与图2所示哈希表相同的基于双计数布鲁姆过滤器的哈希表根据前述的插入方法已经插入了元素A、B、C、D,其中,元素A被存储在9号存储桶中,元素B被存储在6号存储桶中,元素C被存储在11号存储桶中,元素D被存储在4号存储桶中。现在要将其中的元素B删除。根据哈希函数的计算结果可以知道,元素B的候选存储桶包括桶索引号为1、3、6的存储桶。1号存储桶中插入计数器的原值为2,删除计数器的原值为2;3号存储桶中插入计数器的原值为3,删除计数器的原值为1;6号存储桶中插入计数器的原值为2,删除计数器的原值为1。在得知元素B即将被删除后,上述三个候选存储桶中插入计数器的值分别减1,删除计数器的值分别加1。即,1号存储桶中插入计数器的值变为1,删除计数器的值变为3;3号索引桶中插入计数器的值变为2,删除计数器的值变为2;6号存储桶中插入计数器的值变为1,删除计数器的值变为2。参考前述的目标存储桶查找规则,6号存储桶的插入计数器值与删除计数器值之和为3,小于1号存储桶和3号存储桶的对应值。因此,6号存储桶为目标存储桶,从该存储桶中删除元素B。与此同时,可以看出,1号存储桶还是元素A的候选存储桶,3号存储桶还是元素A、元素C的候选存储桶,6号存储桶还是元素C的候选存储桶。由于在删除元素B的过程中,这些存储桶的插入计数器值与删除计数器值之和没有发生变化,相关元素A、元素C若利用前述查找规则重新计算目标存储桶,则计算结果不会发生改变,因此也就不会对有关的元素A、元素C的存储位置造成影响。
当要在哈希表中查询元素x时,与前述删除操作中找出所要删除的元素所在目标存储桶的相关操作类似,只是在整个查询过程中,候选存储桶的插入计数器值和删除计数器值都不会发生变化。
本发明还提供了一种与上述哈希方法相对应的哈希装置。该哈希装置包括存储桶、候选存储桶查找模块、目标存储桶查找模块以及元素插入模块;其中,所述的存储桶包括插入计数器和删除计数器,所述插入计数器用于记录所在存储桶中所插入元素的个数,所述删除计数器用于记录所在存储桶中删除元素的个数;
所述的候选存储桶查找模块用于将所要操作的元素按照哈希函数映射到一个存储桶,所述存储桶被称为候选存储桶;
所述的目标存储桶查找模块用于根据目标存储桶的选取原则从所述候选存储桶中找出目标存储桶;所述选取原则包括从所述候选存储桶中选出插入计数器值与删除计数器值之和最小的候选存储桶作为目标存储桶,若所能得到的插入计数器值与删除计数器值之和最小的候选存储桶多余一个,则根据存储桶索引值选择目标存储桶;
所述的元素插入模块用于在所述目标存储桶中插入所要插入的元素;用于判断新插入的元素是否对所述候选存储桶中先前已存储元素的存储位置造成影响,若已存储元素的存储位置已经不再满足所述的目标存储桶的选取原则,则根据所述的目标存储桶的选取原则对所述已存储元素的存储位置重新进行调整;用于累加所述候选存储桶的插入计数器的值。
在一个实施例中,该哈希装置还包括元素删除模块,该模块用于从所述目标存储桶中删除所要删除的元素;用于累减所述候选存储桶的插入计数器的值以及累加所述候选存储桶的删除计数器的值。
在另一个实施例中,该哈希装置还包括元素查询模块,该模块用于从所述目标存储桶中找出所要查询的元素,并输出查询结果。
图4在图3操作结果的基础上给出了对元素A做查询操作的范例。根据哈希函数计算结果可以知道元素A的候选存储桶包括桶索引号为1、3、9的存储桶,上述三个存储桶的插入计数器值和删除计时器值之和依次分别为4、4、3。9号存储桶的插入计数器值和删除计时器值之和最小,因此在9号存储桶中查询元素A。
本发明采用DBHT所实现的哈希操作在时间复杂度上有明显的降低。表1给出了背景技术中所提到的快速哈希表(FHT)和本发明的基于双计数布鲁姆过滤器的哈希表(DBHT)的插入、删除和查询操作的平均片外存储器访问次数:
  插入   删除   查询
  FHT   O(nk2/m+k)   O(k)   O(1)
  DBHT   O(1+2nk/m)   O(1)   O(1)
表1
DBHT的时间复杂度是指插入、删除和查询操作的平均片外存储器访问次数。在FPGA和ASIC等现代嵌入式存储器中,由于片外存储器的访问时间比片上存储器慢15-30倍,因此平均片外存储器访问次数是哈希表设计与硬件实现的关键性能指标。结合上面的表1可以看出,当插入元素时,FHT将哈希映射的k个存储桶指向片外链接表,其插入操作需要至多访问nk2/m个片外元素和复制k个元素,因此FHT的插入操作的平均片外存储器访问次数为O(nk2/m+k)。DBHT在插入元素时,需要插入1个元素到一个合适的存储桶,并至多调整nk/m个元素的存储位置,因此DBHT的插入操作的平均片外存储器访问次数为O(1+2nk/m)。与FHT相比,DBHT在插入操作的平均片外存储器访问次数上减少约k倍,其中k≥2。当删除元素时,FHT需要删除至多k个共享元素副本,因此其删除操作的平均片外存储器访问次数为O(k)。DBHT仅需要删除1个元素,且不需要调整其他元素的存储位置,则其删除操作的平均片外存储器访问次数为O(1)。与FHT相比,DBHT在删除操作的平均片外存储器访问次数上也减少k倍。此外,FHT和DBHT的查询操作的平均片外存储器访问次数均为O(1)。总之,从表1显示的结果可以看出,与FHT相比,DBHT在更新开销上减少k倍,并确保良好的平均情况查找性能。
本发明采用DBHT所实现的哈希操作不仅在时间复杂度上有明显的降低,而且在空间复杂度上也有一定程度的改善。DBHT的空间复杂度是指片上和片外存储空间大小。片上存储空间大小是一组片上计数器大小和一个指向片外链接表的头指针大小。在FHT中,片上CBFs包含m个存储桶,每个存储桶包含1个b比特的计数器和1个至少log2 n比特的片外链接表头指针,则其片上存储空间大小为:
在DBHT中,片上DBFs包含m个存储桶,每个存储桶包含1个b比特的插入计数器、1个b′比特的删除计数器和1个至少log2 n比特的片外链接表头指针,则其片上存储空间大小为:
Figure G2009100928048D00112
因此,与FHT相比,DBHT在片上存储空间上增加的比率为:
Figure G2009100928048D00113
公式(3)表明,DBHT仅需要增加少量的片上存储空间大小。例如,当b=4、b′=4、n=4000和m=40000时,FHT的片上存储空间大小为MFHT=640Kbits,DBHT的片上存储空间大小为MDBHT=800Kbits,则DBHT在片上存储空间大小上比FHT仅增加了R=25%。DBHT的片外存储空间大小是片外元素个数。由于FHT需要复制多个共享元素,FHT的片外元素个数为α·n,其中1≤α≤k(k为候选存储桶的个数);DBHT的片外元素个数仅为n。与FHT相比,DBHT在片外存储空间大小减少α倍,其中1≤α≤k。因此,DBHT显著减少更新开销和片外存储空间大小,仅需要增加少量的片上存储空间大小。
DBHT的片上插入和删除计数器存在计数器溢出问题。在DBHT中,片上插入计数器可累加或累减,而片上删除计数器只可累加。CBFs的理论分析表明,b=4比特的插入计数器可满足大多数实际应用需求,因此在此主要分析删除计数器溢出概率。第i个删除计数器值Counter等于j的概率为:
Pr ( Counter = j ) = nk j ( 1 m ) j ( 1 - 1 m ) nk - 1 - - - ( 4 )
当k=ln 2□(m/n)时,最小化DBFs的假阳性概率为f=(1/2)k=(0.6185)m/n,则至少1个删除计数器值Counter大于或等于j的概率为:
Pr ( Counter ≥ j ) ≤ m ( e ln 2 j ) j - - - ( 5 )
当b′=4时,删除计数器溢出概率为:
Pr(Counter≥16)≤1.37×10-15×m                (6)
公式(6)表明,b′=4比特的删除计数器可满足高速数据包处理的应用需求。
以上是对本发明采用DBHT实现哈希操作时较现有技术的FHT在空间复杂度和时间复杂度上更具优势的理论分析,下面也可以通过实验数据对本发明的优点进行论证。
图5给出了FHT和DBHT在不同元素个数下插入操作的平均片外存储器访问次数。如图5所示,当插入1000~5000个字符串时,FHT的平均片外存储器访问次数为8869~41879,而DBHT的平均片外存储器访问次数仅为1267~5031。图5表明,与FHT相比,DBHT在插入操作的平均片外存储器访问次数上减少7~8.3倍(平均为7.9倍)。
图6给出了FHT和DBHT在不同元素个数下删除操作的平均片外存储器访问次数。如图6所示,当删除1000~5000个字符串时,FHT的平均片外存储器访问次数为11280~52623,而DBHT的平均片外存储器访问次数仅为1071~5000。图6表明,与FHT相比,DBHT在删除操作的平均片外存储器访问次数上减少10.4~10.5倍(平均为10.5倍)。
图7给出了FHT和DBHT在不同元素个数下查询操作的平均片外存储器访问次数。如图7所示,当存储2000~10000个字符串且查询1000个字符串时,FHT的平均片外存储器访问次数为2098~10060,而DBHT的平均片外存储器访问次数为2069~10000。图7表明,DBHT在查询操作的平均片外存储器访问次数上与FHT基本相同。
图8给出了FHT和DBHT所需要片外存储空间的大小。如图8所示,当存储2000~10000个字符串时,FHT的片外元素个数为5612~25050,而DBHT的片外元素个数仅为2000~10000。图8表明,与FHT相比,DBHT在片外存储空间大小上减少2.5~2.9倍(平均为2.7倍)。
图9给出了FHT和DBHT所需要片上存储空间大小。如图9所示,当存储2000~10000个字符串时,FHT的片上存储空间大小为300Kbits~1.8Mbits,而DBHT的片上存储空间大小为380Kbits~2.2Mbits。图9表明,与FHT相比,DBHT在片上存储空间大小上有一定程度的增加,但仅增加22.2~26.7%(平均为25%)。
图10给出了FHT和DBHT在不同哈希函数个数下插入操作的平均片外存储器访问次数。如图10所示,当哈希函数个数为4~10且插入1000个字符串时,FHT的平均片外存储器访问次数为5210~15394,而DBHT的平均片外存储器访问次数仅为1177~1439。图10表明,与FHT相比,DBHT在插入操作的平均片外存储器访问次数上减少4.4~10.7倍。
图11给出了FHT和DBHT在不同哈希函数个数下删除操作的平均片外存储器访问次数。如图11所示,当哈希函数个数为4~10且删除1000个字符串时,FHT的平均片外存储器访问次数为6617~19947,而DBHT的平均片外存储器访问次数仅为1057~1109。图11表明,与FHT相比,DBHT在删除操作的平均片外存储器访问次数上减少6.3~18倍。
表2给出了基于双计数布鲁姆过滤器的哈希表(DBHT)中的删除计数器在不同大小时的溢出概率及其开销比率:
  删除计数器比特数   2   3   4   5
  溢出概率   9.8×10-4   3×10-4   1×10-4   4×10-5
  开销比率   60.7%   32.0%   13.9%   5.3%
表2
当删除计数器溢出时,DBHT需要额外的片外存储器访问,用于重新构建整个数据结构。删除计数器溢出开销比率是指删除计数器溢出的片外存储器访问次数占总片外存储器访问次数的比率。在表2中,DBHT存储2000个字符串、删除和插入1000个字符串、查询10000个字符串,并设定存储桶个数m与元素个数n的比值恒定为m/n=10,哈希函数个数为k=ln2·(m/n)≈6。表2表明,当删除计数器的比特位数从2增至5时,删除计数器溢出概率从9.8×10-4减至4×10-5,而其开销比率从60.7%减至5.3%,这也验证DBHT的删除计数器溢出概率分析。
总之,本发明中所采用的基于双计数布鲁姆过滤器的哈希表(DBHT)是一种时空高效的哈希表,显著减少网络数据包处理的更新开销和片外存储需求,仅需要增加少量的片上存储空间。实验结果表明,与现有技术FHT相比,在不同元素个数的场景中,DBHT在插入和删除操作的平均片外存储器访问次数上分别7~8.3倍和10.4~10.5倍;在不同哈希函数个数的场景中,DBHT在插入和删除操作的平均片外存储器访问次数上分别减少了4.4~10.7倍和6.3~18倍;DBHT在片外存储空间大小上减少了2.5~2.9倍,而在片上存储空间大小上仅平均增加了25%。
本发明的DBHT以及相应的哈希方法在时间效率与空间效率上都有很大的提高,因此具有广泛的应用。如在网络数据包处理中,通过本发明的哈希表与哈希方法可快速实现规则的匹配,从而完成诸如IP查找、数据包分类、深度数据包检测的各种类型的网络数据包处理。鉴于本发明较现有技术相比在时间效率上有很大的提高,因此,更适应高速网络这一应用环境,符合当前技术发展的潮流。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (9)

1.一种哈希装置,其特征在于,包括存储桶、候选存储桶查找模块、目标存储桶查找模块以及元素插入模块;其中,所述的存储桶包括插入计数器和删除计数器,所述插入计数器用于记录所在存储桶中所插入元素的个数,所述删除计数器用于记录所在存储桶中删除元素的个数;
所述的候选存储桶查找模块用于将所要操作的元素按照哈希函数映射到一个存储桶,所述存储桶被称为候选存储桶;
所述的目标存储桶查找模块用于根据目标存储桶的选取原则从所述候选存储桶中找出目标存储桶;所述选取原则包括从所述候选存储桶中选出插入计数器值与删除计数器值之和最小的候选存储桶作为目标存储桶,若所能得到的插入计数器值与删除计数器值之和最小的候选存储桶多于一个,则根据存储桶索引值选择目标存储桶;
所述的元素插入模块用于在所述目标存储桶中插入所要插入的元素;用于判断新插入的元素是否对所述候选存储桶中先前已存储元素的存储位置造成影响,若已存储元素的存储位置已经不再满足所述的目标存储桶的选取原则,则根据所述的目标存储桶的选取原则重新为所述已存储元素计算目标存储桶,将所述已存储元素的存储位置从原目标存储桶调整到新计算得到的目标存储桶;用于累加所述候选存储桶的插入计数器的值。
2.根据权利要求1所述的哈希装置,其特征在于,还包括元素删除模块,该模块用于从所述目标存储桶中删除所要删除的元素;用于累减所述候选存储桶的插入计数器的值以及累加所述候选存储桶的删除计数器的值。
3.根据权利要求1或2所述的哈希装置,其特征在于,还包括元素查询模块,该模块用于从所述目标存储桶中找出所要查询的元素,并输出查询结果。
4.一种哈希方法,用于在哈希表上实现哈希插入操作;所述哈希表包括多个存储桶,所述存储桶包括插入计数器和删除计数器,所述插入计数器用于记录所在存储桶中所插入元素的个数,所述删除计数器用于记录所在存储桶中删除元素的个数;该方法包括:
步骤1)、将所要操作的元素按照哈希函数映射到所述哈希表的至少一个存储桶,所述存储桶被称为候选存储桶;
步骤2)、根据目标存储桶的选取原则从所述候选存储桶中找出目标存储桶;所述选取原则包括从所述候选存储桶中选出插入计数器值与删除计数器值之和最小的候选存储桶作为目标存储桶,若所能得到的插入计数器值与删除计数器值之和最小的候选存储桶多于一个,则根据存储桶索引值选择目标存储桶;
步骤3)、在所述目标存储桶中插入所要插入的元素;
步骤4)、判断新插入的元素是否对所述候选存储桶中先前已存储元素的存储位置造成影响,若已存储元素的存储位置已经不再满足所述的目标存储桶的选取原则,则根据所述的目标存储桶的选取原则重新为所述已存储元素计算目标存储桶,将所述已存储元素的存储位置从原目标存储桶调整到新计算得到的目标存储桶;
其中,在所述的步骤2)之前或之后还包括累加所述候选存储桶的插入计数器的值的步骤。
5.根据权利要求4所述的哈希方法,其特征在于,在所述的目标存储桶的选择原则中,在根据存储桶索引值选择目标存储桶时,选择存储桶索引值最小的候选存储桶作为目标存储桶。
6.一种哈希方法,用于在哈希表上实现哈希删除操作;所述哈希表包括多个存储桶,所述存储桶包括插入计数器和删除计数器,所述插入计数器用于记录所在存储桶中所插入元素的个数,所述删除计数器用于记录所在存储桶中删除元素的个数;该方法包括:
步骤1)、将所要操作的元素按照哈希函数映射到所述哈希表的至少一个存储桶,所述存储桶被称为候选存储桶;
步骤2)、根据目标存储桶的选取原则从所述候选存储桶中找出目标存储桶;所述选取原则包括从所述候选存储桶中选出插入计数器值与删除计数器值之和最小的候选存储桶作为目标存储桶,若所能得到的插入计数器值与删除计数器值之和最小的候选存储桶多于一个,则根据存储桶索引值选择目标存储桶;
步骤3)、从所述目标存储桶中删除所要删除的元素;
其中,在所述的步骤2)之前或之后还包括累减所述候选存储桶的插入计数器的值以及累加所述候选存储桶的删除计数器的值的步骤。
7.根据权利要求6所述的哈希方法,其特征在于,在所述的目标存储桶的选择原则中,在根据存储桶索引值选择目标存储桶时,选择存储桶索引值最小的候选存储桶作为目标存储桶。
8.一种哈希方法,用于在哈希表上实现哈希查询操作;所述哈希表包括多个存储桶,所述存储桶包括插入计数器和删除计数器,所述插入计数器用于记录所在存储桶中所插入元素的个数,所述删除计数器用于记录所在存储桶中删除元素的个数;该方法包括:
步骤1)、将所要操作的元素按照哈希函数映射到所述哈希表的至少一个存储桶,所述存储桶被称为候选存储桶;
步骤2)、根据目标存储桶的选取原则从所述候选存储桶中找出目标存储桶;所述选取原则包括从所述候选存储桶中选出插入计数器值与删除计数器值之和最小的候选存储桶作为目标存储桶,若所能得到的插入计数器值与删除计数器值之和最小的候选存储桶多于一个,则根据存储桶索引值选择目标存储桶;
步骤3)、从所述目标存储桶中找出所要查询的元素,并输出查询结果。
9.根据权利要求8所述的哈希方法,其特征在于,在所述的目标存储桶的选择原则中,在根据存储桶索引值选择目标存储桶时,选择存储桶索引值最小的候选存储桶作为目标存储桶。
CN200910092804.8A 2009-09-08 2009-09-08 基于双计数布鲁姆过滤器的哈希方法和哈希装置 Active CN101655861B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910092804.8A CN101655861B (zh) 2009-09-08 2009-09-08 基于双计数布鲁姆过滤器的哈希方法和哈希装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910092804.8A CN101655861B (zh) 2009-09-08 2009-09-08 基于双计数布鲁姆过滤器的哈希方法和哈希装置

Publications (2)

Publication Number Publication Date
CN101655861A CN101655861A (zh) 2010-02-24
CN101655861B true CN101655861B (zh) 2011-06-01

Family

ID=41710154

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910092804.8A Active CN101655861B (zh) 2009-09-08 2009-09-08 基于双计数布鲁姆过滤器的哈希方法和哈希装置

Country Status (1)

Country Link
CN (1) CN101655861B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8477611B2 (en) * 2010-03-03 2013-07-02 Ewha University Industry Collaboration Foundation Method and apparatus for packet classification using bloom filter
US9858051B2 (en) * 2011-06-24 2018-01-02 Cavium, Inc. Regex compiler
GB2493243B (en) * 2011-07-26 2014-04-23 Ibm Method and storage controller for determining an access characteristic of a data entity
CN103294822B (zh) * 2013-06-17 2016-08-10 北京航空航天大学 一种基于主动哈希和布隆过滤器的高效缓存方法
CN103581024A (zh) * 2013-11-21 2014-02-12 盛科网络(苏州)有限公司 Mac地址硬件与软件相结合的学习方法及装置
CN106407207B (zh) * 2015-07-29 2020-06-16 阿里巴巴集团控股有限公司 一种实时新增数据更新方法和装置
CN105574076B (zh) * 2015-11-27 2019-02-12 湖南大学 一种基于Bloom Filter的键值对存储结构及方法
CN105630955B (zh) * 2015-12-24 2019-01-29 华中科技大学 一种高效动态的数据集合成员管理方法
KR102190403B1 (ko) * 2016-05-20 2020-12-11 삼성전자주식회사 물리적 메모리 크기보다 큰 메모리 용량을 가능하게 하기 위한 방법 및 장치
CN108170672A (zh) * 2017-12-22 2018-06-15 武汉数博科技有限责任公司 一种中文机构名称实时分析方法及系统
CN111241146B (zh) * 2018-11-29 2023-09-19 北京数安鑫云信息技术有限公司 一种统计TopK-Frequency信息的方法和系统
CN109873829B (zh) * 2019-03-06 2021-07-30 国网甘肃省电力公司电力科学研究院 一种基于二进制哈希表的活动ip主机数量统计方法
CN109977116B (zh) * 2019-03-14 2023-04-21 超越科技股份有限公司 基于fpga-ddr的哈希连接算子加速方法及系统
CN111552692B (zh) * 2020-04-30 2023-04-07 南方科技大学 一种加减法布谷鸟过滤器
CN111552693B (zh) * 2020-04-30 2023-04-07 南方科技大学 一种标签布谷鸟过滤器
CN115514707A (zh) * 2021-06-23 2022-12-23 深圳市中兴微电子技术有限公司 一种报文匹配方法、装置、存储介质及电子装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625612B1 (en) * 2000-06-14 2003-09-23 Ezchip Technologies Ltd. Deterministic search algorithm
CN100487697C (zh) * 2006-01-22 2009-05-13 中兴通讯股份有限公司 一种应用改进的哈希方法进行查找的方法
CN101499097A (zh) * 2009-03-16 2009-08-05 浙江工商大学 基于散列表的数据流频繁模式内存压缩存储方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625612B1 (en) * 2000-06-14 2003-09-23 Ezchip Technologies Ltd. Deterministic search algorithm
CN100487697C (zh) * 2006-01-22 2009-05-13 中兴通讯股份有限公司 一种应用改进的哈希方法进行查找的方法
CN101499097A (zh) * 2009-03-16 2009-08-05 浙江工商大学 基于散列表的数据流频繁模式内存压缩存储方法

Also Published As

Publication number Publication date
CN101655861A (zh) 2010-02-24

Similar Documents

Publication Publication Date Title
CN101655861B (zh) 基于双计数布鲁姆过滤器的哈希方法和哈希装置
CN1316390C (zh) 用树状分段改善树搜索性能和存储器带宽的方法和系统
CN100566281C (zh) 虚拟私用网路由查找的方法和装置
US9009403B2 (en) Multi-updatable least recently used mechanism
CN112486994B (zh) 一种基于日志结构合并树的键值存储的数据快速读取方法
CN101122885A (zh) 一种数据缓存处理方法、系统及数据缓存装置
WO2013152678A1 (zh) 元数据查询方法和装置
CN103294822B (zh) 一种基于主动哈希和布隆过滤器的高效缓存方法
CN107153707A (zh) 一种针对非易失内存的哈希表构建方法及系统
US20150058352A1 (en) Thin database indexing
CN106991102A (zh) 倒排索引中键值对的处理方法及处理系统
CN110888886A (zh) 一种索引结构及构建方法、键值存储系统及请求处理方法
CN113553476A (zh) 一种利用哈希减少写停顿的键值存储方法
CN102354301B (zh) 缓存分区方法
CN116701440B (zh) 一种布谷鸟过滤器及数据插入、查询、删除方法
US20220075766A1 (en) Cuckoo hashing including accessing hash tables using affinity table
US7953721B1 (en) Integrated search engine devices that support database key dumping and methods of operating same
CN104301227B (zh) 基于tcam的高速低功耗ip路由表查找方法
CN101271466B (zh) 一种基于自适应字典树的电子词典单词检索方法
CN111190545B (zh) 一种基于软件实现的trie结构进行LPM规则压缩存储的方法
CN111291058A (zh) 一种优化基于分层pc-trie结构存储LPM规则的方法
CN106201903A (zh) 一种三维闪存擦除控制方法及其系统
CN106897315A (zh) Kv项有效性获取方法以及装置
CN112269784A (zh) 一种基于硬件实现的哈希表结构以及插入、查询和删除方法
CN111949439B (zh) 基于数据库的数据文件更新方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant