CN104182393A - 基于hash表的关键字映射处理方法和装置 - Google Patents
基于hash表的关键字映射处理方法和装置 Download PDFInfo
- Publication number
- CN104182393A CN104182393A CN201310190038.5A CN201310190038A CN104182393A CN 104182393 A CN104182393 A CN 104182393A CN 201310190038 A CN201310190038 A CN 201310190038A CN 104182393 A CN104182393 A CN 104182393A
- Authority
- CN
- China
- Prior art keywords
- hash
- address
- key word
- hash table
- mapping
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于hash表的关键字映射处理方法和装置,其方法包括:按照映射规则Ti,从原始关键字Ai中提取映射关键字Bi,将映射规则Ti存储于映射规则表中存储地址为规则编号字段Ci的表项中;在映射关键字Bi中添加规则编号字段Ci,构成关键字Ki;调用哈希函数确定哈希地址Hash(Ki),判断哈希表中Hash(Ki)对应的哈希表项是否为空;当Hash(Ki)对应的哈希表项为空时,将规则编号字段Ci和关键字Ki存储于哈希表中Hash(Ki)对应的哈希表项。本发明降低了哈希运算复杂度,减少了哈希冲突,提高了哈希表资源利用率;偏移地址查找更加方便、快捷,节省了查找时间,提高了查找效率。
Description
技术领域
本发明涉及到网络通信数据处理技术领域,特别涉及到基于hash表的关键字映射处理方法和装置。
背景技术
在网络通信中,需要对网络报文进行流分类和访问控制。网络报文的流分类需要匹配的关键字可能是源/目的MAC地址、源/目的IP地址、VLAN、COS、以太网类型、协议类型、端口号、DSCP/TOS等报文包头各字段的各种组合。当数据内容又比较庞大时,常用的流分类方法不能支持大的匹配规则集,且效率低。此时,可使用hash表。hash算法将大集合的元素映射到小集合的有序元素中。它是网络流量管理的基础流分类算法之一,具有运算简单、预处理时间短、内存消耗低、支持匹配规则数多等优点。一般关键字的实际取值大于hash表的深度,当从关键字对应到hash表索引的集合是多对一的映射关系时,就会产生hash冲突。hash查找具有查找时间不固定、冲突越严重查找时间越长的特点,因此好的冲突解决方式有助于提高查找效率。一般hash冲突的解决方式有:开放定址法、拉链法、再hash法等。开放定址法解决冲突是当冲突发生时,使用某种探查技术在散列表中形成一个探查序列,沿此序列逐个单元查找,直到找到给定的关键字,或找到一个开放的地址为止,容易出现堆聚现象,且删除工作困难。拉链法是将所有关键字为同义词的节点链接在同一个单链表中,其缺点是指针需要额外的空间。再hash法是在出现冲突时用另一个hash函数计算地址直到冲突不再发生,该方法不易出现聚集,但是当找不到匹配表项时,尤其是在增加和删除操作时,查找次数就会剧增。
发明内容
本发明的主要目的为提供一种针对庞大数据量的关键字集合、有效解决hash冲突、提高hash表利用率的基于hash表的关键字映射处理方法和装置。
本发明提出一种基于hash表的关键字映射处理方法,包括步骤:
按照预设的映射规则Ti,从位宽为N1的原始关键字Ai中提取位宽为N2的映射关键字Bi,N1>> N2,并将所述映射规则Ti存储于映射规则表中存储地址为规则编号字段Ci的表项中;
在所述映射关键字Bi中添加所述规则编号字段Ci,构成位宽为N3的关键字Ki,N1>> N3;
调用哈希函数Hash(),确定哈希地址Hash(Ki),并判断哈希表中所述哈希地址Hash(Ki)对应的哈希表项是否为空;
当所述哈希地址Hash(Ki)对应的哈希表项为空时,将所述规则编号字段Ci和所述关键字Ki一一对应存储于所述哈希表中所述哈希地址Hash(Ki)对应的哈希表项。
优选地,所述判断哈希表中所述哈希地址Hash(Ki)对应的哈希表项是否为空的步骤之后还包括:
当所述哈希表中所述哈希地址Hash(Ki)对应的哈希表项不为空时,确定新哈希地址Hash(Ki)+Fj,Fj为预设的第j个地址偏移值;
判断所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项是否为空;
当所述新哈希地址Hash(Ki)+Fj对应的哈希表项为空时,将所述规则编号字段Ci和所述关键字Ki一一对应存储于所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项;
从所述关键字Ki的预设位置抽取位宽为X的固定字段Wi;
将所述规则编号字段Ci和地址偏移值Fi一一对应,并存储于所述固定字段Wi对应的偏移地址映射表中。
优选地,所述判断哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项是否为空的步骤之后还包括:
当所述新哈希地址Hash(Ki)+Fj对应的哈希表项不为空时,令所述地址偏移值Fj=Fj’,Fj’为预设的第j’个地址偏移值,并执行判断所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项是否为空的步骤。
优选地,所述令地址偏移值Fj=Fj’的步骤之前还包括:
判断所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项中存 储的内容是否为所述规则编号字段Ci和所述关键字Ki;
如果是,则退出程序;
如果否,则执行令地址偏移值Fj=Fj’的步骤。
优选地,所述将规则编号字段Ci和所述关键字Ki一一对应存储于所述哈希表中所述哈希地址Hash(Ki)对应的哈希表项的步骤之后还包括:
从所述关键字Ki的预设位置抽取位宽为X的固定字段Wi;
令地址偏移值Fj=0;
将所述规则编号字段Ci和地址偏移值Fj一一对应,并存储于所述固定字段Wi对应的偏移地址映射表中。
优选地,当需要删除哈希表中存储的关键字Ki时,包括步骤:
从所述关键字Ki的预设位置抽取位宽为X的固定字段Wi;
在所述固定字段Wi对应的偏移地址映射表中查询所述规则编号字段Ci对应的所述地址偏移值Fj;
调用所述哈希函数Hash(),根据所述关键字Ki和所述地址偏移值Fj,确定哈希地址Hash(Ki)+Fj;
在所述哈希表中查找所述哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容;
当所述哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容中包括了所述关键字Ki时,则删除所述哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容,并删除所述固定字段Wi对应的偏移地址映射表中存储的所述规则编号字段Ci和地址偏移值Fj。
本发明还提出一种基于hash表的关键字映射处理装置,包括:
第一映射模块,用于按照预设的映射规则Ti,从位宽为N1的原始关键字Ai中提取位宽为N2的映射关键字Bi,N1>> N2,并将所述映射规则Ti存储于映射规则表中存储地址为规则编号字段Ci的表项中;
构建模块,用于在所述映射关键字Bi中添加所述规则编号字段Ci,构成位宽为N3的关键字Ki,N1>> N3;
计算模块,用于调用哈希函数Hash(),确定哈希地址Hash(Ki);
判断模块,用于判断哈希表中所述哈希地址Hash(Ki)对应的哈希表项是否为空;
存储模块,用于当所述判断模块判定所述哈希地址Hash(Ki)对应的哈希表项为空时,将所述规则编号字段Ci和所述关键字Ki一一对应存储于所述哈希表中所述哈希地址Hash(Ki)对应的哈希表项。
优选地,所述计算模块还用于,当所述哈希表中所述哈希地址Hash(Ki)对应的哈希表项不为空时,确定新哈希地址Hash(Ki)+Fj,Fj为预设的第j个地址偏移值;
所述判断模块还用于,判断所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项是否为空;
所述存储模块还用于,当所述判断模块判定所述新哈希地址Hash(Ki)+Fj对应的哈希表项为空时,将所述规则编号字段Ci和所述关键字Ki一一对应存储于所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项;
所述基于hash表的关键字映射处理装置还包括:
第二映射模块,用于从所述关键字Ki的预设位置抽取位宽为X的固定字段Wi;将所述规则编号字段Ci和地址偏移值Fi一一对应,并存储于所述固定字段Wi对应的偏移地址映射表中。
优选地,所述计算模块还用于,当所述新哈希地址Hash(Ki)+Fj对应的哈希表项不为空时,令所述地址偏移值Fj=Fj’,Fj’为预设的第j’个地址偏移值,并将所述地址偏移值Fj=Fj’发送至判断模块。
优选地,所述判断模块还用于:
判断所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容是否为所述规则编号字段Ci和所述关键字Ki;
如果是,则退出程序;
如果否,则将判断结果发送至所述计算模块。
优选地,所述第二映射模块还用于:
从所述关键字Ki的预设位置抽取位宽为X的固定字段Wi;
令地址偏移值Fj=0;
将所述规则编号字段Ci和地址偏移值Fj一一对应,并存储于所述固定字段Wi对应的偏移地址映射表中。
优选地,所述基于hash表的关键字映射处理装置还包括删除模块,用于:
当需要删除哈希表中存储的关键字Ki时,从所述关键字Ki的预设位置 抽取位宽为X的固定字段Wi;
在所述固定字段Wi对应的偏移地址映射表中查询所述规则编号字段Ci对应的所述地址偏移值Fj;
调用所述哈希函数Hash(),根据所述关键字Ki和所述地址偏移值Fj,确定哈希地址Hash(Ki)+Fj;
在所述哈希表中查找所述哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容;
当所述哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容中包括了所述关键字Ki时,则删除所述哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容,并删除所述固定字段Wi对应的偏移地址映射表中存储的所述规则编号字段Ci和地址偏移值Fj。
本发明降低了哈希运算的复杂程度,减少了哈希冲突,使哈希表资源的利用率得到了有效的提高;偏移地址的查找更加方便、快捷,有效节省了查找时间,提高了查找效率。
附图说明
图1为本发明基于hash表的关键字映射处理方法的第一实施例的流程图;
图2为本发明基于hash表的关键字映射处理方法的第二实施例的流程图;
图3为本发明基于hash表的关键字映射处理方法的第三实施例的流程图;
图4为本发明基于hash表的关键字映射处理方法的第四实施例的流程图;
图5为本发明基于hash表的关键字映射处理方法的第五实施例的流程图;
图6为本发明基于hash表的关键字映射处理装置的第一实施例的结构示意图;
图7为本发明基于hash表的关键字映射处理装置的第二实施例的结构示意图;
图8为本发明基于hash表的关键字映射处理装置的第三实施例的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步 说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1为本发明基于hash表的关键字映射处理方法的第一实施例的流程图。本实施例提到的基于hash表的关键字映射处理方法,包括:
步骤S10,按照预设的映射规则Ti,从位宽为N1的原始关键字Ai中提取位宽为N2的映射关键字Bi,N1>> N2,并将映射规则Ti存储于映射规则表中存储地址为规则编号字段Ci的表项中;
由于原始关键字Ai的位宽很庞大,远大于哈希表深度,为了降低哈希运算复杂度、减少哈希冲突,本实施例采用了分解原始关键字的方法,建立一张映射规则表,将位宽非常庞大的原始关键字Ai的集合,映射为位宽相对较窄的映射关键字Bi的集合。其中,映射规则Ti是指从原始关键字Ai中提取映射关键字Bi的具体方式。
步骤S20,在映射关键字Bi中添加规则编号字段Ci,构成位宽为N3的关键字Ki,N1>> N3;
为了使关键字更加可控,在映射后的映射关键字Bi中添加一些具有特殊性和取值范围明确的字段,所构成的关键字Ki的位宽相对于原始关键字Ai来说,仍然是比较窄的。本实施例中,将映射规则Ti在映射规则表中的存储地址,即规则编号字段Ci,作为添加到映射关键字Bi中的特殊字段,构成关键字Ki,使后续获得映射关键字Bi以及查找映射规则表中的映射规则Ti更加简单、方便、快捷。
步骤S30,调用哈希函数Hash(),确定哈希地址Hash(Ki),并判断哈希表中哈希地址Hash(Ki)对应的哈希表项是否为空;
建立一张哈希表,深度为2^M,M<N3。由于相同的哈希函数,不同的关键字,仍然可以获得相同的哈希地址,此时就发生了哈希冲突,因此,需要对哈希地址对应的哈希表项进行判断,以解决哈希冲突。
步骤S40,当哈希地址Hash(Ki)对应的哈希表项为空时,将规则编号字段Ci和关键字Ki一一对应存储于哈希表中哈希地址Hash(Ki)对应的哈 希表项。
当哈希地址Hash(Ki)对应的哈希表项为空,说明不存在哈希冲突,可以直接将需要存储的内容存入对应的哈希表项中。在进行查找时,可调用哈希函数Hash(),根据关键字Ki获得哈希地址Hash(Ki),查找哈希地址Hash(Ki)对应的哈希表项中的内容。
本实施例将位宽非常庞大的原始关键字Ai映射为位宽较窄的映射关键字Bi,降低了哈希运算的复杂程度,减少了哈希冲突,使哈希表资源的利用率得到了有效的提高。
如图2所示,图2为本发明基于hash表的关键字映射处理方法的第二实施例的流程图。本实施例以图1所示实施例为基础,在步骤S30之后还包括:
步骤S31,当哈希表中哈希地址Hash(Ki)对应的哈希表项不为空时,确定新哈希地址Hash(Ki)+Fj,Fj为预设的第j个地址偏移值;
当通过哈希地址Hash(Ki)查找的哈希表项中有内容时,此时发生了哈希冲突,需要进行地址偏移。本实施例中的地址偏移值Fj控制在预设的偏移范围内,范围为0~(2^Z-1),Z<<N3,例如在1~15范围内。
步骤S32,判断哈希表中新哈希地址Hash(Ki)+Fj对应的哈希表项是否为空;如果是,则执行步骤S33;如果否,则执行步骤S36;
步骤S33,当新哈希地址Hash(Ki)+Fj对应的哈希表项为空时,将规则编号字段Ci和关键字Ki一一对应存储于哈希表中新哈希地址Hash(Ki)+Fj对应的哈希表项;
步骤S34,从关键字Ki的预设位置抽取位宽为X的固定字段Wi;
步骤S35,将规则编号字段Ci和地址偏移值Fi一一对应,并存储于固定字段Wi对应的偏移地址映射表中。
为了明确在哈希冲突后进行了多大的偏移,避免后续在进行关键字查找时逐一查找地址偏移值造成时间的浪费,本实施例建立了偏移地址映射表,从关键字Ki的预设位置抽取位宽为X的固定字段Wi,每一个固定字段Wi对应一张偏移地址映射表,采用固定字段Wi作为偏移地址映射表的地址,并在规则编号字段Ci和地址偏移值Fi之间建立特定的预设关系,将其一一对应存储在Wi对应的偏移地址映射表中,在进行关键字查找时,通过Wi查找到 对应的偏移地址映射表,并在偏移地址映射表中直接通过Ci查找对应的Fi,节省了查找时间,提高了查找效率。其中,Wi的取值范围为0~(2^X-1),X<M。
步骤S36,当新哈希地址Hash(Ki)+Fj对应的哈希表项不为空时,令地址偏移值Fj=Fj’,Fj’为预设的第j’个地址偏移值,并返回步骤S32。
此外,在查询哈希表项时,从第一个地址偏移值F1开始查询,依次遍历,直至查询到空的哈希表项。
本实施例通过建立偏移地址映射表,在哈希查找过程中发送哈希冲突时,无需逐一查找偏移地址,使偏移地址的查找更加方便、快捷,有效节省了查找时间,提高了查找效率。
如图3所示,图3为本发明基于hash表的关键字映射处理方法的第三实施例的流程图。本实施例以图2所示实施例为基础,在步骤S36之前还包括:
步骤S37,判断哈希表中新哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容是否为规则编号字段Ci和关键字Ki;如果是,则退出程序;如果否,则执行步骤S36。
本实施例中,为了避免对相同的内容重复存储造成哈希表项的资源浪费,在发生哈希冲突时还需要判断待存储的内容与冲突的哈希表项中存储的内容是否一致,如果一致,则无需重复存储,如果不一致,再进行地址偏移操作,查找空的哈希表项。
如图4所示,图4为本发明基于hash表的关键字映射处理方法的第四实施例的流程图。本实施例以图1所示实施例为基础,在步骤S40之后还包括:
步骤S41,从关键字Ki的预设位置抽取位宽为X的固定字段Wi;
步骤S42,令地址偏移值Fj=0;
步骤S43,将规则编号字段Ci和地址偏移值Fj一一对应,并存储于固定字段Wi对应的偏移地址映射表中。
本实施例中,在哈希查询关键字时,为了简化查找流程,使哈希查找在冲突发生或不发生的时候都采用相同的方式查找,当没有哈希冲突发生时,将地址偏移值Fj赋值为0,并采用前述实施例中同样的方式将Ci 和地址偏移 值Fj一一对应存储于Wi对应的偏移地址映射表中。
如图5所示,图5为本发明基于hash表的关键字映射处理方法的第五实施例的流程图。本实施例为需要删除哈希表中存储的关键字Ki时的步骤流程图,包括:
步骤S51,从关键字Ki的预设位置抽取位宽为X的固定字段Wi;
步骤S52,在固定字段Wi对应的偏移地址映射表中查询规则编号字段Ci对应的地址偏移值Fj;
步骤S53,调用哈希函数Hash(),根据关键字Ki和地址偏移值Fj,确定哈希地址Hash(Ki)+Fj;
步骤S54,在哈希表中查找哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容;
步骤S55,当哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容中包括了关键字Ki时,则删除哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容,并删除固定字段Wi对应的偏移地址映射表中存储的规则编号字段Ci和地址偏移值Fj。
本实施例从关键字Ki中抽取固定字段Wi,在固定字段Wi对应的偏移地址映射表中直接获得Ci对应的地址偏移值Fj,确定哈希地址Hash(Ki)+Fj,当哈希地址Hash(Ki)+Fj对应的哈希表项中存储的关键字与用于哈希计算的关键字相同时,则说明查找到用于存储关键字Ki的哈希表表项,删除该表项中的内容以及偏移地址映射表中存储的对应内容,如此一来,即使在哈希冲突发生时,无需逐一查找,使偏移地址的查找更加方便、快捷,有效节省了查找时间,提高了查找效率。如果查找到的Hash(Ki)+Fj对应的哈希表项中存储的关键字与用于哈希计算的关键字不同,则说明该哈希表中没有关键字Ki的存储表项,退出流程。
如图6所示,图6为本发明基于hash表的关键字映射处理装置的第一实施例的结构示意图。本实施例提到的基于hash表的关键字映射处理装置,包括:
第一映射模块10,用于按照预设的映射规则Ti,从位宽为N1的原始关 键字Ai中提取位宽为N2的映射关键字Bi,N1>> N2,并将映射规则Ti存储于映射规则表中存储地址为规则编号字段Ci的表项中;
构建模块20,用于在映射关键字Bi中添加规则编号字段Ci,构成位宽为N3的关键字Ki,N1>> N3;
计算模块30,用于调用哈希函数Hash(),确定哈希地址Hash(Ki);
判断模块40,用于判断哈希表中哈希地址Hash(Ki)对应的哈希表项是否为空;
存储模块50,用于当判断模块40判定哈希地址Hash(Ki)对应的哈希表项为空时,将规则编号字段Ci和关键字Ki一一对应存储于哈希表中哈希地址Hash(Ki)对应的哈希表项。
本实施例中,由于原始关键字Ai的位宽很庞大,远大于哈希表深度,为了降低哈希运算复杂度、减少哈希冲突,本实施例采用了分解原始关键字的方法,建立一张映射规则表,将位宽非常庞大的原始关键字Ai的集合,映射为位宽相对较窄的映射关键字Bi的集合。其中,映射规则Ti是指从原始关键字Ai中提取映射关键字Bi的具体方式。为了使关键字更加可控,在映射后的映射关键字Bi中添加一些具有特殊性和取值范围明确的字段,所构成的关键字Ki的位宽相对于原始关键字Ai来说,仍然是比较窄的。本实施例中,将映射规则Ti在映射规则表中的存储地址,即规则编号字段Ci,作为添加到映射关键字Bi中的特殊字段,构成关键字Ki,使后续获得映射关键字Bi以及查找映射规则表中的映射规则Ti更加简单、方便、快捷。建立一张哈希表,深度为2^M,M<N3。由于相同的哈希函数,不同的关键字,仍然可以获得相同的哈希地址,此时就发生了哈希冲突,因此,需要对哈希地址对应的哈希表项进行判断,以解决哈希冲突。当哈希地址Hash(Ki)对应的哈希表项为空,说明不存在哈希冲突,可以直接将需要存储的内容存入对应的哈希表项中。在进行查找时,可调用哈希函数Hash(),根据关键字Ki获得哈希地址Hash(Ki),查找哈希地址Hash(Ki)对应的哈希表项中的内容。本实施例将位宽非常庞大的原始关键字Ai映射为位宽较窄的映射关键字Bi,降低了哈希运算的复杂程度,减少了哈希冲突,使哈希表资源的利用率得到了有效的提高。
如图7所示,图7为本发明基于hash表的关键字映射处理装置的第二实施例的结构示意图。本实施例在图6所示实施例的基础上,增加了第二映射模块60,其中:
计算模块30还用于,当哈希表中哈希地址Hash(Ki)对应的哈希表项不为空时,确定新哈希地址Hash(Ki)+Fj,Fj为预设的第j个地址偏移值;
判断模块40还用于,判断哈希表中新哈希地址Hash(Ki)+Fj对应的哈希表项是否为空;
存储模块50还用于,当判断模块40判定新哈希地址Hash(Ki)+Fj对应的哈希表项为空时,将规则编号字段Ci和关键字Ki一一对应存储于哈希表中新哈希地址Hash(Ki)+Fj对应的哈希表项;
第二映射模块60,用于从关键字Ki的预设位置抽取位宽为X的固定字段Wi;将规则编号字段Ci和地址偏移值Fi一一对应,并存储于固定字段Wi对应的偏移地址映射表中。
计算模块30还用于,当新哈希地址Hash(Ki)+Fj对应的哈希表项不为空时,令地址偏移值Fj=Fj’,Fj’为预设的第j’个地址偏移值,并将地址偏移值Fj=Fj’发送至判断模块40。
本实施例中,当通过哈希地址Hash(Ki)查找的哈希表项中有内容时,此时发生了哈希冲突,需要进行地址偏移。本实施例中的地址偏移值Fj控制在预设的偏移范围内,范围为0~(2^Z-1),Z<<N3,例如在1~15范围内。为了明确在哈希冲突后进行了多大的偏移,避免后续在进行关键字查找时逐一查找地址偏移值造成时间的浪费,本实施例建立了偏移地址映射表,从关键字Ki的预设位置抽取位宽为X的固定字段Wi,每一个固定字段Wi对应一张偏移地址映射表,采用固定字段Wi作为偏移地址映射表的地址,并在规则编号字段Ci和地址偏移值Fi之间建立特定的预设关系,将其一一对应存储在Wi对应的偏移地址映射表中,在进行关键字查找时,通过Wi查找到对应的偏移地址映射表,并在偏移地址映射表中直接通过Ci查找对应的Fi,节省了查找时间,提高了查找效率。其中,Wi的取值范围为0~(2^X-1),X<M。此外,在查询哈希表项时,从第一个地址偏移值F1开始查询,依次遍历,直至查询到空的哈希表项。本实施例通过建立偏移地址映射表,在哈希查找过程中发送哈希冲突时,无需逐一查找偏移地址,使偏移地址的查找更加方便、 快捷,有效节省了查找时间,提高了查找效率。
本发明实施例中,判断模块40还用于:
判断哈希表中新哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容是否为规则编号字段Ci和关键字Ki;
如果是,则退出程序;
如果否,则将判断结果发送至计算模块30。
本实施例中,为了避免对相同的内容重复存储造成哈希表项的资源浪费,在发生哈希冲突时还需要判断待存储的内容与冲突的哈希表项中存储的内容是否一致,如果一致,则无需重复存储,如果不一致,再进行地址偏移操作,查找空的哈希表项。
本发明实施例中,第二映射模块60还用于:
从关键字Ki的预设位置抽取位宽为X的固定字段Wi;
令地址偏移值Fj=0;
将规则编号字段Ci和地址偏移值Fj一一对应,并存储于固定字段Wi对应的偏移地址映射表中。
本实施例中,在哈希查询关键字时,为了简化查找流程,使哈希查找在冲突发生或不发生的时候都采用相同的方式查找,当没有哈希冲突发生时,将地址偏移值Fj赋值为0,并采用前述实施例中同样的方式将Ci和地址偏移值Fj一一对应存储于Wi对应的偏移地址映射表中。
如图8所示,图8为本发明基于hash表的关键字映射处理装置的第三实施例的结构示意图。本实施例为用于查找原始关键字Ai的结构示意图,在图7所示实施例的基础上,增加了删除模块70,用于:
当需要删除哈希表中存储的关键字Ki时,从关键字Ki的预设位置抽取位宽为X的固定字段Wi;
在固定字段Wi对应的偏移地址映射表中查询规则编号字段Ci对应的地址偏移值Fj;
调用哈希函数Hash(),根据关键字Ki和地址偏移值Fj,确定哈希地址 Hash(Ki)+Fj;
在哈希表中查找哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容;
当哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容中包括了关键字Ki时,则删除哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容,并删除固定字段Wi对应的偏移地址映射表中存储的规则编号字段Ci和地址偏移值Fj。
本实施例从关键字Ki中抽取固定字段Wi,在固定字段Wi对应的偏移地址映射表中直接获得Ci对应的地址偏移值Fj,确定哈希地址Hash(Ki)+Fj,当哈希地址Hash(Ki)+Fj对应的哈希表项中存储的关键字与用于哈希计算的关键字相同时,则说明查找到用于存储关键字Ki的哈希表表项,删除该表项中的内容以及偏移地址映射表中存储的对应内容,如此一来,即使在哈希冲突发生时,无需逐一查找,使偏移地址的查找更加方便、快捷,有效节省了查找时间,提高了查找效率。如果查找到的Hash(Ki)+Fj对应的哈希表项中存储的关键字与用于哈希计算的关键字不同,则说明该哈希表中没有关键字Ki的存储表项,退出流程。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (12)
1.一种基于hash表的关键字映射处理方法,其特征在于,包括步骤:
按照预设的映射规则Ti,从位宽为N1的原始关键字Ai中提取位宽为N2的映射关键字Bi,N1>> N2,并将所述映射规则Ti存储于映射规则表中存储地址为规则编号字段Ci的表项中;
在所述映射关键字Bi中添加所述规则编号字段Ci,构成位宽为N3的关键字Ki,N1>> N3;
调用哈希函数Hash(),确定哈希地址Hash(Ki),并判断哈希表中所述哈希地址Hash(Ki)对应的哈希表项是否为空;
当所述哈希地址Hash(Ki)对应的哈希表项为空时,将所述规则编号字段Ci和所述关键字Ki一一对应存储于所述哈希表中所述哈希地址Hash(Ki)对应的哈希表项。
2.根据权利要求1所述的基于hash表的关键字映射处理方法,其特征在于,所述判断哈希表中所述哈希地址Hash(Ki)对应的哈希表项是否为空的步骤之后还包括:
当所述哈希表中所述哈希地址Hash(Ki)对应的哈希表项不为空时,确定新哈希地址Hash(Ki)+Fj,Fj为预设的第j个地址偏移值;
判断所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项是否为空;
当所述新哈希地址Hash(Ki)+Fj对应的哈希表项为空时,将所述规则编号字段Ci和所述关键字Ki一一对应存储于所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项;
从所述关键字Ki的预设位置抽取位宽为X的固定字段Wi;
将所述规则编号字段Ci和地址偏移值Fi一一对应,并存储于所述固定字段Wi对应的偏移地址映射表中。
3.根据权利要求2所述的基于hash表的关键字映射处理方法,其特征在于,所述判断哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项是否为空的步骤之后还包括:
当所述新哈希地址Hash(Ki)+Fj对应的哈希表项不为空时,令所述地址偏移值Fj=Fj’,Fj’为预设的第j’个地址偏移值,并执行判断所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项是否为空的步骤。
4.根据权利要求3所述的基于hash表的关键字映射处理方法,其特征在于,所述令地址偏移值Fj=Fj’的步骤之前还包括:
判断所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容是否为所述规则编号字段Ci和所述关键字Ki;
如果是,则退出程序;
如果否,则执行令地址偏移值Fj=Fj’的步骤。
5.根据权利要求1至4任一项所述的基于hash表的关键字映射处理方法,其特征在于,所述将规则编号字段Ci和所述关键字Ki一一对应存储于所述哈希表中所述哈希地址Hash(Ki)对应的哈希表项的步骤之后还包括:
从所述关键字Ki的预设位置抽取位宽为X的固定字段Wi;
令地址偏移值Fj=0;
将所述规则编号字段Ci和地址偏移值Fj一一对应,并存储于所述固定字段Wi对应的偏移地址映射表中。
6.根据权利要求5所述的基于hash表的关键字映射处理方法,其特征在于,当需要删除哈希表中存储的关键字Ki时,包括步骤:
从所述关键字Ki的预设位置抽取位宽为X的固定字段Wi;
在所述固定字段Wi对应的偏移地址映射表中查询所述规则编号字段Ci对应的所述地址偏移值Fj;
调用所述哈希函数Hash(),根据所述关键字Ki和所述地址偏移值Fj,确定哈希地址Hash(Ki)+Fj;
在所述哈希表中查找所述哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容;
当所述哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容中包括了所述关键字Ki时,则删除所述哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容,并删除所述固定字段Wi对应的偏移地址映射表中存储的所述规则编号字段Ci和地址偏移值Fj。
7.一种基于hash表的关键字映射处理装置,其特征在于,包括:
第一映射模块,用于按照预设的映射规则Ti,从位宽为N1的原始关键字Ai中提取位宽为N2的映射关键字Bi,N1>> N2,并将所述映射规则Ti存储于映射规则表中存储地址为规则编号字段Ci的表项中;
构建模块,用于在所述映射关键字Bi中添加所述规则编号字段Ci,构成位宽为N3的关键字Ki,N1>> N3;
计算模块,用于调用哈希函数Hash(),确定哈希地址Hash(Ki);
判断模块,用于判断哈希表中所述哈希地址Hash(Ki)对应的哈希表项是否为空;
存储模块,用于当所述判断模块判定所述哈希地址Hash(Ki)对应的哈希表项为空时,将所述规则编号字段Ci和所述关键字Ki一一对应存储于所述哈希表中所述哈希地址Hash(Ki)对应的哈希表项。
8.根据权利要求7所述的基于hash表的关键字映射处理装置,其特征在于,所述计算模块还用于,当所述哈希表中所述哈希地址Hash(Ki)对应的哈希表项不为空时,确定新哈希地址Hash(Ki)+Fj,Fj为预设的第j个地址偏移值;
所述判断模块还用于,判断所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项是否为空;
所述存储模块还用于,当所述判断模块判定所述新哈希地址Hash(Ki)+Fj对应的哈希表项为空时,将所述规则编号字段Ci和所述关键字Ki一一对应存储于所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项;
所述基于hash表的关键字映射处理装置还包括:
第二映射模块,用于从所述关键字Ki的预设位置抽取位宽为X的固定字段Wi;将所述规则编号字段Ci和地址偏移值Fi一一对应,并存储于所述固定字段Wi对应的偏移地址映射表中。
9.根据权利要求8所述的基于hash表的关键字映射处理装置,其特征在于,所述计算模块还用于,当所述新哈希地址Hash(Ki)+Fj对应的哈希表项不为空时,令所述地址偏移值Fj=Fj’,Fj’为预设的第j’个地址偏移值,并将所述地址偏移值Fj=Fj’发送至判断模块。
10.根据权利要求9所述的基于hash表的关键字映射处理装置,其特征在于,所述判断模块还用于:
判断所述哈希表中所述新哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容是否为所述规则编号字段Ci和所述关键字Ki;
如果是,则退出程序;
如果否,则将判断结果发送至所述计算模块。
11.根据权利要求8至10任一项所述的基于hash表的关键字映射处理装置,其特征在于,所述第二映射模块还用于:
从所述关键字Ki的预设位置抽取位宽为X的固定字段Wi;
令地址偏移值Fj=0;
将所述规则编号字段Ci和地址偏移值Fj一一对应,并存储于所述固定字段Wi对应的偏移地址映射表中。
12.根据权利要求11所述的基于hash表的关键字映射处理装置,其特征在于,还包括删除模块,用于:
当需要删除哈希表中存储的关键字Ki时,从所述关键字Ki的预设位置抽取位宽为X的固定字段Wi;
在所述固定字段Wi对应的偏移地址映射表中查询所述规则编号字段Ci对应的所述地址偏移值Fj;
调用所述哈希函数Hash(),根据所述关键字Ki和所述地址偏移值Fj,确定哈希地址Hash(Ki)+Fj;
在所述哈希表中查找所述哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容;
当所述哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容中包括了所述关键字Ki时,则删除所述哈希地址Hash(Ki)+Fj对应的哈希表项中存储的内容,并删除所述固定字段Wi对应的偏移地址映射表中存储的所述规则编号字段Ci和地址偏移值Fj。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310190038.5A CN104182393A (zh) | 2013-05-21 | 2013-05-21 | 基于hash表的关键字映射处理方法和装置 |
PCT/CN2013/082110 WO2014187040A1 (zh) | 2013-05-21 | 2013-08-22 | 基于hash表的关键字映射处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310190038.5A CN104182393A (zh) | 2013-05-21 | 2013-05-21 | 基于hash表的关键字映射处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104182393A true CN104182393A (zh) | 2014-12-03 |
Family
ID=51932753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310190038.5A Pending CN104182393A (zh) | 2013-05-21 | 2013-05-21 | 基于hash表的关键字映射处理方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104182393A (zh) |
WO (1) | WO2014187040A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109218224A (zh) * | 2018-10-22 | 2019-01-15 | 王瑶生 | 一种高效且可扩展的ip数据包分类方法 |
CN109656468A (zh) * | 2017-10-11 | 2019-04-19 | 深圳市中兴微电子技术有限公司 | 一种实现数据存储的方法及装置 |
CN111259203A (zh) * | 2020-01-08 | 2020-06-09 | 上海兆芯集成电路有限公司 | 数据压缩器以及数据压缩方法 |
CN111950000A (zh) * | 2020-07-30 | 2020-11-17 | 新华三技术有限公司 | 一种接入访问控制方法及设备 |
CN112702277A (zh) * | 2020-12-15 | 2021-04-23 | 锐捷网络股份有限公司 | 一种负载均衡配置优化的方法和装置 |
CN113297219A (zh) * | 2021-05-21 | 2021-08-24 | 山东云海国创云计算装备产业创新中心有限公司 | 一种字段存储方法、装置、设备及存储介质 |
CN114422478A (zh) * | 2021-12-21 | 2022-04-29 | 福建星网智慧科技有限公司 | 一种gemport id和mac地址映射的方法和存储设备 |
CN117390029A (zh) * | 2023-12-11 | 2024-01-12 | 格创通信(浙江)有限公司 | 一种表项插入方法、装置、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080235215A1 (en) * | 2007-03-22 | 2008-09-25 | Fujitsu Limited | Data search method, recording medium recording program, and apparatus |
US20100287172A1 (en) * | 2009-05-11 | 2010-11-11 | Red Hat, Inc . | Federated Document Search by Keywords |
US20100287173A1 (en) * | 2009-05-11 | 2010-11-11 | Red Hat, Inc. | Searching Documents for Successive Hashed Keywords |
US20120197995A1 (en) * | 2011-01-31 | 2012-08-02 | Social Resolve, Llc | Social media content management system and method |
CN102937993A (zh) * | 2012-11-09 | 2013-02-20 | 北京小米科技有限责任公司 | 一种用于访问关键字的方法及装置 |
CN102955778A (zh) * | 2011-08-18 | 2013-03-06 | 腾讯科技(深圳)有限公司 | 一种网络社区数据的快速查找方法及系统 |
CN102968465A (zh) * | 2012-11-09 | 2013-03-13 | 同济大学 | 网络信息服务平台及其基于该平台的搜索服务方法 |
CN102968466A (zh) * | 2012-11-09 | 2013-03-13 | 同济大学 | 基于网页分类的索引网络构建方法及其索引网构建器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100470550C (zh) * | 2007-04-02 | 2009-03-18 | 华为技术有限公司 | 一种信息存储的方法、信息查找的方法及引擎装置 |
CN101355448B (zh) * | 2008-09-03 | 2012-01-11 | 中兴通讯股份有限公司 | 上载比较方法和装置 |
CN101540723B (zh) * | 2009-04-20 | 2011-07-06 | 杭州华三通信技术有限公司 | 一种流表查找方法和装置 |
-
2013
- 2013-05-21 CN CN201310190038.5A patent/CN104182393A/zh active Pending
- 2013-08-22 WO PCT/CN2013/082110 patent/WO2014187040A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080235215A1 (en) * | 2007-03-22 | 2008-09-25 | Fujitsu Limited | Data search method, recording medium recording program, and apparatus |
US20100287172A1 (en) * | 2009-05-11 | 2010-11-11 | Red Hat, Inc . | Federated Document Search by Keywords |
US20100287173A1 (en) * | 2009-05-11 | 2010-11-11 | Red Hat, Inc. | Searching Documents for Successive Hashed Keywords |
US20120197995A1 (en) * | 2011-01-31 | 2012-08-02 | Social Resolve, Llc | Social media content management system and method |
CN102955778A (zh) * | 2011-08-18 | 2013-03-06 | 腾讯科技(深圳)有限公司 | 一种网络社区数据的快速查找方法及系统 |
CN102937993A (zh) * | 2012-11-09 | 2013-02-20 | 北京小米科技有限责任公司 | 一种用于访问关键字的方法及装置 |
CN102968465A (zh) * | 2012-11-09 | 2013-03-13 | 同济大学 | 网络信息服务平台及其基于该平台的搜索服务方法 |
CN102968466A (zh) * | 2012-11-09 | 2013-03-13 | 同济大学 | 基于网页分类的索引网络构建方法及其索引网构建器 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656468A (zh) * | 2017-10-11 | 2019-04-19 | 深圳市中兴微电子技术有限公司 | 一种实现数据存储的方法及装置 |
CN109218224A (zh) * | 2018-10-22 | 2019-01-15 | 王瑶生 | 一种高效且可扩展的ip数据包分类方法 |
CN111259203A (zh) * | 2020-01-08 | 2020-06-09 | 上海兆芯集成电路有限公司 | 数据压缩器以及数据压缩方法 |
CN111259203B (zh) * | 2020-01-08 | 2023-08-25 | 上海兆芯集成电路股份有限公司 | 数据压缩器以及数据压缩方法 |
CN111950000A (zh) * | 2020-07-30 | 2020-11-17 | 新华三技术有限公司 | 一种接入访问控制方法及设备 |
CN111950000B (zh) * | 2020-07-30 | 2022-10-21 | 新华三技术有限公司 | 一种接入访问控制方法及设备 |
CN112702277A (zh) * | 2020-12-15 | 2021-04-23 | 锐捷网络股份有限公司 | 一种负载均衡配置优化的方法和装置 |
CN112702277B (zh) * | 2020-12-15 | 2023-01-10 | 锐捷网络股份有限公司 | 一种负载均衡配置优化的方法和装置 |
CN113297219A (zh) * | 2021-05-21 | 2021-08-24 | 山东云海国创云计算装备产业创新中心有限公司 | 一种字段存储方法、装置、设备及存储介质 |
CN114422478A (zh) * | 2021-12-21 | 2022-04-29 | 福建星网智慧科技有限公司 | 一种gemport id和mac地址映射的方法和存储设备 |
CN117390029A (zh) * | 2023-12-11 | 2024-01-12 | 格创通信(浙江)有限公司 | 一种表项插入方法、装置、电子设备及存储介质 |
CN117390029B (zh) * | 2023-12-11 | 2024-05-17 | 格创通信(浙江)有限公司 | 一种表项插入方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2014187040A1 (zh) | 2014-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104182393A (zh) | 基于hash表的关键字映射处理方法和装置 | |
US11379422B2 (en) | Text deduplication method and apparatus, and storage medium | |
CN105138592B (zh) | 一种基于分布式架构的日志数据存储和检索方法 | |
US20190222603A1 (en) | Method and apparatus for network forensics compression and storage | |
CN101594319B (zh) | 表项查找方法和装置 | |
CN105224692A (zh) | 支持多核处理器的sdn多级流表并行查找的系统及方法 | |
CN112866111B (zh) | 流表管理的方法和装置 | |
CN102945249B (zh) | 一种策略规则匹配查询树生成方法、匹配方法及装置 | |
CN104252528B (zh) | 基于标识符空间映射的大数据二级索引构建方法 | |
CN104394211A (zh) | 一种基于Hadoop用户行为分析系统设计与实现方法 | |
CN107391770B (zh) | 一种处理数据的方法、装置、设备以及存储介质 | |
CN111159002B (zh) | 一种基于分组的数据边缘采集方法、边缘采集设备及系统 | |
CN109921995A (zh) | 一种配置地址表的方法、fpga和应用该fpga的网络设备 | |
CN110769080B (zh) | 一种域名解析方法、相关产品及计算机可读存储介质 | |
CN102045412B (zh) | IPv6地址前缀压缩存储方法及设备 | |
WO2021104393A1 (zh) | 多规则流分类的实现方法、设备和存储介质 | |
CN105515997A (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
CN106802927A (zh) | 一种数据存储方法及查询方法 | |
CN103856503B (zh) | Nas集群系统的文件数据的处理方法及nas集群系统 | |
CN113900810A (zh) | 分布式图处理方法、系统及存储介质 | |
CN104933054A (zh) | 缓存资源文件的url存储方法及装置、缓存服务器 | |
CN104253754A (zh) | 一种acl快速匹配的方法和设备 | |
CN103532737A (zh) | 一种处理多种类型告警的方法、装置及系统 | |
WO2020248690A1 (zh) | 报文匹配查表方法、系统、存储介质和终端 | |
CN110399534B (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20141203 |