CN101833541B - 哈希数据处理方法和装置 - Google Patents

哈希数据处理方法和装置 Download PDF

Info

Publication number
CN101833541B
CN101833541B CN201010157748.4A CN201010157748A CN101833541B CN 101833541 B CN101833541 B CN 101833541B CN 201010157748 A CN201010157748 A CN 201010157748A CN 101833541 B CN101833541 B CN 101833541B
Authority
CN
China
Prior art keywords
hash
key value
hash function
function
compression
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
CN201010157748.4A
Other languages
English (en)
Other versions
CN101833541A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201210025028.1A priority Critical patent/CN102609509B/zh
Priority to CN201010157748.4A priority patent/CN101833541B/zh
Publication of CN101833541A publication Critical patent/CN101833541A/zh
Application granted granted Critical
Publication of CN101833541B publication Critical patent/CN101833541B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明实施例提供一种哈希数据处理方法和装置。其中方法包括:在数据处理过程中接收数据处理指令,所述数据处理指令包括待插入的关键值;采用哈希函数集中的一个哈希函数生成与待插入的关键值对应的第一压缩关键值,所述哈希函数集中包括至少两个哈希函数;若哈希桶中存在所述第一压缩关键值,则采用所述哈希函数集中的另一哈希函数生成与所述关键值对应的第二压缩关键值;根据所述第二压缩关键值进行数据处理。本发明实施例在插入Key值时,可以根据是否发生冲突,在Hash函数集中的至少两个Hash函数之间切换,从而降低了哈希冲突的概率。

Description

