哈希表操作方法及装置的制作方法

文档序号:6573357阅读:129来源:国知局
专利名称:哈希表操作方法及装置的制作方法
哈希表操作方法及装置技术领城本发明涉及利用哈希(HASH)表进行数据管理的技术领域,尤其涉及 一种HASH表操作方法及装置。背景抹术HASH表是应用得非常广泛的数据结构,它解决了在有限程序空间内容 纳总数有限,但索引取值范围非常大的数据项的设计要求。以IPv4版本的核 心路由器的设计为例,对采用HASH表进行数据索引的方法进行说明,该方 法包括a、 分配存储空间,预先存储256K个路由表项,这些表项的其索引值为 0~256K-1;b、 采用HASH算法,将32bit的网际协议(IP )地址转换为18bit的HASH 索引值;c、 使用HASH索引值,从步骤a中分配的空间里面检索到对应的路由 表项。可以看出,在上述分配的存储空间中可以存储256K个有效路由表项, 而不必使用42亿个路由表项空间来存储仅仅256K个有效路由表项。但是在 上述的设计中,显然存在重大缺陷,即步骤b的HASH转换是"多对一" 的,而不是一一映射,按平均计算的话有多达64K个IP地址经过转换之后 将得到相同的HASH索引值,这时,步骤c查到的路由表项可能并非希望得 到的路由表项,这种现象称之为"HASH冲突"。一种解决HASH冲突的方法,包括在步骤b中,将32bit的IP地址转换为18bit的HASH索引值的同时, 在每个路由表项中存储未经HASH算法转换的IP地址;在步骤c检索到相应的路由表项后,将该路由表项中的IP地址与本次索 引所用的IP地址对比,如果相同,查找结束;否则读取并查找相邻的下一个 路由表项,再次重复IP地址的比对过程,如此循环,直至找到匹配的路由表 项。图l是执行该方法的示意图,该方法称为顺序挖掘法,其中,各表项从低端到高端进行排列,当需要增加额外的表项时,将从已有表项的最高端向后增加额外表项,并对额外表项也进行从低端到高端的排列。解决HASH冲 突的其他方法还有结合^^的顺序挖掘法、跳跃挖掘法等等,这里不再逐一 说明。采用顺序挖掘法解决HASH沖突,不仅降低数据查找的效率,而且由于 顺序挖掘法只能向一个方向挖掘, 一旦在该方向的末端出现冲突或者整个 HASH表中存在较多沖突,则只能通过增加存储空间来解决冲突,从而导致 存储空间随着冲突的增加而增大。发明内容有鉴于此,本发明解决的技术问题是提供一种HASH表操作方法及装置, 不仅可以解决HASH表查找中的HASH冲突,而且与现有的顺序挖掘法相比, 本发明具有更高的查找效率。为此,本发明提供的技术方案如下一种HASH表操作方法,包括根据HASH索S1值检索索51字段所对应的表项;检索到相应的表项后,从索引当前的位置读取N个表项,N为大于1的 整数;当所述N个表项中不存在与索引字段匹配的目标数据时,则继续从索引 当前的位置读取N个表项,直至查找到与索引字段匹配的目标数据为止。其中,检索到相应的表项后,根据索引当前的位置确定表项的读取方向, 在所述读取方向读取连续N个表项。其中,在索引当前的位置大于表项空间的一半时,向表项的低端读取表 项;否则,向表项的高端读取表项。其中,按下述步骤建立表项将目标数据中的索引字段转换为HASH索引值,将相应的目标数据和所述索引字段存储在该索? 1值对应的当前表项中;当前表项已被占用时,判断所述索? 1值是否大于表项空间的一半; 所述索引值大于表项空间的一半时,从该索引值向表项的低端存储相应的目标数据和所述索引字段;所述索5 j值不大于表项空间的一半时,从该索引值向表项的高端存储相 应的目标数据和所述索引字段。其中,从索引当前的位置向表项的高端或低端读取连续N个表项。 其中,进一步包括当读取到表项的最高端或最低端时,回绕到表项的 最低端或最高端,继续读取表项。 其中,按下述步骤建立表项将目标数据中的索引字段转换为HASH索引值,将相应的目标数据和所 述索引字段存储在该索? 1值对应的当前表项中;当前表项已被占用时,从该索? 1值向表项的高端或低端存储相应的目标 数据和所述索引字段;当索引指向的位置到达表项的最高端或最低端时,将索引指向的位置回 绕到表项的最低端或最高端。其中,所述索引字段包括网际协议IP地址、介质接入控制MAC地址、 或具有使用规律可用于索引获取其他信息的编码。基于上述方法,本发明还提出一种HASH表操作装置,包括检索单元、 表项读取单元和查询单元;所述检索单元用于根据HASH索引值检索索引字段所对应的表项,在检 索到相应的表项后触发表项读取单元读取表项;所述表项读取单元用于根据检索单元或查询单元的触发,从索引当前的 位置读取N个表项,N为大于1的整数;所述查询单元用于查询表项读取单元读取的N个表项中是否存在与索引 字段匹配的目标数据,如果不存在,则触发表项读取单元继续读取表项。其中,所述表项读取单元包括定向单元,用于在^r索单元触发时,4艮据索引当前的位置确定表项的读 取方向;读取单元,用于在定向单元所确定的方向读取连续N个表项。其中,所述定向单元在检索单元触发时,判断索引当前的位置是否大于表项空间的一半;在索引当前的位置大于表项空间的一半时,确定表项的低端为读取方向;否则,确定表项的高端为读取方向。其中,还包括第 一转换建立单元,用于将目标数据中的索引字段转换为HASH索引值, 将相应的目标数据和所述索? 1数据存储在该索S1值对应的当前表项中;判断单元,用于在当前表项已被占用时,判断所述索引值是否大于表项 空间的一半;第一表项建立单元,用于在所述索引值大于表项空间的一半时,从该索 引值向表项的低端存储相应的目标数据和所述索引数据;在所述索引值不大 于表项空间的一半时,从该索引值向表项的高端存储相应的目标数据和所述 索引数据。其中,所&项读取单元从索引当前的位置向表项的高端或低端读取连 续N个表项,当读取到表项的最高端或最低端时,回绕到表项的最低端或最 高端,继续读取表项。其中,还包括回绕单元,用于在表项读取单元读取到表项的最高端或最低端时,通知 表项读取单元回绕到表项的最低端或最高端继续读取表项。其中,还包括第二转换建立单元,用于将目标数据中的索引字段转换为HASH索引值, 将相应的目标数据和所述索引字段存储在该索引值对应的当前表项中;第二表项建立单元,用于在当前表项已被占用时,从该索引值向表项的 高端或低端存储相应的目标数据和所述索引字段;当索引指向的位置到ii^ 项的最高端或最低端时,将索引指向的位置回绕到表项的最低端或最高端。其中,所述索引字段包括网际协议IP地址、介质接入控制MAC地址、 或具有使用规律可用于索引获取其他信息的编码。由于在本发明中,根据HASH索引值检索到索引字段所对应的表项后, 一次性从索引当前的位置读取N个表项(N为大于1的整数),从而在出现 HASH冲突时有效P争低了访问外部存储单元的次数,提高了 HASH表的查找 效率。而且,N个相关的表项在地址上相邻,只需要发出一个起始地址以及 N个表项的大小之和,就可以一次性将这N个表项读入,其速度远高于逐一 读入单个表项。这些都是现有的顺序挖掘法和其他方法所不具备的优点。可以看出,采用本发明提供的HASH表操作方法及装置,不仅能够解决 数据查找中的HASH冲突,而且,与现有的顺序挖掘法和其他方法相比本发 明具有更高的查找效率,占用的存储空间也不会随着沖突的增加而增大。


