CN101594319B - 表项查找方法和装置 - Google Patents
表项查找方法和装置 Download PDFInfo
- Publication number
- CN101594319B CN101594319B CN2009100883615A CN200910088361A CN101594319B CN 101594319 B CN101594319 B CN 101594319B CN 2009100883615 A CN2009100883615 A CN 2009100883615A CN 200910088361 A CN200910088361 A CN 200910088361A CN 101594319 B CN101594319 B CN 101594319B
- Authority
- CN
- China
- Prior art keywords
- keyword
- hash table
- list item
- index
- level
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及一种表项查找方法和装置。方法包括:将原始关键字分割为子关键字,分别以各子关键字作为第一关键字查找第一级散列表,得到第一表项;根据第一关键字的同义词的数量值最小的第一表项中保存的第一索引,获取第二级散列表,以原始关键字中除第一关键字字外的其他子关键字作为第二关键字查找第二级散列表,得到第二表项;根据第二表项中保存的第二索引,获取第三级散列表,以原始关键字作为第三关键字进行散列运算得到第三散列值,根据第三散列值在第三级散列表中找到散列值为第三散列值的第三表项,根据第三表项中保存的内存索引,通过关键字匹配,获取与第三散列值对应的数据项。本发明实施例可以提高长关键值表项的查找效率。
Description
技术领域
本发明涉及通信技术,尤其涉及一种表项查找方法和装置。
背景技术
随着网络的发展,IPv6和精细化管理是日后发展的必然趋势。现在的IPv4的网络地址为32bit,IPv6网络地址为128bit,从而导致使用网络地址作为关键(Key)值进行完全匹配(Full Match,以下简称:FM)表的表项查找的关键值长度有了巨大的增长,使得表项查找效率急剧下降。同理,网络上现在流行的对数据流量进行精细化管理则是基于数据流的处理,其利用报文五元组(源IP地址+目的IP地址+协议类型+源端口号+目的端口号)来区分报文所属的数据流,需要的关键值长度约为120bit,随着网络精细化管理需要的进一步提升,会出现利用七元组、九元组等,区分报文所属的数据流所需要的关键值长度更为庞大,也会使得FM表的表项查找效率急剧下降。
现在普遍使用的一种FM表的表项查找方案是哈希(harsh)表。哈希表指的是通过设定的哈希函数和所选中的处理冲突的方法,将一组关键字映像到一个有限的、地址连续的地址集上,并以关键字在地址集中的索引作为相应记录在FM表中的存储位置。在哈希表中,若输入的两个关键字不同而输出的函数值相同,则称这两个关键字为“同义词”,称这种现象为“冲突”。对于FM表而言,很难找到没有冲突的哈希函数。可以采用多次哈希解决冲突问 题。但是,对于长关键值的FM表而言,表项数据较多,表项冲突严重,查找效率较低。即使采用多次哈希后表项数据仍然较多,查找效率仍然较低。
发明内容
本发明实施例提供了一种提高长关键字表项查找效率的表项查找方法和装置,用以实现提高长关键值表项的查找效率。
本发明实施例提供了一种提高长关键字表项查找效率的表项查找方法,其中,所述长关键字为原始关键字,所述方法包括:
将所述原始关键字分割为子关键字,分别以各子关键字作为第一关键字查找相应的第一级散列表,得到与所述第一关键字对应的第一表项,所述第一表项中保存有所述第一关键字的同义词的数量值以及指向第二级散列表的第一索引;
根据第一关键字的同义词的数量值最小的第一表项中保存的第一索引,获取所述第二级散列表,以所述原始关键字中除与所述第一关键字的同义词的数量值最小的第一表项对应的第一子关键字外的其他子关键字作为第二关键字查找所述第二级散列表,得到与所述第二关键字对应的第二表项,所述第二表项中保存有指向第三级散列表的第二索引;
根据所述第二索引,获取所述第三级散列表,所述第三级散列表的表项中保存有散列值以及指向内存空间的内存索引,以所述原始关键字作为第三关键字进行散列运算得到第三散列值,在所述第三级散列表中找到保存有所述第三散列值的第三表项,根据所述第三表项中保存的所述内存索引,通过关键字匹配,在所述内存空间中获取与所述原始关键字对应的数据项;
其中,所述原始关键字为网络地址。
本发明实施例提供了一种提高长关键字表项查找效率的表项查找装置,其中,所述长关键字为原始关键字,所述装置包括:
分割模块,用于将所述原始关键字分割为子关键字;
第一查找模块,用于分别以各子关键字作为第一关键字查找相应的第一级散列表,得到与所述第一关键字对应的第一表项,所述第一表项中保存有所述第一关键字的同义词的数量值以及指向第二级散列表的第一索引;
第二查找模块,用于根据第一关键字的同义词的数量值最小的第一表项中保存的第一索引,获取所述第二级散列表,以所述原始关键字中除与所述第一关键字的同义词的数量值最小的第一表项对应的第一子关键字外的其他子关键字作为第二关键字查找所述第二级散列表,得到与所述第二关键字对应的第二表项,所述第二表项中保存有指向第三级散列表的第二索引;
第三查找模块,用于根据所述第二索引,获取所述第三级散列表,所述第三级散列表的表项中保存有散列值以及指向内存空间的内存索引,以所述原始关键字作为第三关键字进行散列运算得到第三散列值,在所述第三级散列表中找到保存有所述第三散列值的第三表项;
匹配模块,用于根据所述第三表项中保存的所述内存索引,通过关键字匹配,在所述内存空间中获取与所述原始关键字对应的数据项;
其中,所述原始关键字为网络地址。
本发明实施例将原始关键字分割为子关键字,找到第一关键字的同义词最少的第一表项进行下一步查找,以有限的空间资源换取查找效率的提升,采用具有较少散列值的第三级散列表进行关键字匹配,优化了关键字匹配的效率,大幅度地提高了长关键字表项的查找效率。
附图说明
图1为本发明表项查找方法第一实施例的流程示意图;
图2为本发明表项查找方法第一实施例中一表项结构示意图;
图3为本发明表项查找方法第二实施例的流程示意图;
图4为本发明表项查找装置第一实施例的结构示意图;
图5为本发明表项查找装置第二实施例的结构示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
如图1所示,为本发明表项查找方法第一实施例的流程示意图,可以包括如下步骤:
步骤11、将原始关键字分割为子关键字,分别以各子关键字作为第一关键字查找相应的第一级散列表,得到与第一关键字对应的第一表项,该第一表项中保存有该第一关键字的同义词的数量值以及指向第二级散列表的第一索引;
如图2所示,为本发明表项查找方法第一实施例中一表项结构示意图,将原始关键字(original key)划分为四个子关键字:subkey1、subkey2、subkey3和subkey4,以各子关键字作为第一关键字进行散列运算得到第一散列值,查找相应的第一级散列表:hashtable1、hashtable2、hashtable3和hashtable4,获取与第一散列值对应的第一表项。
优选地,可以采用最适合原始关键字的数据分布的分割算法把能够有效散列数据的关键字字段分割为子关键字,并采用适合各个子关键字的散列算法进行散列。
步骤12、根据第一关键字的同义词的数量值最小的第一表项中保存的第一索引,获取第二级散列表,以原始关键字中除与第一关键字的同义词的数量值最小的第一表项对应的第一子关键字外的其他子关键字作为第二关键字查找第二级散列表,得到与第二关键字对应的第二表项,该第二表项中保存 有指向第三级散列表的第二索引;
再参见图2,假设hashtable1中的第一表项中的第一关键字的同义词的数量值为6,hashtable2中的第一表项中的第一关键字的同义词的数量值为8,hashtable3中的第一表项中的第一关键字的同义词的数量值为12,hashtable4中的第一表项中的第一关键字的同义词的数量值为16,则选择hashtable1中的第一表项进行下一步查找,根据hashtable1中的第一表项中保存的第一索引,获取第二级散列表S_hash1,将原始关键字中除subkey1外的其他子关键字,即subkey2、subkey3和subkey4作为第二关键字,进行散列运算得到第二散列值,查找第二级散列表S_hash1,获取与第二散列值对应的第二表项,例如:S_hash1_1,该第二表项中保存有指向第三极散列表的第二索引,即图中的point。
步骤13、根据第二索引,获取第三级散列表,该第三级散列表的表项中保存有散列值以及指向内存空间的内存索引,以原始关键字作为第三关键字进行散列运算得到第三散列值,在第三级散列表中找到保存有第三散列值的第三表项,根据第三表项中保存的内存索引,通过关键字匹配,在内存空间中获取与原始关键字对应的数据项。
再参见图2,第三级散列表F_hash是对整个原始关键字进行散列运算得到的由较少的数据值组成的一个集合。按照散列算法原理,如果散列值不同,关键字必然不同,例如:F_hash1对应的关键字与F_hash2对应的关键字必然不同,所以在进行关键字匹配时,只要比较散列值即可排除大部分与目标值不同的值。根据第三散列值,查找第三级散列表得到第三散列值对应的内存索引,根据该内存索引得到内存数据和关键字,通过对原始关键字和内存中的关键字的匹配来检验表项查找的正确性,例如:原始关键字进行散列运 算得到的第三散列值为F_hash12,则查找F_hash,找到F_hash12,再找到F_hash12对应的内存索引index13和index14,查找index13和index14指向的内存空间,该内存空间中保存有关键字以及关键字对应的内存数据,若该内存空间中的关键字与原始关键字,则该内存数据为原始关键字对应的数据。
本实施例将原始关键字分割为子关键字,找到各第一级散列表中第一关键字的同义词最少的第一表项进行下一步查找,以有限的空间资源换取查找效率的提升,用具有较少散列值的第三级散列表进行关键字匹配,优化了关键字匹配的效率,大幅度地提高了长关键字表项的查找效率。
如图3所示,为本发明表项查找方法第二实施例的流程示意图,可以包括如下步骤:
步骤21、将原始关键字分割为子关键字,分别以各子关键字作为第一关键字查找相应的第一级散列表,得到与第一关键字对应的第一表项,该第一表项中保存有该第一关键字的同义词的数量值以及指向第二级散列表的第一索引;其中,第一级散列表为对第一关键字进行散列运算得到的散列值的有序集合。
该第一索引包括但不限于指针。
步骤22、根据第一关键字的同义词的数量值最小的第一表项中保存的第一索引,获取第二级散列表,以原始关键字中除与第一关键字的同义词的数量值最小的第一表项对应的第一子关键字外的其他子关键字作为第二关键字查找第二级散列表,得到与第二关键字对应的第二表项,该第二表项中保存有指向第三级散列表的第二索引,该第二级散列表为对第二关键字进行散列运算得到的散列值的有序集合。
该第二索引包括但不限于指针。第二级散列表的数据结构形式包括但不限于链表、跳表、B树或B+树。
步骤23、根据第二索引,获取第三级散列表,该第三级散列表的表项中保存有散列值以及指向内存空间的内存索引,以原始关键字作为第三关键字进行散列运算得到第三散列值,在第三级散列表中找到保存有第三散列值的第三表项,根据第三表项中保存的内存索引,通过关键字匹配,在内存空间中获取与原始关键字对应的数据项;其中,第三级散列表为对第三关键字进行散列运算得到的散列值的有序集合。
在步骤23中,可以采用循环冗余校验算法进行计算得到第三级散列值。第三级散列表的数据结构形式包括但不限于链表或数组。
与上一实施例的不同之处在于,通过对第一级散列表、第二级散列表和第三级散列表的有序排列,转化树表中对长关键字的逐位匹配和散列表中对长关键字的逐级的多次散列匹配为对一个有序集合的高速查找,在有效提高数据查找效率的情况下,有效降低了内存的使用情况。下面,通过一具体应用场景对本实施例的技术方案进行阐述。
再参见图2,首先对超长的原始关键字进行分段处理,将超长的原始关键字分割为四个独立的子关键字:subkey1、subkey2、subkey3和subkey4。需要说明的是,对原始关键字的分段原则包括但不限于对原始关键字平均分割,还可以根据具体的原始关键字的数据构成,把相关性较强的或者散列较好的数据分割为一个子关键字,采用适合该子关键字的散列算法进行散列。本实施例中简单地按照原始关键字的长度,平均分割了4个子关键字,对每个子关键字进行散列运算构成一套完整的数据集合,即图中的第一级散列表hashtable。在每个第一级散列表的一个表项中包括但不限于下列的数据:
1)该表项对应的同义词的索引。
该索引可以使用的数据结构包括但不限于指针,即图中指向S_hash表的指针。
2)该子关键字的同义词的数量值。需要注意的是,在排序时,需要维护每个第一级散列表的表项中的子关键字的同义词的数量值,若增加表项时,对该数量值进行加操作,删除表项时,对该数量值进行减操作。
3)在该子关键字的同义词的有序数据集合中查找数据。
在查找时,同时查找多个第一级散列表,通过比较多个第一级散列表的数量值字段,挑选出同义词的数量值最小的第一级散列表进行下一步查找操作。
图示的第二级散列表S_hash表是一个以原始关键字中非本子关键字的其他子关键字进行散列运算得到的散列值一个有序集合。本发明中称该有序集合中的散列值为S_hash值。该S_hash表的数据结构形式包括但不限于链表、跳表、B树、B+树等。通过对S_hash值的有序排列,转化树表中对长关键字的逐位匹配和散列表中对长关键字的逐级多次散列匹配为对一个有序集合的高速查找和排序,在有效提高了表项查找效率的情况下,有效降低了内存的使用情况。
每个S_hash表的表项中包括但不限于下列数据:
1)第二关键字的同义词的索引。索引可以使用的数据形式包括但不限于指针,即图中指向第三级散列表page_data的指针。
需要说明的是,本实施例中所采用的两级散列和两级索引的形式只是一个实施例,本发明不限于此,在资源充足的情况下,本发明支持更多级的散列和索引。
S_hash表的表项中的索引所指向的数据集合即第二关键字的同义词的数据集合,本实施例中称此数据集合为第三级散列表F_hash表,该数据集合中的单元为F_hash值。F_hash表是通过对整个原始关键字进行散列运算得到的一个较少的数据项组成的数据集合的有序集。
由于原始关键字很长,如果对完整的原始关键字的同义词和查找的目标关键字进行匹配需要耗费较多的内存资源和计算资源。本实施例通过F_hash表的排序处理有效地提高匹配的效率。根据散列算法原理可知,如果散列值不同,关键字必然不同。所以在进行原始关键字的匹配时,只需要比较F_hash值即可排除大部分与目标关键字不相同的关键字。在图2中即存在不同的表项内存索引值对应了相同的F_hash值。
在每一个F_hash表的表项中需要包括但不限于下列数据:
1)第三关键字的同义词的内存索引。该内存索引可以使用的数据形式包括但不限于指针,即图示中指向page_data的指针。
2)第三关键字对应的F_hash值。得到该F_hash值的散列算法包括但不限于CRC32。
通过匹配F_hash表所对应的表项的内存索引得到实际的内存表项,在内存表项中存放有表项数据和目标关键字,通过对目标关键字和原始关键字的匹配,检验表项查找的正确性。
F_hash表的数据结构形式包括但不限于链表、数组等数据结构,F_hash表的排序和查找算法依赖于实际的数据组织形式。
本实施例将原始关键字分段匹配,在各第一级查找表中找到第一关键字的同义词最少的一个第一表项进行查找,以有限的空间资源换取查找效率的提升。通过对第一级散列表、第二级散列表和第三级散列表的有序排列,极 大提高查找速度。第三级散列表包括较少的第三散列值,用较少的第三散列值进行关键字匹配,优化了关键字匹配的效率。通过上述三个方面,大幅度地提高了长关键字表项的查找效率。
如图4所示,为本发明表项查找装置第一实施例的结构示意图,可以包括分割模块40、第一查找模块41、第二查找模块42、第三查找模块43和匹配模块44。
其中,分割模块40用于将原始关键字分割为子关键字;
优选地,可以把相关性较强的或者散列较好的数据分割组合为一个子关键字;
第一查找模块41用于分别以各子关键字作为第一关键字查找相应的第一级散列表,得到与所述第一关键字对应的第一表项,所述第一表项中保存有所述第一关键字的同义词的数量值以及指向第二级散列表的第一索引。
具体地,第一查找模块41对各个子关键字进行散列运算得到第一散列值,查找相应的第一级散列表,获取与第一散列值对应的第一表项。优选地,采用最适合原始关键字的数据分布的分割算法把能够有效散列数据的关键字字段分隔为子关键字,并采用适合各个子关键字的散列算法进行散列。
第二查找模块42用于根据第一关键字的同义词的数量值最小的第一表项中保存的第一索引,获取第二级散列表,以原始关键字中除与第一关键字的同义词的数量值最小的第一表项对应的第一子关键字外的其他子关键字作为第二关键字查找第二级散列表,得到与第二关键字对应的第二表项,该第二表项中保存有指向第三级散列表的第二索引。
具体地,第二查找模块42可以通过比较多个第一级散列表的第一表项中的同义词的数量值字段,挑选出子关键字冲突最严重,也就是同义词的数量 值最小的第一表项进行下一步查找操作,根据保存有同义词的数量值最小的第一表项中保存的第一索引,获取第二级散列表,对原始关键字中除与同义词的数量值最小的第一表项对应的子关键字外的其他子关键字作为第二关键字进行散列运算得到第二散列值,查找第二级散列表,获取与第二散列值对应的第二表项。
第三查找模块43用于根据第二索引,获取第三级散列表,第三级散列表的表项中保存有散列值以及指向内存空间的内存索引,以原始关键字作为第三关键字进行散列运算得到第三散列值,在第三级散列表中找到保存有第三散列值的第三表项。
匹配模块44用于根据第三表项中保存的内存索引,通过关键字匹配,在内存空间中获取与原始关键字对应的数据项。
第三级散列表是对整个原始关键字进行散列运算得到的由较少的数据值组成的一个集合。按照散列算法原理,如果散列值不同,关键字必然不同,所以在进行关键字匹配时,只要比较散列值即可排除大部分与目标值不同的值。根据第三散列值查找第三级散列表得到第三散列值对应的内存索引,根据该内存索引得到内存数据和关键字,通过对原始关键字和关键字的匹配检验表项查找的正确性。
本实施例通过分割模块40和第一查找模块41将原始关键字分段匹配,第二查找模块42找到同义词最少的第一表项进行下一步查找,以有限的空间资源换取查找效率的提升,第三查找模块43采用具有较少散列值的第三级散列表进行关键字匹配,优化了关键字匹配的效率,大幅度地提高了长关键字表项的查找效率。
如图5所示,为本发明表项查找装置第二实施例的结构示意图,可以包括 分割模块40、第一查找模块41、第二查找模块42、第三查找单元53和匹配模块44。
其中,分割模块40用于将原始关键字分割为子关键字。
第一查找模块41用于分别以各子关键字作为第一关键字查找相应的第一级散列表,得到与第一关键字对应的第一表项,该第一表项中保存有第一关键字的同义词的数量值以及指向第二级散列表的第一索引;其中,第一级散列表为对第一关键字进行散列运算得到的散列值的有序集合;
该第一索引包括但不限于指针。
第二查找模块42用于根据第一关键字的同义词的数量值最小的第一表项中保存的第一索引,获取第二级散列表,以原始关键字中除与第一关键字的同义词的数量值最小的第一表项对应的第一子关键字外的其他子关键字作为第二关键字查找第二级散列表,得到与第二关键字对应的第二表项,该第二表项中保存有指向第三级散列表的第二索引;其中,第二级散列表为对第二关键字进行散列运算得到的散列值的有序集合。
该第二索引包括但不限于指针。第二级散列表的数据结构形式包括但不限于链表、跳表、B树或B+树。
第三查找单元53用于根据第二索引,获取第三级散列表,该第三级散列表的表项中存储有散列值以及与该散列值对应的内存索引,以原始关键字作为第三关键字,采用循环冗余校验算法进行计算得到第三散列值,在第三级散列表中找到保存有第三散列值的第三表项;其中,第三级散列表为对第三关键字进行散列运算得到的散列值的有序集合。
需要说明的是,第三查找单元53采用的算法包括但不限于循环冗余校验算法。第三级散列表的数据结构形式包括但不限于链表或数组。
匹配模块44用于根据第三表项中保存的内存索引,通过关键字匹配,在内存空间中获取与原始关键字对应的数据项。
与上一实施例的不同之处在于,通过对第一级散列表、第二级散列表和第三级散列表的有序排列,转化树表中对长关键字的逐位匹配和散列表中对长关键字的逐级的多次散列匹配为对一个有序集合的高速查找,在有效提高数据查找效率的情况下,有效降低了内存的使用情况。
在本实施例中,分割模块40和第一查找模块41将原始关键字分割为子关键字,第二查找模块42找到各第一散列表中第一关键字的同义词最少的第一表项进行下一步查找,以有限的空间资源换取查找效率的提升。另外,通过对第一级散列表、第二级散列表和第三级散列表的有序排列,极大提高查找速度。第三查找单元53采用较少散列值的第三极散列表进行关键字匹配,优化了关键字匹配的效率。通过上述三个方面,大幅度地提高了长关键字表项的查找效率。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
Claims (12)
1.一种提高长关键字表项查找效率的表项查找方法,其中,所述长关键字为原始关键字,其特征在于,所述方法包括:
将所述原始关键字分割为子关键字,分别以各子关键字作为第一关键字查找相应的第一级散列表,得到与所述第一关键字对应的第一表项,所述第一表项中保存有所述第一关键字的同义词的数量值以及指向第二级散列表的第一索引;
根据第一关键字的同义词的数量值最小的第一表项中保存的第一索引,获取所述第二级散列表,以所述原始关键字中除与所述第一关键字的同义词的数量值最小的第一表项对应的第一子关键字外的其他子关键字作为第二关键字查找所述第二级散列表,得到与所述第二关键字对应的第二表项,所述第二表项中保存有指向第三级散列表的第二索引;
根据所述第二索引,获取所述第三级散列表,所述第三级散列表的表项中保存有散列值以及指向内存空间的内存索引,以所述原始关键字作为第三关键字进行散列运算得到第三散列值,在所述第三级散列表中找到保存有所述第三散列值的第三表项,根据所述第三表项中保存的所述内存索引,通过关键字匹配,在所述内存空间中获取与所述原始关键字对应的数据项;
其中,所述原始关键字为网络地址。
2.根据权利要求1所述的方法,其特征在于,所述第一级散列表为对所述第一关键字进行散列运算得到的散列值的有序集合;
所述第二级散列表为对所述第二关键字进行散列运算得到的散列值的有序集合;
所述第三级散列表为对所述第三关键字进行散列运算得到的散列值的有序集合。
3.根据权利要求1或2所述的方法,其特征在于,所述以所述原始关键字作为第三关键字进行散列运算得到第三散列值具体为:
以所述原始关键字作为第三关键字,采用循环冗余校验算法进行计算得到第三散列值。
4.根据权利要求1或2所述的方法,其特征在于,所述第一索引、所述第二索引和所述内存索引包括指针。
5.根据权利要求1或2所述的方法,其特征在于,所述第二级散列表包括链表、跳表、B树或B+树。
6.根据权利要求1或2所述的方法,其特征在于,所述第三级散列表包括链表或数组。
7.一种提高长关键字表项查找效率的表项查找装置,,其中,所述长关键字为原始关键字,其特征在于,所述装置包括:
分割模块,用于将所述原始关键字分割为子关键字;
第一查找模块,用于分别以各子关键字作为第一关键字查找相应的第一级散列表,得到与所述第一关键字对应的第一表项,所述第一表项中保存有所述第一关键字的同义词的数量值以及指向第二级散列表的第一索引;
第二查找模块,用于根据第一关键字的同义词的数量值最小的第一表项中保存的第一索引,获取所述第二级散列表,以所述原始关键字中除与所述第一关键字的同义词的数量值最小的第一表项对应的第一子关键字外的其他子关键字作为第二关键字查找所述第二级散列表,得到与所述第二关键字对应的第二表项,所述第二表项中保存有指向第三级散列表的第二索引;
第三查找模块,用于根据所述第二索引,获取所述第三级散列表,所述第三级散列表的表项中保存有散列值以及指向内存空间的内存索引,以所述原始关键字作为第三关键字进行散列运算得到第三散列值,在所述第三级散列表中找到保存有所述第三散列值的第三表项;
匹配模块,用于根据所述第三表项中保存的所述内存索引,通过关键字匹配,在所述内存空间中获取与所述原始关键字对应的数据项;
其中,所述原始关键字为网络地址。
8.根据权利要求7所述的装置,其特征在于,所述第一级散列表为以所述第一关键字进行散列运算得到的散列值的有序集合;
所述第二级散列表为对所述第二关键字进行散列运算得到的散列值的有序集合;
所述第三级散列表为对所述第三关键字进行散列运算得到的散列值的有序集合。
9.根据权利要求7或8所述的装置,其特征在于,所述第三查找模块包括第三查找单元,用于根据所述第二索引,获取第三级散列表,所述第三级散列表的表项中存储有散列值以及与所述散列值对应的内存索引,以所述原始关键字作为第三关键字,采用循环冗余校验算法进行计算得到第三散列值,在所述第三级散列表中找到保存有所述第三散列值的第三表项。
10.根据权利要求7或8所述的装置,其特征在于,所述第一索引、所述第二索引和所述内存索引包括指针。
11.根据权利要求7或8所述的装置,其特征在于,所述第二级散列表包括链表、跳表、B树或B+树。
12.根据权利要求7或8所述的装置,其特征在于,所述第三级散列表包括链表或数组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100883615A CN101594319B (zh) | 2009-06-26 | 2009-06-26 | 表项查找方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100883615A CN101594319B (zh) | 2009-06-26 | 2009-06-26 | 表项查找方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101594319A CN101594319A (zh) | 2009-12-02 |
CN101594319B true CN101594319B (zh) | 2011-09-14 |
Family
ID=41408770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100883615A Expired - Fee Related CN101594319B (zh) | 2009-06-26 | 2009-06-26 | 表项查找方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101594319B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729577A (zh) * | 2017-11-29 | 2018-02-23 | 厦门市美亚柏科信息股份有限公司 | 一种基于多维哈希表的数据查找方法、终端设备及存储介质 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2727114B1 (en) | 2011-06-28 | 2020-04-22 | Hewlett-Packard Enterprise Development LP | Shiftable memory |
US9606746B2 (en) | 2011-10-27 | 2017-03-28 | Hewlett Packard Enterprise Development Lp | Shiftable memory supporting in-memory data structures |
EP2771885B1 (en) | 2011-10-27 | 2021-12-01 | Valtrus Innovations Limited | Shiftable memory supporting atomic operation |
CN102546105A (zh) * | 2011-12-28 | 2012-07-04 | 深圳市新为软件有限公司 | 一种网络资源传输的方法和装置 |
CN102591792B (zh) * | 2012-01-13 | 2015-04-29 | 从兴技术有限公司 | 一种内存数据的存储方法 |
WO2013115779A1 (en) | 2012-01-30 | 2013-08-08 | Hewlett-Packard Development Company, L.P. | Word shift static random access memory (ws-sram) |
WO2013130109A1 (en) | 2012-03-02 | 2013-09-06 | Hewlett-Packard Development Company L.P. | Shiftable memory defragmentation |
DE102013206050A1 (de) * | 2013-04-05 | 2014-10-09 | Robert Bosch Gmbh | Informationssystem und Verfahren zum Auswählen und Wiedergeben von Informationen, insbesondere zm Einsatz im Werkstattbereich |
WO2015074182A1 (zh) * | 2013-11-19 | 2015-05-28 | 华为技术有限公司 | 一种基于流表的表项寻址方法、交换机及控制器 |
CN107315745B (zh) * | 2016-04-26 | 2020-05-01 | 北京京东尚科信息技术有限公司 | 一种私信存储方法及*** |
CN106844312B (zh) * | 2017-02-14 | 2019-12-10 | 浪潮集团有限公司 | 一种数据表转换方法、装置、可读介质及存储控制器 |
CN108572958B (zh) * | 2017-03-07 | 2022-07-29 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN108280208B (zh) * | 2018-01-30 | 2022-05-13 | 深圳市茁壮网络股份有限公司 | 一种样本查找方法及装置 |
CN112637070B (zh) * | 2020-12-21 | 2022-07-01 | 杭州迪普信息技术有限公司 | 一种表项查找的方法和设备 |
-
2009
- 2009-06-26 CN CN2009100883615A patent/CN101594319B/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729577A (zh) * | 2017-11-29 | 2018-02-23 | 厦门市美亚柏科信息股份有限公司 | 一种基于多维哈希表的数据查找方法、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101594319A (zh) | 2009-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101594319B (zh) | 表项查找方法和装置 | |
KR102162730B1 (ko) | 분산형 라우팅 테이블 탐색 기술 | |
CN103544261B (zh) | 一种海量结构化日志数据全局索引管理方法及装置 | |
CN103107945B (zh) | 一种快速查找ipv6路由的***及方法 | |
US9704574B1 (en) | Method and apparatus for pattern matching | |
CN101540723B (zh) | 一种流表查找方法和装置 | |
CN104252528B (zh) | 基于标识符空间映射的大数据二级索引构建方法 | |
CN104283806A (zh) | 业务链处理方法和设备 | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
CN104820717A (zh) | 一种海量小文件存储及管理方法和*** | |
CN101848248B (zh) | 一种规则查找方法和装置 | |
CN103051543A (zh) | 一种路由前缀的处理、查找、增加及删除方法 | |
CN102045412B (zh) | IPv6地址前缀压缩存储方法及设备 | |
CN107562743B (zh) | 数据存储方法和装置、数据查找请求的处理方法和装置 | |
Xiao et al. | Using parallel bloom filters for multiattribute representation on network services | |
CN105515997B (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
CN106416151A (zh) | 用于分组处理的基于多表哈希查找 | |
CN101695054A (zh) | 路由维护方法和装置以及路由查询方法和装置 | |
CN102346735A (zh) | 一种减少哈希冲突的哈希查找方法 | |
WO2014047863A1 (en) | Generating a shape graph for a routing table | |
CN104780101A (zh) | 内容中心网络转发平面fib表结构及其检索方法 | |
EP2429132B1 (en) | Table creating and searching method used by network processor | |
CN103780493A (zh) | 数据转发方法及*** | |
CN103973571A (zh) | 网络处理器及其路由查找方法 | |
CN103581023A (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110914 Termination date: 20120626 |