哈希数据处理方法和装置
技术领域
本发明实施例涉及通信领域,尤其涉及一种哈希数据处理方法和装置。
背景技术
哈希(以下简称:Hash)算法是一种能够将任意长度的二进制值映射为固定长度的较小二进制值的方法。哈希算法可以表示为:Hash值=H(Key),其中Key为原始值(以下简称:complete key),H为Hash函数,Hash值为将Key按照Hash函数H映射而成的较小的二进制值。每个Hash值均指向一个Hash表,该Hash表中可以存储有多个Hash桶,每一个Hash桶的数据格式可以为Key+标识(以下简称:Index),如果Index和Hash桶的位置绑定,则Hash桶的数据格式中可以不包含Index。
在现有技术中,某些Hash算法的应用中,例如IP的流表,Key的位宽很大,例如IPv6的流表,Key的位宽超过了256bit,而Hash表的位宽往往受到诸多约束而十分有限,这样一个Hash表只能存储有限的几个Hash桶,这会大大增加Hash冲突的概率。为了解决这一问题,现有技术采用一种改进的Hash存储结构。Hash桶内不存储complete key,而是用另外一个Hash函数产生一个压缩的Key(以下简称:compressed key)。Hash桶的数据格式中的complete key用compressed key替代,而complete key被存储在一个shadow表中。在进行Hash查找时,如果在Hash桶中匹配到一个相同的compressedkey,则再用匹配的compressed key对应的Index在shadow表中获取completekey。举例来说,对一个位宽为256bit的complete key,compressed key可以压缩到20bit,这样一个Hash桶的位宽大大被压缩,一个Hash表可以存储更多的Hash桶,从而大大降低了Hash冲突的概率。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:当需要插入一个新的Key时,如果在该Hash表的Hash桶中已经存储有一个与该新的Key对应的compressed key相同的compressed key,则由于发生哈希冲突使得该Key不能存储到该Hash表中。
发明内容
本发明实施例提供一种哈希数据处理方法和装置,以实现降低哈希冲突概率。
本发明实施例提供另一种哈希数据处理方法,包括:
在数据处理过程中接收数据处理指令,所述数据处理指令包括待插入的关键值,该数据处理过程包括编解码处理过程、数据压缩处理过程或数据加密处理过程;
采用与哈希桶内的空表项的位置对应的哈希函数生成与待插入的关键值对应的压缩关键值;
将所述压缩关键值存储在所述空表项中;
根据所述压缩关键值进行数据处理。
相应地,本发明实施例提供一种哈希数据处理装置,包括:
第二接收模块,用于在数据处理过程中接收数据处理指令,所述数据处理指令包括待插入的关键值;
第三生成模块,用于采用与哈希桶内的空表项的位置对应的哈希函数生成与待插入的关键值对应的压缩关键值;
第一存储模块,用于将所述压缩关键值存储在所述空表项中;
第一处理模块,用于根据所述压缩关键值进行数据处理。
本发明上述实施例在插入Key值时,对于选定的不同的Hash桶,可以采用不同的Hash函数生成compressed key,从而使得生成compressed key所需的Hash函数可以在多个Hash函数之间切换,从而降低了哈希冲突的概率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明哈希数据处理方法一个实施例的流程图;
图2为本发明哈希数据处理方法另一个实施例的流程图;
图3为本发明哈希数据处理方法再一个实施例的流程图;
图4为本发明哈希数据处理装置一个实施例的结构示意图;
图5为本发明哈希数据处理装置另一个实施例的结构示意图;
图6为本发明哈希数据处理装置再一个实施例的结构示意图
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明哈希数据处理方法一个实施例的流程图,如图1所示,本实施例的方法可以包括:
步骤101、在数据处理过程中接收数据处理指令,所述数据处理指令包括待插入的关键值。
在本实施例中,该数据处理过程可以包括但不限于编解码处理过程、数据压缩处理过程或数据加密处理过程。本领域技术人员可以了解,本实施例可以应用在需要进行哈希变换的任何数据处理过程中。
步骤102、采用哈希函数集中的一个哈希函数生成与待插入的关键值对应的第一压缩关键值,所述哈希函数集中包括至少两个哈希函数。
具体来说,Hash表中可以包括多个Hash桶,每个Hash桶可以包括多个表项,每个表项中可以存储Hash数据。当需要向一个Hash桶中插入Key值时,可以采用Hash函数生成与该Key值对应的compressed key。在本实施例中,可用的Hash函数可以为Hash函数集中的至少两个Hash函数。在实际处理过程中,可以先从该Hash函数集中选择一个Hash函数,例如Hash函数0,然后用该Hash函数生成与该Key值对应的compressed key。
步骤103、若哈希桶中存在所述第一压缩关键值,则采用所述哈希函数集中的另一哈希函数生成与所述关键值对应的第二压缩关键值。
采用Hash函数0生成的compressed key可以被判断是否已经存在于哈希桶中。在现有技术中,若已经存在,则判断为Hash冲突,该Key值不能存储到该Hash表中,需要采用其它方式,例如用TCAM或Hash级联的方式来存储。而在本实施例中,若采用Hash函数0生成的compressed key已经存在于Hash表中,则可以采用Hash函数集中的其它Hash函数生成与Key值对应的compressed key。
假设该Hash函数集中包括两个Hash函数,则可以采用另一个Hash函数1生成对应的compressed key,如果采用Hash函数1生成的compressed key也存在于该Hash表中,才需要采用其它方式,例如用TCAM或Hash级联的方式来存储。
假设该Hash函数集中包括更多个Hash函数,则可以采用其它Hash函数生成对应的compressed key,即先采用Hash函数1生成一个新的compressedkey,如果采用Hash函数1生成的compressed key也存在于该Hash表中,再采用Hash函数2生成的新的compressed key,只有Hash函数集中所有Hash函数生成的compressed key均已经存在于Hash表中,才需要采用其它方式,例如用TCAM或Hash级联的方式来存储。
以一个Hash表存储6个Hash桶为例,而如果只用一个Hash函数产生compressed key,则1M的表项,会有几十个表项因为compressed key冲突而溢出,而应用本实施例的方案,几乎没有compressed key冲突。
步骤104、根据所述第二压缩关键值进行数据处理。
通过步骤102和步骤103的处理过程,即可获取第二压缩关键值,本领域技术人员可以利用该第二压缩关键值进行数据处理,例如进行数据压缩,数据加密等。
本实施例在插入Key值时,可以根据是否发生冲突,在Hash函数集中的至少两个Hash函数之间切换,从而降低了哈希冲突的概率。
下面以Hash函数集中包括两个Hash函数为例对本发明实施例的技术方案进行详细说明,本领域技术人员可以理解的是,对于Hash函数集中包括两个以上Hash函数的情况来说,其处理过程类似,此处不再赘述。
图2为本发明哈希数据处理方法另一个实施例的流程图,如图2所示,本实施例的方法可以包括:
步骤201、在数据处理过程中接收数据处理指令,所述数据处理指令包括待插入的关键值。
步骤202、采用哈希函数集中的哈希函数0生成与待插入的关键值对应的第一压缩关键值;
步骤203、判断第一压缩关键值是否已经存在于Hash桶中,若是则执行步骤205,否则执行步骤204。
步骤204、将该第一压缩关键值和哈希函数0的函数标识信息存储在哈希桶中,结束。
其中,函数标识信息可以存储在所述哈希桶的扩展比特位上,且所述扩展比特位的位数与所述哈希函数集中的哈希函数的数量相对应。
具体来说,每个Hash桶的扩展比特位hash_sel可以扩展到多个比特,若Hash函数集中共有两个Hash函数,则该hash_sel可以只采用1位,0代表Hash函数0,1代表Hash函数1;若Hash函数集中共有四个Hash函数,则hash_sel可以只采用2位,00、01、10以及11可以分别代表这四个Hash函数,依次类推,不再赘述。
步骤205、采用哈希函数集中的哈希函数1生成与关键值对应的第二压缩关键值。
步骤206、判断第二压缩关键值是否已经存在于Hash桶中,若是则执行步骤208,否则执行步骤207。
步骤207、将生成所述第二压缩关键值所采用的哈希函数的函数标识信息和所述第二压缩关键值存储在哈希桶中。
步骤208、采用TCAM或Hash级联的方式存储。
本实施例在插入Key值时,可以根据是否发生冲突,在Hash函数集中的至少两个Hash函数之间切换,从而降低了哈希冲突的概率。
图3为本发明哈希数据处理方法再一个实施例的流程图,如图3所示,本实施例的方法可以包括:
步骤301、在数据处理过程中接收数据处理指令,所述数据处理指令包括待插入的关键值。
在本实施例中,该数据处理过程可以包括但不限于编解码处理过程、数据压缩处理过程或数据加密处理过程。本领域技术人员可以了解,本实施例可以应用在需要进行哈希变换的任何数据处理过程中。
步骤302、采用与哈希桶内的空表项的位置对应的哈希函数生成与待插入的关键值对应的压缩关键值。
当需要插入Key值时,可以在Hash表中选择一个空表项。在本实施例中,各Hash桶内的表项对应的Hash函数可以不同。
举例来说,该Hash函数可以与Hash桶内的表项位置绑定,若可用的Hash函数为三个,例如Hash函数0、Hash函数1以及Hash函数2,则可以将前三分之一的表项所用的Hash函数设为Hash函数0,将中间三分之一的表项所用的Hash函数设为Hash函数1,将后三分之一的表项所用的Hash函数设为Hash函数2。需要说明的是,本领域技术人员也可以采用其它划分方式,只要保证可用的Hash函数为两个以上即可。
当选定的空表项在Hash表的中间三分之一处时,可以采用Hash函数1生成与Key值对应的compressed key,当选定的空表项在Hash表的后三分之一处时,则可以采用Hash函数2生成与Key值对应的compressed key。
步骤303、将所述压缩关键值存储在空表项中。
在生成与Key值对应的compressed key后,即可将该compressed key存储在该空表项中,以便后续的Hash查找。
本实施例在插入Key值时,对于选定的不同的空表项,可以采用不同的Hash函数生成compressed key,从而使得生成compressed key所需的Hash函数可以在多个Hash函数之间切换,从而降低了哈希冲突的概率。
进一步地,在本发明哈希数据处理方法另一个实施例中,上述步骤301可以具体包括:
若所述空表项处于哈希表的第一部分中,则采用第一哈希函数生成与待插入的关键值对应的压缩关键值,若所述空表项处于哈希表的第二部分中,则采用第二哈希函数生成与待插入的关键值对应的压缩关键值。
具体来说,本实施例的Hash表可以分为第一部分和第二部分,该第一部分的表项可以对应第一Hash函数,第二部分的表项可以对应第二Hash函数,对于选定的空表项处于第一部分时,可以采用第一Hash函数生成与该Key值对应的compressed key,对于选定的空表项处于第二部分时,可以采用第二Hash函数生成与该Key值对应的compressed key。举例来说,一个Hash表中有6个Hash桶,前三个Hash桶内的表项可以与Hash函数1绑定,后三个Hash桶内的表项可以与哈希函数2绑定。
本实施例在插入Key值时,对于选定的不同的空表项,可以采用与Hash桶内的表项位置绑定的Hash函数生成compressed key,从而使得生成compressed key所需的Hash函数可以在多个Hash函数之间切换,从而降低了哈希冲突的概率。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图4为本发明哈希数据处理装置一个实施例的结构示意图,如图4所示,本实施例的装置可以包括:第一接收模块11,第一生成模块12和第二生成模块13以及第一处理模块14,其中第一接收模块11用于在数据处理过程中接收数据处理指令,所述数据处理指令包括待插入的关键值;第一生成模块12用于采用哈希函数集中的一个哈希函数生成与待插入的关键值对应的第一压缩关键值,所述哈希函数集中包括至少两个哈希函数;第二生成模块13用于在哈希桶中存在所述第一压缩关键值时,采用所述哈希函数集中的另一哈希函数生成与所述关键值对应的第二压缩关键值;第一处理模块14用于根据所述第二压缩关键值进行数据处理。
本实施例的装置的实现原理与图1所示方法的实现原理类似,此处不再赘述。
本实施例的装置,在插入Key值时,可以根据是否发生冲突,在Hash函数集中的至少两个Hash函数之间切换,从而降低了哈希冲突的概率。
图5为本发明哈希数据处理装置另一个实施例的结构示意图,如图5所示,本实施例的装置在图4所示实施例的基础上可以进一步地,第一处理模块14,包括:第一判断单元141和第一存储单元142,第一判断单元141用于判断所述哈希桶中是否存在所述第二压缩关键值;第一存储单元142用于在所述第一判断单元判断所述哈希桶中不存在所述第二压缩关键值时,将生成所述第二压缩关键值所采用的哈希函数的函数标识信息和所述第二压缩关键值存储在所述哈希桶的空表项中。
本实施例的装置的实现原理与图2所示方法的实现原理类似,此处不再赘述。
本实施例的装置,在插入Key值时,可以根据是否发生冲突,在Hash函数集中的至少两个Hash函数之间切换,从而降低了哈希冲突的概率。
图6为本发明哈希数据处理装置再一个实施例的结构示意图,如图6所示,本实施例的装置可以包括:第二接收模块21、第三生成模块22和第一存储模块23,其中第二接收模块21用于在数据处理过程中接收数据处理指令,所述数据处理指令包括待插入的关键值;第三生成模块22用于采用与哈希桶内的空表项位置对应的哈希函数生成与待插入的关键值对应的压缩关键值;第一存储模块23用于将所述压缩关键值存储在空表项中。
本实施例的装置的实现原理与图3所示方法的实现原理类似,此处不再赘述。
本实施例的装置,在插入Key值时,对于选定的不同的空表项,可以采用不同的Hash函数生成compressed key,从而使得生成compressed key所需的Hash函数可以在多个Hash函数之间切换,从而降低了哈希冲突的概率。
进一步地,在本发明哈希数据处理装置又一个实施例中,该第三生成模块22可以具体用于在所述空表项位于哈希表的第一部分中时,采用第一哈希函数生成与待插入的关键值对应的压缩关键值,在所述空表项位于哈希表的第二部分中时,采用第二哈希函数生成与待插入的关键值对应的压缩关键值。
本实施例的装置,在插入Key值时,对于选定的不同的空表项,可以采用与Hash桶内的表项位置绑定的Hash函数生成compressed key,从而使得生成compressed key所需的Hash函数可以在多个Hash函数之间切换,从而大大降低了哈希冲突的概率。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (5)