图l是执行现有的顺序挖掘法的示意图; 图2是本发明方法实施例1的流程图; 图3是本发明方法实施例2的流程图; 图4是实施本发明实施例2的示意图; 图5是本发明提供的装置的示意图。
具体实施方式
在对本发明的技术方案进行说明之前,需要对现有解决HASH冲突的方 法进行分析,以获知影响该方法效率的因素在哪里。前面已经介绍过,采用HASH表进行数据索引的方法包括a、 分配存储空间,预先存储256K个表项,这些表项的其索引值为0 256K-1;b、 采用HASH算法,将32bit的IP地址转换为18bit的HASH索引值;c、 使用HASH索引值,从步骤a中分配的空间里面检索到对应的表项。 其中,步骤a是在数据查找之前完成的,不影响查找效率,后期对HASH表的修改相对于查找次数来说也是很少的,所以步骤a不影响数据查找的效 率。步骤b的IP地址到HASH索引值的转换是无法避免的,而且好的HASH 转换算法将会大大减少沖突概率,因此付出代价是值得的,况且这种转换一般都能在中央处理单元(CPU)内部完成,不需要与外设交互,对性能的影 响不大。步骤c的查找需要访问外部存储设备,CPU对外部存储设备的访 问需要先向外部存储设备读取表项的起始地址和表项的大小,然后从外部存 储设备中将表项数据读入CPU,整个过程需要多次总线操作。此外,两次访 问之间还会有延时,使得操作更加變隄。可以看出,CPU对外部存储设备的 访问,其本身就是慢速过程,如果出现冲突,则需要多次访问外部存储设备, 数据查找的效率将会明显的降低。通过上述分析可知,可以通过减少对外部存储设备的访问,提高HASH表查找的效率。本发明的核心思想在于,将目标数据中的索引字段转换为HASH索引值, 才M居HASH索《1值建立相应的表项;根据HASH索? 1值检索索《1字段所对应 的表项;检索到相应的表项后,从索引当前的位置读取N个表项,N为大于 1的整数;当所述N个表项中不存在与索引字段匹配的目标数据时,则继续 从索引当前的位置读取N个表项,直至查找到与索引字段匹配的目标数据为 止。下面结合实施例1,对本发明所提供的HASH表操作方法做具体说明, 图2是实施例1的流程图。在步骤201中,分配表项空间,设置每次读取的表项的个数N。在步骤202中,采用HASH算法,将IP地址转换为HASH索引值,并 在每个表项中存储未经HASH算法转换的IP地址。其中,在将IP地址转换为HASH索引值后,将相应的数据和所述IP地 址存储在该索引值对应的当前表项中,以建立表项;如果当前表项已经被占 用,则判断该索引值是否大于表项空间的一半;所述索引值如果大于表项空间的一半,则从该索引值向表项的低端,即 在当前表项的前一个表项,存储相应的数据和所述IP地址;如果前一个表项 也已经被占用,则再向表项的低端查找,直至找到未被占用的低端表项,在 该低端表项存储相应的数据和所述IP地址,即建立表项;所述索f 1值如果不大于表项空间的一半,则从该索引值向表项的高端, 即在当前表项的后一个表项,存储相应的数据和所述IP地址;如果后一个表 项也已经被占用,则再向表项的高端查找,直至找到未被占用的高端表项, 建立表项。在步骤203中,针对某个IP地址,使用HASH索引值,从步骤201中 分配的空间里面4企索到该IP地址所对应的表项。在步骤204中,判断索引当前指向的位置是否大于表项空间的一半,如 果大于,则执行步骤205;否则,执行步骤206。在步骤205中,从索引当前指向的位置, 一次性向表项的低端读取连续 N个表项,执行步骤207。在步骤206中,从索引当前指向的位置, 一次性向表项的高端读取连续 N个表项,执行步骤207。在步骤205或步骤206中,fi设索引当前指向的位置为M,当从M向 表项的低端或表项的高端读取连续N个表项后,索引当前指向的位置也将相 应地修改为M - N或M + N。在步骤207中,将各表项中的IP地址与本次索引所用的IP地址进行比 对,以获知各表项中是否存在与本次索引所用的IP地址相同的IP地址。当各表项中存在与本次索引所用的IP地址相同的IP地址时,表示存在 与索引用的IP地址匹配的表项,即,存在与索引用的IP地址匹配的目标数 据,此时,在步骤208中,结束本次查找过程。当各表项中不存在与本次索引所用的IP地址相同的IP地址时,表示不 存在与索引用的IP地址匹配的表项,即,不存在与索引用的IP地址匹配的 目标数据,此时,在步骤209中,从索引当前指向的位置,继续向原方向一 次性读取连续N个表项,执行步骤207。可以看出,为减少对外部存储i殳备的访问,实施例l所述的方法采用一 次性从外部存储设备中读取若干个表项的方法,避免了出现冲突时产生大量 的外存访问。而且,若干个相关的表项在地址上相邻,只需要发出一个起始 地址以及若干个表项的大小之和,就可以一次性将这几个表项读入CPU,其 速度远高于逐个读入单个表项。这些都是现有的顺序挖掘法和其他方法所不 具备的优点。另外,在实施例1中,将表项空间平均分为两部分。在HASH索引值大 于表项空间的一半时,从高端向低端读取表项;在HASH索引值小于或等于 表项空间的一半时,从低端向高端读取表项。这样,外部存储设备总的存储 空间不会随着冲突的增加而增加,而且降低了外部存储设备的管理难度,该 优点对于嵌入式系统的设计是非常有利的。在实施例1中,4艮设需要容納256K个表项,而为实现能从表项的高、 低端相向查找,则至少要分配512K的表项空间。这是因为冲突有可能集中 在256K-1的位置,以致整个表项空间的低端完全空白,而高端全部占用, 或者反之。粗略看来,采用本发明实施例1所述的方法与现有的顺序挖掘法和其他方法相比,没有任何节省外部存储设备的存储空间的优势。实际上,为减少HASH沖突的概率,无论采取何种算法,出现大量冲突 之后必然会导致效率的降低,因此所有的实际应用设计中都会为HASH表预 留比较大的空间,否则将会随着实际有效表项的不断增加性能急剧恶化。例如,为容纳256K实际有效的表项,总表项的存储空间会设计成1M 表项甚至更大。在这种情况下,采用本发明实施例1所述的方法,总表项的 存储空间只需要占用1M的表项空间,而现有的方法则需要占用1M + 256K 的表项空间。在现有的方法中,额外占用的表项空间是绝对的,无论总表项 空间扩展到多大,都还需要占用额外的表项空间。而且,额外占用表项空间 也增加了存储器管理(指针、数组)的复杂程度。通过上述分析可以看出,釆用本发明实施例1所述的方法,在外部存储 设备的存储空间占用和存储管理等方面也有明显的优势。实施例1虽然是以IPv4版本的核心路由器设计为例进行说明的,但本领 域技术人员可以很明显地看出,本发明不局限于实施例1中的核心路由器设 计,还能应用于其他的应用场合,这里不再重复举例说明。本发明还提出另一种HASH表的操作方法。下面,结合实施例2对该方 法做具体说明,图3是实施例2的流程图。在步骤301中,分配表项空间,并设置每次读取的表项的个数N。在步骤302中,采用HASH算法,将IP地址转换为HASH索引值,并 在每个表项中存储未经HASH算法转换的IP地址。其中,在将IP地址转换为HASH索引值后,将相应的数据和所述IP地 址存储在该索引值对应的当前表项中;如果当前表项已经被占用,则从该索 引值向表项的低端,即在当前表项的前一个表项,存储相应的数据和所述IP 地址;如果前一个表项也已经被占用,则再向表项的低端查找,直至找到未 被占用的低端表项,在该低端表项存储相应的数据和所述IP地址,即建立表 项;当索引指向的位置到ii^项的最低端时,将索引指向的位置回绕到表项 的最高端,从而形成环形的存储方式。或者,在将IP地址转换为HASH索引值后,如果该索引值对应的当前 表项已经被占用,则从该索引值向表项的高端,即在当前表项的后一个表项,存储相应的数据和所述IP地址;如果后一个表项也已经被占用,则再向表项 的高端查找,直至找到未被占用的高端表项,建立表项;当索引指向的位置 到*项的最高端时,将索引指向的位置回绕到表项的最低端,从而形成环 形的存储方式。在步骤303中,针对某个IP地址,使用HASH索引值,从步骤301中 分配的表项空间里面^r索到该IP地址所对应的表项。在步骤304中,从索引当前指向的位置, 一次性向表项的高端读取连续 N个表项。当索引指向的位置到ii^项的最高端时,将索引指向的位置回绕到表项 的最低端,从而形成环形的查找方式。其中,假设索引当前指向的位置为M,当从M向表项的高端读取连续N 个表项后,索引当前指向的位置也将相应地^f奮改为M + N。在步骤305中,将各表项中的IP地址与本次索引所用的IP地址进行比 对,以获知各表项中是否存在与本次索引所用的IP地址相同的IP地址。当各表项中存在与本次索引所用的IP地址相同的IP地址时,表示存在 与索引用的IP地址匹配的表项,即,存在与索引用的IP地址匹配的目标数 据,此时,在步骤306中,结束本次查找过程。当各表项中不存在与本次索引所用的IP地址相同的IP地址时,表示不 存在与索引用的IP地址匹配的表项,即,不存在与索引用的IP地址匹配的 目标数据,此时,执行步骤304。图4是执行实施例2所述方法的示意图。可以看出,为减少对外部存储i殳备的访问,实施例2仍然采用一次性从 外部存储设备中读取若干个表项的方法,避免了出现冲突时产生大量的外存 访问。在实施例2所述的方法中,采用了环形回绕的方式查找表项,假设需要 存储256K个表项,则只要分配256K个表项空间即可。与实施例1中采用从 高、低端相向查找表项的方式相比,采用环形回绕的方式查找表项,其好处 在于,可以进一步节省外部存储设备的存储空间。本领域技术人员可以看出,虽然在实施例2所述的方法中,采用从低端向高端读取表项的方式,实际上,也可以采用从高端向低端读取表项的方式, 这里不再重复举例说明。基于上述HASH表搡作方法,本发明还提供相应的HASH表操作装置, 图5是该装置的示意图,该装置包括检索单元51、表项读取单元52、查询 单元53。其中,表项读取单元52包括定向单元521和读取单元522。该装置 还可以包括转换建立单元541、判断单元542和表项建立单元543。表项空间由装置外部的存储单元提供,利用转换建立单元541,可以将 索引数据转换为HASH索引值,将相应的目标数据和所述索引数据存储在该 索引值对应的当前表项中。如果当前表项已经被占用,则利用判断单元542判断所述索引值是否大 于表项空间的一半。所述索引值如果大于表项空间的一半,则表项建立单元543将从该索引 值向表项的低端,即在当前表项的前一个表项,存储相应的数据和所述索引 IP地址;如果前一个表项也已经被占用,则再向表项的低端查找,直至找到 未被占用的低端表项,在该低端表项存储相应的数据和所述IP地址,即建立 表项;所述索引值如果不大于表项空间的一半,则表项建立单元543将从该索 引值向表项的高端存储相应的数据和所述IP地址;如果后一个表项也已经被 占用,则再向表项的高端查找,直至找到未被占用的高端表项,建立表项。当需要检索某个IP地址所对应的表项时,检索单元51可以根据该IP地 址,采用HASH索引值,在所述表项空间中检索该IP地址所对应的表项。 检索单元51检索到该IP地址所对应的表项后,将触发表项读取单元52从 所述表项空间中读取表项。表项读取单元52受到检索单元51或查询单元53的触发后,将在所述 表项空间中从索引当前的位置读取N个表项,N为大于1的整数。受到4企索单元51的触发读取表项时,表项读取单元52中的定向单元 521,将根据索引当前的位置确定表项的读取方向;读取单元522,将在定向 单元521所确定的方向读取连续N个表项。其中,在检索单元触发时,定向单元522将判断索引当前的位置是否大于所述表项空间的一半;在索引当前的位置大于所述表项空间的一半时,确 定表项的低端为读取方向;否则,确定表项的高端为读取方向。定向单元521确定表项的读取方向后,读取单元522将按确定的方向, 从索引当前指向的位置向表项的高端或低端一次性读取连续N个表项;读取 单元522受到查询单元53的触发后,仍然4安定向单元521确定的方向,从索 引当前指向的位置向表项的高端或低端一次性读取连续N个表项。这里需要指出的是,假设索引当前指向的位置为M,当从M向表项的 低端或高端读取连续N个表项后,索引当前指向的位置也将相应地修改为M -N或M + N。查询单元53用于查询表项读取单元52读取的N个表项中是否存在与所 述IP地址相同的IP地址,如果不存在,则触发表项读取单元52中的读取单 元522继续从所ii^项空间中读取表项;否则,结束本次HASH表查找,不 触发表项读取单元52。可以看出,为减少对外部存^i殳备的访问,图5所示的装置采用一次性 从外部存储设备中读取若干个表项的方法,避免了出现冲突时产生大量的外 存访问。而且,若干个相关的表项在地址上相邻,只需要发出一个起始地址 以及若干个表项的大小之和,就可以一次性将这几个表项读入装置,其速度 远高于逐个读入单个表项。这些都是现有的顺序挖掘法和其他方法所不具备 的伊乙点。另外,在图5所示的装置中,将表项空间平均分为两部分。在HASH索 引值大于表项空间的一半时,从高端向低端读取表项;在HASH索引值小于 或等于表项空间的一半时,从低端向高端读取表项。这样,外部存储设备总 的存储空间不会随着冲突的增加而增加,而且降低了外部存储设备的管理难 度,该优点对于嵌入式系统的设计是非常有利的。在图5所示的装置中,假设需要容纳256K个表项,而为实现能从表项 的高、低端相向查找,则至少要提供512K的表项空间。这是因为冲突有可 能集中在256K-1的位置,以致整个表项空间的低端完全空白,而高端全部 占用,或者反之。粗略看来,采用图5所示的装置没有任何节省外部存储设 备的存储空间的优势。实际上,为减少HASH冲突的概率,无论采取何种算法,出现大量冲突 之后必然会导致效率的降低,因此所有的实际应用设计中都会为HASH表预 留比较大的空间,否则将会随着实际有效表项的不断增加性能急剧恶化。例如,为容纳256K实际有效的表项,总表项的存储空间会设计成1M 表项甚至更大。在这种情况下,采用本发明图5所示的装置,总表项的存储 空间只需要占用1M的表项空间,而现有的方法则需要占用1M + 256K的表 项空间。在现有的方法中,额外占用的表项空间是绝对的,无论总表项空间 扩展到多大,都还需要占用额外的表项空间。而且,额外占用表项空间也增 加了存储器管理(指针、数组)的复杂程度。通过上述分4斤可以看出,采用本发明图5所示的装置,在外部存储单元 的存储空间占用和存储管理等方面也有明显的优势。与图5所示的装置中,表项读取单元52利用定向单元521和读取单元 522实现从高、低端相向的方式查找表项。在实际应用中,表项读取单元52 也可以采用其他方式查找表项。例如,表项读取单元52在受到4企索单元51或查询单元53的触发后, 可以从索引当前的位置直接向表项的高端或低端读取连续N个表项。此时, 所述装置还可以包括一个回绕单元,用于在表项读取单元52读取到表项的最 高端或最低端时,通知表项读取单元52回绕到表项的最低端或最高端继续读 取表项。采用了环形回绕的方式查找表项,假设需要存储256K个表项,则只要 分配256K个表项空间即可。与采用从高、低端相向查找表项的方式相比, 采用环形回绕的方式查找表项,其好处在于,可以进一步节省外部存储单元的存储空间。采用了环形回绕的方式查找表项,也需要相应地采用环形回绕的方式建 立表项,此时,图5所示装置中的转换建立单元541、判断单元542和表项 建立单元543将被转换建立单元和表项建立单元取代。转换建立单元用于将索引数据转换为HASH索引值,将相应的目标数据 和所述索亏I数据存储在该索? I值对应的当前表项中。当前表项如果已经被占用,则表项建立单元从该索引值向表项的高端或低端存储相应的数据和所述IP地址;当索引指向的位置到ii4项的最高端或 最#^端时,将索引指向的位置回绕到表项的最^氐端或最高端。还需要"i兌明的是,虽然前述实施例中都以IP地址为例,但是HASH表 查找在很多技术领域中都得到应用,比如三层的IP地址、二层的介质接入控 制(MAC)地址,甚至还包括身份证号、书刊文件编号、货物条码号等各种 具体应用中所-使用的有失见律的、可用于索引获取其他信息的编码。只要采用 HASH表进行查找,都可以采用本发明提供的方法及装置。以上所述的实施例仅为本发明的较佳实施例而已,并不用以限制本发 明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1. 一种哈希HASH表操作方法,其特征在于,包括根据HASH索引值检索索引字段所对应的表项;检索到相应的表项后,从索引当前的位置读取N个表项,N为大于1的整数;当所述N个表项中不存在与索引字段匹配的目标数据时,则继续从索引当前的位置读取N个表项,直至查找到与索引字段匹配的目标数据为止。
2、 如权利要求1所述的HASH表操作方法,其特征在于,检索到相应 的表项后,根据索引当前的位置确定表项的读取方向,在所述读取方向读取 连续N个表项。
3、 如权利要求2所述的HASH表操作方法,其特征在于,在索引当前 的位置大于表项空间的一半时,向表项的低端读取表项;否则,向表项的高 端读取表项。
4、 如权利要求3所述的HASH表操作方法,其特征在于,按下述步骤 建立表项将目标数据中的索引字段转换为HASH索引值,将相应的目标数据和所 述索引字段存储在该索《1值对应的当前表项中;当前表项已被占用时,判断所述索?j值是否大于表项空间的一半;所述索引值大于表项空间的一半时,从该索引值向表项的低端存储相应 的目标数据和所述索? 1字段;所述索引值不大于表项空间的一半时,从该索引值向表项的高端存储相 应的目标数据和所述索引字段。
5、 如权利要求1所述的HASH表操作方法,其特征在于,从索引当前 的位置向表项的高端或低端读取连续N个表项。
6、 如权利要求5所述的HASH表操作方法,其特征在于,进一步包括 当读取到表项的最高端或最低端时,回绕到表项的最低端或最高端,继续读 取表项。
7、 如权利要求6所述的HASH表操作方法,其特征在于,按下述步骤 建立表项将目标数据中的索引字段转换为HASH索引值,将相应的目标数据和所述索引字段存储在该索引值对应的当前表项中;当前表项已被占用时,从该索S1值向表项的高端或低端存储相应的目标 数据和所述索引字段;当索引指向的位置到ii4项的最高端或最低端时,将索引指向的位置回 绕到表项的最低端或最高端。
8、 如权利要求1至7任意一项所述的HASH表操作方法,其特征在于, 所述索引字段包括网际协议IP地址、介质接入控制MAC地址、或具有使 用规律可用于索引获取其他信息的编码。
9、 一种HASH表操作装置,其特征在于,包括检索单元、表项读取 单元和查询单元;所述检索单元用于根据HASH索引值检索索引字段所对应的表项,在检 索到相应的表项后触发表项读取单元读取表项;所述表项读取单元用于根据检索单元或查询单元的触发,从索引当前的 位置读取N个表项,N为大于1的整数;所述查询单元用于查询表项读取单元读取的N个表项中是否存在与索5 j 字段匹配的目标数据,如果不存在,则触发表项读取单元继续读取表项。
10、 如权利要求9所述的HASH表操作装置,其特征在于,所述表项读 取单元包括定向单元,用于在检索单元触发时,根据索引当前的位置确定表项的读 取方向;读取单元,用于在定向单元所确定的方向读取连续N个表项。
11、 如权利要求10所述的HASH表操作装置,其特征在于,所述定向 单元在检索单元触发时,判断索引当前的位置是否大于表项空间的一半;在 索引当前的位置大于表项空间的一半时,确定表项的低端为读取方向;否贝'j, 确定表项的高端为读取方向。
12、 如权利要求11所述的HASH表操作装置,其特征在于,还包括 第 一转换建立单元,用于将目标数据中的索引字段转换为HASH索引值,将相应的目标数据和所述索? 1数据存储在该索Sj值对应的当前表项中;判断单元,用于在当前表项已被占用时,判断所述索引值是否大于表项空间的一半;第一表项建立单元,用于在所述索引值大于表项空间的一半时,从该索 引值向表项的低端存储相应的目标数据和所述索引数据;在所述索引值不大 于表项空间的一半时,从该索引值向表项的高端存储相应的目标数据和所述 索引数据。
13、 如权利要求9所述的HASH表操作装置,其特征在于,所述表项读 取单元从索引当前的位置向表项的高端或低端读取连续N个表项,当读取到 表项的最高端或最低端时,回绕到表项的最低端或最高端,继续读取表项。
14、 如权利要求B所述的HASH表操作装置,其特征在于,还包括 回绕单元,用于在表项读取单元读取到表项的最高端或最低端时,通知表项读取单元回绕到表项的最低端或最高端继续读取表项。
15、 如权利要求14所述的HASH表操作装置,其特征在于,还包括 第二转换建立单元,用于将目标数据中的索引字段转换为HASH索引值,将相应的目标数据和所述索? 1字段存储在该索S1值对应的当前表项中;第二表项建立单元,用于在当前表项已被占用时,从该索引值向表项的 高端或低端存储相应的目标数据和所述索引字段;当索引指向的位置到达表 项的最高端或最低端时,将索引指向的位置回绕到表项的最低端或最高端。
16、 如权利要求9至15任意一项所述的HASH表操作装置,其特征在 于,所述索引字段包括网际协议IP地址、介质接入控制MAC地址、或具 有使用规律可用于索引获取其他信息的编码。
全文摘要
本发明公开一种HASH表操作方法,包括根据HASH索引值检索索引字段所对应的表项;检索到相应的表项后,从索引当前的位置读取N个表项,N为大于1的整数;当所述N个表项中不存在与索引字段匹配的目标数据时,则继续从索引当前的位置读取N个表项,直至查找到与索引字段匹配的目标数据为止。本发明还公开一种采用所述HASH表操作方法的装置。本发明提供的HASH表操作方法及装置,不仅能够解决数据查找中的HASH冲突,而且,与现有的顺序挖掘法和其他方法相比,具有更高的查找效率,占用的存储空间也不会随着冲突的增加而增大。
文档编号G06F17/30GK101267381SQ200710064368
公开日2008年9月17日 申请日期2007年3月13日 优先权日2007年3月13日
发明者蓝建栋 申请人:大唐移动通信设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1