CN117743338B - 一种基于双哈希的关键字匹配方法和装置 - Google Patents
一种基于双哈希的关键字匹配方法和装置 Download PDFInfo
- Publication number
- CN117743338B CN117743338B CN202311766561.8A CN202311766561A CN117743338B CN 117743338 B CN117743338 B CN 117743338B CN 202311766561 A CN202311766561 A CN 202311766561A CN 117743338 B CN117743338 B CN 117743338B
- Authority
- CN
- China
- Prior art keywords
- hash
- result
- segment
- fingerprint information
- keyword
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000004364 calculation method Methods 0.000 claims abstract description 10
- 101100256916 Caenorhabditis elegans sid-1 gene Proteins 0.000 description 6
- 101100256918 Caenorhabditis elegans sid-2 gene Proteins 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Collating Specific Patterns (AREA)
Abstract
本发明提供了一种基于双哈希的关键字匹配方法和装置,该方法包括:通过第一和第二哈希运算分别计算原始关键字的哈希值,得到第一和第二哈希结果,选择第一哈希结果的第一片段和第二哈希结果的第二片段分别作为第一段ID和第二段ID;对第一和第二哈希结果进行交叉计算,将交叉结果与第一段ID组合为第一指纹信息,并与第二段ID组合为第二指纹信息;根据第一段ID检索第一指纹表,根据第二段ID检索第二指纹表,分别得到第一和第二检索结果,将其与第一和第二指纹信息进行匹配,通过匹配成功的指纹信息查询关键字表,获取目标关键字,并将原始关键字与目标关键字进行比较,得到命中结果。本发明的方案提高了存储空间利用率,降低硬件实现难度,避免了误命中。
Description
技术领域
本发明属于哈希存储领域,特别涉及一种基于双哈希的关键字匹配方法和装置。
背景技术
精准匹配(Extra Match)算法越来越多地用于两层查找,两层和三层组播查找以及流查找等应用;现有的Extra Match查找方法大多使用单哈希或者双哈希产生索引,并采用索引进行直接选取多个关键字进行比较。
对于单哈希方法,在某些场景下其冲突率过高,导致表项存储空浪费,在关键字(FK)较长的情况下比较逻辑较大,而且随着桶深越大,所消耗的内存带宽也越大,即内存集成度越低。对于双哈希方法,同样存在比较逻辑较大和消耗的内存(memory)带宽过多的问题。
发明内容
本发明的目的在于提供一种基于双哈希的关键字匹配方法和装置,旨在避免不同Key在进行查找时的误命中。
根据本发明的第一方面,提供了一种基于双哈希的关键字匹配方法,包括:
通过第一哈希运算和第二哈希运算分别计算原始关键字的哈希值,得到第一哈希结果和第二哈希结果,选择所述第一哈希结果的第一片段作为第一段ID,并选择所述第二哈希结果的第二片段作为第二段ID;
对所述第一哈希结果和第二哈希结果进行交叉计算,根据交叉结果和所述第一段ID得到第一指纹信息,并根据所述交叉结果和所述第二段ID得到第二指纹信息;
根据所述第一段ID检索第一指纹表,得到第一检索结果,根据所述第二段ID检索第二指纹表,得到第二检索结果,将所述第一检索结果和所述第二检索结果分别与第一指纹信息和第二指纹信息进行匹配,通过匹配成功的指纹信息查询关键字表,以获取目标关键字,并将原始关键字与目标关键字进行比较,得到命中结果。
优选地,所述通过第一哈希运算和第二哈希运算分别关键字计算原始关键字的哈希值,得到第一哈希结果和第二哈希结果,进一步包括:
将关键字输入第一哈希运算电路,得到第一哈希结果,同时将关键字输入第二哈希运算电路,得到第二哈希结果,所述第一哈希运算电路和第二哈希运算电路基于CRC32哈希运算。
优选地,所述第一段ID和第二段ID的位宽相同。
优选地,所述根据交叉结果和所述第一段ID得到第一指纹信息,并根据所述交叉结果和所述第二段ID得到第二指纹信息,进一步包括:
将所述交叉结果和所述第一段ID组合成第一指纹信息,并将所述交叉结果和所述第二段ID组合成第二指纹信息。
优选地,所述通过匹配成功的指纹信息查询关键字表,进一步包括:
如果所述第一指纹信息与第一检索结果中的任一指纹信息匹配成功,则根据所述第一指纹信息查询所述关键字表,或者
如果所述第二指纹信息与第二检索结果中的任一指纹信息匹配成功,则根据所述第二指纹信息查询所述关键字表。
根据本发明的第二方面,提供了一种基于双哈希的关键字匹配装置,包括:
双哈希单元,用于通过第一哈希运算和第二哈希运算分别计算原始关键字的哈希值,得到第一哈希结果和第二哈希结果,选择所述第一哈希结果的第一片段作为第一段ID,并选择所述第二哈希结果的第二片段作为第二段ID;
交叉单元,用于对所述第一哈希结果和第二哈希结果进行交叉计算,根据交叉结果和所述第一段ID得到第一指纹信息,并根据所述交叉结果和所述第二段ID得到第二指纹信息;
匹配单元,用于根据所述第一段ID检索第一指纹表,得到第一检索结果,根据所述第二段ID检索第二指纹表,得到第二检索结果,将所述第一检索结果和所述第二检索结果分别与第一指纹信息和第二指纹信息进行匹配,通过匹配成功的指纹信息查询关键字表,以获取目标关键字,并将原始关键字与目标关键字进行比较,得到命中结果。
相比于相关技术,本发明的技术方案具备以下优点:
利用双哈希得到的双指纹和段ID进行交叉的方式,使得存储时产生双哈希的关联性,避免新增加的关键字被哈希桶中已有的旧key查找误命中,该方法减少了软件添加维护的计算量,并且在硬件上易于实现。
本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可以通过在说明书、权利要求书以及附图中所指出的结构和流程来实现和获取。
附图说明
为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单介绍,显而易见的是,下面描述中的附图是本发明的某些实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获取其他的附图。
图1是根据相关技术的单哈希查表方案示意图。
图2是根据相关技术的双哈希查表方案示意图。
图3是根据本发明的基于双哈希的关键字匹配方法的总体流程图。
图4是根据本发明的查表方案框架图。
图5是根据本发明的表项加载流程图。
具体实施方式
为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获取的所有其他实施例,都属于本发明保护的范围。
基于以上分析,本发明提出一种基于双哈希的关键字匹配方法和装置,在双哈希算法的基础上,引入关键字的指纹(Fingerprint),并通过两个哈希值之间的交叉关联。通过双哈希方法,基于两个哈希公式分别得到两组指纹(Fingerprint,FP)和段ID(SegmentID,SID),然后根据预定义规则,将两组Fingerprint和Segment ID进行交叉以及运算,得到两组相互关联并且重新映射后的FP和Segment ID,使得不同Key在进行查找时不会出现误命中,可以提高存储空间利用率,降低硬件实现难度,避免误命中的情况。
参见图3的流程图,本发明提供的所述基于双哈希的关键字匹配方法包括:
步骤101:通过第一哈希运算和第二哈希运算分别计算原始关键字的哈希值,得到第一哈希结果和第二哈希结果,选择所述第一哈希结果的第一片段作为第一段ID,并选择所述第二哈希结果的第二片段作为第二段ID。
本方案的系统框架如图4所示。主体结构包含2个基于CRC32的哈希算法电路、哈希值交叉计算电路、两个指纹表(Fingerprint Table),命名为FPT_1和FPT_2以及一个存储关键字的关键字表,命名为FKT。
为便于描述,本发明假定FKT表的条目数为2Y×K个,则FPT_1和FPT_2分别为Y×K个条目。FP的位宽为N。查找步骤中,首先将关键字通过两个CRC32运算,得到两个哈希值,分别为Hash_result1和Hash_result2。
然后,将Hash_result1的一部分作为SID_1,用于索引FPT_1表;将Hash_result2的一部分作为SID_2,用于索引FPT_2表;其中SID_1和SID_2的位宽定义为M。
步骤102:对所述第一哈希结果和第二哈希结果进行交叉计算,根据交叉结果和所述第一段ID得到第一指纹信息,并根据所述交叉结果和所述第二段ID得到第二指纹信息。
将Hash_resultl和Hash_result2的交叉运算结果与SID_2组合为FP_1;将Hash_result1和Hash_result2的交叉运算结果与SID_1组合为FP_2。通过这种交叉,使得FP_1和SID_2产生关联,同时也使得FP_2和SID_1产生关联,避免查找过程的误命中。
步骤103:根据所述第一段ID检索第一指纹表,得到第一检索结果,根据所述第二段ID检索第二指纹表,得到第二检索结果,将所述第一检索结果和所述第二检索结果分别与第一指纹信息和第二指纹信息进行匹配,通过匹配成功的指纹信息查询关键字表,以获取目标关键字,并将原始关键字与目标关键字进行比较,得到命中结果。
通过SID_1读取FPT_1,并将FP_1与FPT_1中读取的K个条目进行指纹FP对比匹配;同时通过SID_2读取FPT_2,并将FP_2与FPT_2中读取的K个条目进行FP对比匹配。
经过对比后,最多可能命中1个结果,从而通过对应的SID_1(或SID_2)以及FPT_1(或FPT_2)中对应的位置,得到1个指定的FK存储位置。根据得到的FK存储位置,从FKT中读取唯一的FK的数据,并与原始FK进行FK的比较,得到最终命中结果。
表项加载过程由软件或者硬件发起,加载过程参考图5所示:
如果指纹表FPT_1或FPT_2已命中目标FK,则不执行任何加载操作,流程结束。如果未命中目标FK,判断FPT_1或FPT_2是否存在足够的空闲空间,若空间不足,流程结束,若存在空闲空间,当FPT_1中的空闲条目大于等于FPT_2的空闲条目时,将关键字加载到FPT_1对应的关键字表FKT,并将指纹FP_1加载到FPT_1,否则,将关键字加载到FPT_2对应的关键字表FKT,并将指纹FP_2加载到FPT_2。
可见,本发明提出的基于双哈希的关键字匹配方法,相比于相关技术具备以下优点:利用双哈希运算得到的双指纹和段ID进行交叉的方式,使得存储时产生双哈希的关联性,避免新增加的关键字被哈希桶中已有的旧key查找误命中。该方法减少了软件添加维护的计算量,并且在硬件上易于实现。
相应地,本发明在第二方面提供了一种基于双哈希的关键字匹配装置,包括:
双哈希单元,用于通过第一哈希运算和第二哈希运算分别计算原始关键字的哈希值,得到第一哈希结果和第二哈希结果,选择所述第一哈希结果的第一片段作为第一段ID,并选择所述第二哈希结果的第二片段作为第二段ID;
交叉单元,用于对所述第一哈希结果和第二哈希结果进行交叉计算,根据交叉结果和所述第一段ID得到第一指纹信息,并根据所述交叉结果和所述第二段ID得到第二指纹信息;
匹配单元,用于根据所述第一段ID检索第一指纹表,得到第一检索结果,根据所述第二段ID检索第二指纹表,得到第二检索结果,将所述第一检索结果和所述第二检索结果分别与第一指纹信息和第二指纹信息进行匹配,通过匹配成功的指纹信息查询关键字表,以获取目标关键字,并将原始关键字与目标关键字进行比较,得到命中结果。
上述装置可通过上述第一方面的实施例提供的基于双哈希的关键字匹配方法实现,具体的实现方式可以参见第一方面的实施例中的描述,在此不再赘述。
可以理解,上述实施例中描述的电路结构、名称和参数仅为举例。本领域技术人员还可以根据使用需要,对以上多个实施例的结构特征进行容易想到的组合和调整,而不应将本发明的构思限制于上述示例的具体细节。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于双哈希的关键字匹配方法,其特征在于,包括:
通过第一哈希运算和第二哈希运算分别计算原始关键字的哈希值,得到第一哈希结果和第二哈希结果,选择所述第一哈希结果的第一片段作为第一段ID,并选择所述第二哈希结果的第二片段作为第二段ID;
对所述第一哈希结果和第二哈希结果进行交叉计算,根据交叉结果和所述第一段ID得到第一指纹信息,并根据所述交叉结果和所述第二段ID得到第二指纹信息;
根据所述第一段ID检索第一指纹表,得到第一检索结果,根据所述第二段ID检索第二指纹表,得到第二检索结果,将所述第一检索结果和所述第二检索结果分别与第一指纹信息和第二指纹信息进行匹配,通过匹配成功的指纹信息查询关键字表,以获取目标关键字,并将原始关键字与目标关键字进行比较,得到命中结果。
2.根据权利要求1所述的基于双哈希的关键字匹配方法,其特征在于,所述通过第一哈希运算和第二哈希运算分别关键字计算原始关键字的哈希值,得到第一哈希结果和第二哈希结果,进一步包括:
将关键字输入第一哈希运算电路,得到第一哈希结果,同时将关键字输入第二哈希运算电路,得到第二哈希结果,所述第一哈希运算电路和第二哈希运算电路基于CRC32哈希运算。
3.根据权利要求1所述的基于双哈希的关键字匹配方法,其特征在于,所述第一段ID和第二段ID的位宽相同。
4.根据权利要求1所述的基于双哈希的关键字匹配方法,其特征在于,所述根据交叉结果和所述第一段ID得到第一指纹信息,并根据所述交叉结果和所述第二段ID得到第二指纹信息,进一步包括:
将所述交叉结果和所述第一段ID组合成第一指纹信息,并将所述交叉结果和所述第二段ID组合成第二指纹信息。
5.根据权利要求1所述的基于双哈希的关键字匹配方法,其特征在于,所述通过匹配成功的指纹信息查询关键字表,进一步包括:
如果所述第一指纹信息与第一检索结果中的任一指纹信息匹配成功,则根据所述第一指纹信息查询所述关键字表,或者
如果所述第二指纹信息与第二检索结果中的任一指纹信息匹配成功,则根据所述第二指纹信息查询所述关键字表。
6.一种基于双哈希的关键字匹配装置,其特征在于,包括:
双哈希单元,用于通过第一哈希运算和第二哈希运算分别计算原始关键字的哈希值,得到第一哈希结果和第二哈希结果,选择所述第一哈希结果的第一片段作为第一段ID,并选择所述第二哈希结果的第二片段作为第二段ID;
交叉单元,用于对所述第一哈希结果和第二哈希结果进行交叉计算,根据交叉结果和所述第一段ID得到第一指纹信息,并根据所述交叉结果和所述第二段ID得到第二指纹信息;
匹配单元,用于根据所述第一段ID检索第一指纹表,得到第一检索结果,根据所述第二段ID检索第二指纹表,得到第二检索结果,将所述第一检索结果和所述第二检索结果分别与第一指纹信息和第二指纹信息进行匹配,通过匹配成功的指纹信息查询关键字表,以获取目标关键字,并将原始关键字与目标关键字进行比较,得到命中结果。
7.根据权利要求6所述的基于双哈希的关键字匹配装置,其特征在于,所述双哈希单元,进一步用于:
将关键字输入第一哈希运算电路,得到第一哈希结果,同时将关键字输入第二哈希运算电路,得到第二哈希结果,所述第一哈希运算电路和第二哈希运算电路基于CRC32哈希运算。
8.根据权利要求6所述的基于双哈希的关键字匹配装置,其特征在于,所述第一段ID和第二段ID的位宽相同。
9.根据权利要求6所述的基于双哈希的关键字匹配装置,其特征在于,所述交叉单元,进一步用于:
将所述交叉结果和所述第一段ID组合成第一指纹信息,并将所述交叉结果和所述第二段ID组合成第二指纹信息。
10.根据权利要求6所述的基于双哈希的关键字匹配装置,其特征在于,所述匹配单元,进一步用于:
如果所述第一指纹信息与第一检索结果中的任一指纹信息匹配成功,则根据所述第一指纹信息查询所述关键字表,或者
如果所述第二指纹信息与第二检索结果中的任一指纹信息匹配成功,则根据所述第二指纹信息查询所述关键字表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311766561.8A CN117743338B (zh) | 2023-12-20 | 2023-12-20 | 一种基于双哈希的关键字匹配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311766561.8A CN117743338B (zh) | 2023-12-20 | 2023-12-20 | 一种基于双哈希的关键字匹配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117743338A CN117743338A (zh) | 2024-03-22 |
CN117743338B true CN117743338B (zh) | 2024-05-10 |
Family
ID=90279055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311766561.8A Active CN117743338B (zh) | 2023-12-20 | 2023-12-20 | 一种基于双哈希的关键字匹配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117743338B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655821A (zh) * | 2009-08-04 | 2010-02-24 | 中兴通讯股份有限公司 | 一种解决地址空间映射哈希地址冲突的方法及装置 |
CN102663030A (zh) * | 2011-12-15 | 2012-09-12 | 清华大学 | 一种区间持久性top-k查询的双哈希表关联方法 |
US10728035B1 (en) * | 2013-12-31 | 2020-07-28 | EMC IP Holding Company LLC | Using double hashing schema to reduce short hash handle collisions and improve memory allocation in content-addressable storage systems |
CN114527929A (zh) * | 2020-11-23 | 2022-05-24 | 洪文圳 | 基于双哈希模糊布隆滤波器云存储数据融合方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11204907B2 (en) * | 2019-12-05 | 2021-12-21 | Exagrid Systems, Inc. | Accelerated and memory efficient similarity matching |
-
2023
- 2023-12-20 CN CN202311766561.8A patent/CN117743338B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655821A (zh) * | 2009-08-04 | 2010-02-24 | 中兴通讯股份有限公司 | 一种解决地址空间映射哈希地址冲突的方法及装置 |
CN102663030A (zh) * | 2011-12-15 | 2012-09-12 | 清华大学 | 一种区间持久性top-k查询的双哈希表关联方法 |
US10728035B1 (en) * | 2013-12-31 | 2020-07-28 | EMC IP Holding Company LLC | Using double hashing schema to reduce short hash handle collisions and improve memory allocation in content-addressable storage systems |
CN114527929A (zh) * | 2020-11-23 | 2022-05-24 | 洪文圳 | 基于双哈希模糊布隆滤波器云存储数据融合方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117743338A (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9672235B2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
US7143251B1 (en) | Data storage using identifiers | |
US7873041B2 (en) | Method and apparatus for searching forwarding table | |
WO2010135082A1 (en) | Localized weak bit assignment | |
US20140032568A1 (en) | System and Method for Indexing Streams Containing Unstructured Text Data | |
WO2016177830A1 (en) | Method, system and computer program product for performing numeric searches | |
CN114281989B (zh) | 基于文本相似度的数据去重方法、装置及存储介质和服务器 | |
CN111914020A (zh) | 数据同步方法及装置、数据查询方法及装置 | |
CN113392040B (zh) | 一种地址映射方法、装置、设备 | |
CN112269784B (zh) | 一种基于硬件实现的哈希表装置以及插入、查询和删除方法 | |
CN117743338B (zh) | 一种基于双哈希的关键字匹配方法和装置 | |
CN115543993A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113821630A (zh) | 一种数据聚类的方法和装置 | |
CN113392039B (zh) | 一种数据存储、查找方法及装置 | |
Brain et al. | Near‐perfect hashing of large word sets | |
CN110413617B (zh) | 一种根据数据量的大小动态调节哈希表组的方法 | |
WO2013071953A1 (en) | Fast database matching | |
CN112860712A (zh) | 一种基于区块链的交易数据库构建方法、系统及电子设备 | |
US9846739B2 (en) | Fast database matching | |
CN118227518B (zh) | 一种表项存储、查找方法、装置、网络设备及存储介质 | |
JP2000090115A (ja) | インデクス作成方法および検索方法 | |
CN103810209B (zh) | 一种保存数据的方法及系统 | |
CN117729176B (zh) | 基于网络地址和响应体的应用程序接口聚合方法及装置 | |
Yevheniia et al. | ADVANTAGES AND DISADVANTAGES OF USING DIFFERENT TYPES OF A HASHING ALGORITHMS | |
JPH1185585A (ja) | 完全メモリ常駐型インデックス方法および装置 |
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 |