1.一种哈希数据处理方法,其特征在于,包括:
在数据处理过程中接收数据处理指令,所述数据处理指令包括待插入的关键值,该数据处理过程包括编解码处理过程、数据压缩处理过程或数据加密处理过程;
采用哈希函数集中的一个哈希函数生成与待插入的关键值对应的第一压缩关键值,所述哈希函数集中包括至少两个哈希函数;
若哈希桶中存在所述第一压缩关键值,则采用所述哈希函数集中的另一哈希函数生成与所述关键值对应的第二压缩关键值;所述另一哈希函数为与哈希桶内的空表项的位置对应的哈希函数,所述哈希函数集中的哈希函数与所述哈希桶内的表项位置具有绑定关系;
将所述第二压缩关键值存储在空表项中,并根据所述第二压缩关键值进行数据处理。
2.根据权利要求1所述的哈希数据处理方法,其特征在于,所述根据所述第二压缩关键值进行数据处理,包括:
若所述哈希桶中不存在所述第二压缩关键值,则将生成所述第二压缩关键值所采用的哈希函数的函数标识信息和所述第二压缩关键值存储在所述哈希桶中。
3.根据权利要求2所述的哈希数据处理方法,其特征在于,所述函数标识信息存储在所述哈希桶的扩展比特位上,且所述扩展比特位的位数与所述哈希函数集中的哈希函数的数量相对应。
4.一种哈希数据处理装置,其特征在于,包括:
第一接收模块,用于在数据处理过程中接收数据处理指令,所述数据处理指令包括待插入的关键值,该数据处理过程包括编解码处理过程、数据压缩处理过程或数据加密处理过程;
第一生成模块,用于采用哈希函数集中的一个哈希函数生成与待插入的关键值对应的第一压缩关键值,所述哈希函数集中包括至少两个哈希函数;
第二生成模块,用于在哈希桶中存在所述第一压缩关键值时,采用所述哈希函数集中的另一哈希函数生成与所述关键值对应的第二压缩关键值;所述另一哈希函数为与哈希桶内的空表项的位置对应的哈希函数,所述哈希函数集中的哈希函数与所述哈希桶内的表项位置具有绑定关系;
第一处理模块,用于将所述第二压缩关键值存储在空表项中,并根据所述第二压缩关键值进行数据处理。
5.根据权利要求4所述的哈希数据处理装置,其特征在于,所述第一处理模块包括:
第一判断单元,用于判断所述哈希桶中是否存在所述第二压缩关键值;
第一存储单元,用于在所述第一判断单元判断所述哈希桶中不存在所述第二压缩关键值时,将生成所述第二压缩关键值所采用的哈希函数的函数标识信息和所述第二压缩关键值存储在所述哈希桶中。
CN201010157748.4A 2010-04-26 2010-04-26 哈希数据处理方法和装置 Active CN101833541B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201210025028.1A CN102609509B (zh) 2010-04-26 2010-04-26 哈希数据处理方法和装置
CN201010157748.4A CN101833541B (zh) 2010-04-26 哈希数据处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010157748.4A CN101833541B (zh) 2010-04-26 哈希数据处理方法和装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201210025028.1A Division CN102609509B (zh) 2010-04-26 2010-04-26 哈希数据处理方法和装置

Publications (2)

Publication Number Publication Date
CN101833541A CN101833541A (zh) 2010-09-15
CN101833541B true CN101833541B (zh) 2016-12-14

Family

ID=

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1577326A (zh) * 2003-07-23 2005-02-09 英特尔公司 高性能散列系统
US7174013B1 (en) * 1998-10-20 2007-02-06 Lucent Technologies Inc. Efficient universal hashing method
CN1929451A (zh) * 2006-09-29 2007-03-14 华为数字技术有限公司 一种解决Hash冲突的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7174013B1 (en) * 1998-10-20 2007-02-06 Lucent Technologies Inc. Efficient universal hashing method
CN1577326A (zh) * 2003-07-23 2005-02-09 英特尔公司 高性能散列系统
CN1929451A (zh) * 2006-09-29 2007-03-14 华为数字技术有限公司 一种解决Hash冲突的方法及装置

Similar Documents

Publication Publication Date Title
CN104462990B (zh) 字符串加解密方法和装置
US11762813B2 (en) Quality score compression apparatus and method for improving downstream accuracy
CN106156070B (zh) 一种查询方法、文件合并方法与相关装置
JP2005222552A5 (zh)
EP1760607A3 (en) Information editing device, information editing system, information editing method, and program
CN105068889B (zh) 恢复Ext3/Ext4中已彻底删除文件的方法
KR20140131333A (ko) 스트림 인식 및 필터링
CN113672369A (zh) 用于验证有向无环图的环的方法及装置、电子设备、存储介质
CN106027226A (zh) 一种分组密码相关密钥不可能差分路径的搜索方法
CN104166821B (zh) 一种数据处理的方法和装置
CN102609509A (zh) 哈希数据处理方法和装置
Rachid et al. A practical and scalable tool to find overlaps between sequences
CN106777170A (zh) 增强服务器访问速度的医疗信息化文件处理系统及方法
CN108960645A (zh) 一种风险防控方法、系统及终端设备
CN106651972A (zh) 一种二值图像编码、解码方法及装置
CN101833541B (zh) 哈希数据处理方法和装置
CN107087086B (zh) 一种基于码分复用的大容量可逆信息隐藏方法
CN103336963A (zh) 一种图像特征提取的方法及装置
CN111178615B (zh) 一种企业风险识别模型的构建方法及系统
CN104216980A (zh) 一种文件系统序列化操作的分类方法
WO2015165323A1 (zh) 一种数据处理方法、处理器及数据处理设备
CN111026736A (zh) 数据血缘管理方法及装置、数据血缘解析方法及装置
CN109491807A (zh) 一种数据交换方法、装置和系统
Lin et al. A TABU SEARCH ALGORITHM TO MINIMIZE TOTAL WEIGHTED TARDINESS FOR THE JOB SHOP SCHEDULING PROBLEM.
CN104932982B (zh) 一种消息访存的编译方法及相关装置

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant