CN103294822B - 一种基于主动哈希和布隆过滤器的高效缓存方法 - Google Patents

一种基于主动哈希和布隆过滤器的高效缓存方法 Download PDF

Info

Publication number
CN103294822B
CN103294822B CN201310237798.7A CN201310237798A CN103294822B CN 103294822 B CN103294822 B CN 103294822B CN 201310237798 A CN201310237798 A CN 201310237798A CN 103294822 B CN103294822 B CN 103294822B
Authority
CN
China
Prior art keywords
node
hash
chained list
character
carries out
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
CN201310237798.7A
Other languages
English (en)
Other versions
CN103294822A (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.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN201310237798.7A priority Critical patent/CN103294822B/zh
Publication of CN103294822A publication Critical patent/CN103294822A/zh
Application granted granted Critical
Publication of CN103294822B publication Critical patent/CN103294822B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种基于主动哈希和布隆过滤器的高效缓存方法,其步骤如下:一、计算关键词哈希值,定位对应链表;二、计算过滤表坐标,读取标记位值;三、检测所有标记位,若全1则无法过滤,进行四,只要有0,即可判断关键词不存在,可进行过滤,进行十一;四、遍历链表下一节点;五、判断该节点数据是否匹配关键词,“是”进行六,“否”进行七;六、查询命中,读取该节点访问次数并判断该值是否超过链表最大访问次数,“是”进行八,“否”进行十;七、判断下一节点是否为空,“是”回到四,“否”进行十一;八、判断节点是否处于链表头部,“是”进行十,“否”进行九;九、移动节点至链表表头;十、更新链表最大访问次数;十一、返回查询失败。

Description

一种基于主动哈希和布隆过滤器的高效缓存方法
(一)技术领域:
本发明基于主动哈希和布隆过滤器的高效缓存方法,可用于高速缓存中数据的高效查找,属于计算机技术应用领域。
(二)技术背景:
现如今的很多系统,如:电子病历(Electronic Healthcare Record,简称EHR)、域名系统(Domain Name System,简称DNS)等具有数据量大、具备高度隐私性、数据类型多样等特点,造成其安全存储、查找操作的复杂性和艰巨性。对这样数据的处理除了完成基本功能之外,还必须考虑CPU和内存等物理因素,同时要防范常见的网络攻击,如拒绝服务攻击(Deny of Service,简称DoS)。
高速缓存是为了提高数据查找效率而设置的,针对查询流量大等特点,存储时需要采用哈希链式存储,并且由于数据查找操作频繁,因此对查找算法的要求很高。采用哈希均匀的算法是查找效率提高的前提,所以,必须对哈希算法进行优化。对于查找命中的情况,如果能够尽量减少平均查找长度,对于大量查找操作,其好处是明显的。另外,由于实际中攻击者往往大量发送不存在的查询请求,以实施DoS攻击,因此针对查找失败的情况,也要进行算法的优化,避免CPU资源被大量耗尽。
哈希表是一个非常有用的、非常基础的数据结构,在数据的查找方面尤其重要,应用的非常广泛。然而,任何事物都有两面性,哈希也存在缺点,即数据的局部集中性会使散列的性能急剧下降,且越集中,性能越低。数据集中,即搜索键在通过哈希函数运算后,得到同一个结果,指向同一个桶,这时便产生了数据冲突。通常解决数据冲突的方法有:拉链法和开地址法。拉链法我们用的非常多,即存在冲突时,简单的将元素链在当前桶的最后元素的尾部。
分离链接法的做法是将哈希到同一个值的所有元素保留到一个表中,为方便起见,这些表都有表头,因此,表的实现与普通的链表相同。如果空间很紧,可以避免表头。
在传统的哈希表查找算法中,对于访问频繁的关键字,如果在生成哈希表的时候将该节点置于某一链表的后部,则每次都要进行相当多次的链表遍历才能查找到该项,势必会增加平均查找长度,降低效率。
事实上很多事物和现象都存在一个延续性原理,即在最近一段时间内不曾访问过的也在不久的将来访问的可能性也较小。该思想在操作系统的页面淘汰算法中大量使用。一种主动的哈希查找算法也是基于此思想得出的。对于电子病历库来说,如果一个病人的病历在一段时间内没有被访问到,则意味着该病历在不久的将来访问的可能性也比较小。为减少平均查找长度,可将该项向后移动。对不频繁访问节点的向后移动可以转化成对最近访问链表节点的向前移动。在主动的哈希查找算法中,当访问某个节点时,则将该节点前移至链表的表头。以此来减少整个访问过程中的平均查找长度。
对于传统的主动哈希查找算法,虽然已经减小了平均查找长度,但是也存在一定的弊端。可以考虑下面情况。
假设某关键词的访问频率很低,在某一时刻,有一个该词的访问,按照主动哈希查找算法,在访问完该词后,需将该词提至链表头部,之后,该词一直没有访问过,则在有限的一段时间里(该段时间指从该词被访问到该链表其余节点均被访问)有些节点被排在该词之后。这种情况下,必然会增加整个链表的平均查找长度。另外,这种方法对于链表的排序修改过于频繁,也增加了系统的负担。
基于以上原因,已有人提出一种改进的主动哈希查找算法。该算法并非对于每个访问到的节点都前移至表头,而是先作判断,如果该节点属于经常访问的则将其移至表头,如果是偶尔访问到的,则不做位置移动。
至此,问题转化成为如何判定哪些节点属于“经常访问”的。对这个性质的评判标准成为该算法的重点。可以称对节点访问的经常性为“访问度”。在这里,可以用对该节点访问的时间间隔作为判断依据。“时戳”记录了最近一次访问该项的时间,用1970年1月1号零点距该时间的秒数表示。
在这里,将某个节点的访问度描述成当前访问时间和上一次访问时间的时间差(用秒来计算)的倒数,时间间隔越长,则访问度越小。
在哈希表节点中还设置了一个“平均值”为对应链表各节点“访问度”的平均。当访问到一个节点时,如果新计算的“访问度”不小于“平均值”,则将该节点移动至表头;否则,节点位置不动。比较之后,要更新节点的“平均值”为新的平均值。
本发明就是针对EHR、DNS这类特殊数据库系统的高速缓存,提供一种基于主动哈希和布隆过滤器的高效缓存方法。
(三)发明内容:
1、目的:
本发明提供一种基于主动哈希和布隆过滤器的高效缓存方法,以实现查找效率的大幅提高。
(1)采用能均匀哈希的字符串哈希函数具有较好的散列效果(一个理想的哈希存储结构如图1所示)。因此要实现高效查找,故急需选用可能均匀的哈希函数。
(2)在传统的主动哈希中(传统的主动哈希如图2所示),对链表的排序修改过于频繁,也增加了系统的负担。因此要实现高效查找,故急需对原有的主动哈希进行改进。
(3)哈希拉链算法没有考虑查找频率,从而使得总体的查找效率较低,尤其当大量查找失败时,拉链算法的效率急剧下降。因此要实现高效查找,故急需在查找时先进行有效过滤。
2、技术方案:
本发明为一种基于主动哈希和布隆过滤器的高效缓存方法,可以有效降低查找成功时的平均查找长度,并降低查找失败时的CPU利用率。本发明的技术方案通过哈希寻址模块、标记管理模块、全局存储模块和高效查找模块这4个模块实现,如图3所示,各模块功能详细介绍如下:
其中,所述的哈希寻址模块包含ELF(为一哈希算法的名称)哈希计算单元、寻址定位单元2部分。哈希寻址模块的内部功能单元如图4所示。具体功能如下:
(1)ELF哈希单元:采用能均匀哈希的字符串哈希函数。
(2)寻址定位单元:采用分离链表法时,将冲突的哈希节点以链表形式储存。哈希结构为数组,因此所求出的哈希值即可作为数组下标进行寻址,从而定位出该关键词所属的哈希链表的头节点地址。找出头节点后,进行普通的链表遍历时,进行下一节点的定位,并读取节点关键词。
其中,所述的标记管理模块包含布隆过滤表单元、缓存更新单元2部分。标记管理模块的内部功能单元如图5所示。具体功能如下:
(1)标记生成单元:在哈希表构建同时,进行布隆过滤表的构建,这样,在查找时,通过先检测布隆过滤表中相应位的情况,可排除不存在的关键词,避免链表的遍历。此外,该模块还包含定时功能,否则,当一段时间以后,布隆过滤器的标记为全部占满,失去其应有的作用。
(2)标记清除单元:设置一个计时周期,例如,24小时(即以天为计时周期),清空过滤器标记、统计信息和哈希表数据结构,重新进行存储。
其中,所述的全局存储模块包含全局数组单元、全局统计量单元2部分。全局存储模块的内部功能单元如图6所示。具体功能如下:
(1)哈希表数组单元:为所有哈希链表的表头所在地址;
(2)过滤表数组单元:为布隆过滤表;
(3)全局统计量单元:各链表最大访问次数,初始化为1。
其中,所述的高效查找模块为本方法核心模块。查找过程中,读取布隆过滤表标记位,判断关键词是否存在,如果不存在,则返回查询失败。如果无法判断出不存在,再进行哈希表的遍历。如果遍历过程中匹配上待查关键词,则访问次数加1,同时检查是否超过该链表最大访问次数,若超过最大值,则移动该节点至链表头部,同时更新最大访问次数,返回查询成功。若遍历完成后都没有找到匹配的关键词,返回查询失败。高效查找模块包含布隆过滤单元、查询匹配单元、阈值判断单元、主动哈希单元和更新信息单元5部分。高效查找模块的内部功能单元如图7所示。具体功能如下:
(1)布隆过滤单元:通过读取对应的标记位的0、1情况,即可做出快速判断。
(2)查询匹配单元:依此遍历每个节点,如果不匹配则继续遍历,若遍历完仍未匹配,返回失败。若遍历过程中匹配成功,记录该节点访问次数到统计量中,同时进入阈值判断单元;
(3)阈值判断单元:读取存储单元中的统计信息,得出该链表的最大访问次数。
(4)主动哈希单元:将节点从链表摘下,放入表头。
(5)更新信息单元:最大访问次数更新为新头部节点的访问次数值。
本发明提供的流程框图如图8所示。
本发明一种基于主动哈希和布隆过滤器的高效缓存方法,其具体步骤如下:
步骤一:计算待查找关键词的哈希值,定位对应的哈希链表;
步骤二:计算布隆过滤表标记位的坐标,找到对应的布隆过滤表中标记位值;即由高效查找模块中的标记生成单元完成,结果保存到全局存储模块中的过滤表数组单元中;
步骤三:检测所有标记位的值,若全为1,则无法过滤,进行步骤四,只要有一位为0,即可判断出关键词不存在,可行过滤,进行步骤十一;
步骤四:遍历链表的下一个节点;
步骤五:判断该节点的数据是否与关键词匹配,“是”进行步骤六,“否”进行步骤七;
步骤六:查询已经命中,读取该节点访问次数,判断该值是否超过该节点所述链表的最大访问次数,“是”进行步骤八,“否”进行步骤十;所述的读取该节点访问次数,判断该值是否超过该节点所述链表的最大访问次数是由高效查找模块中的阈值判断单元完成,其读取的数据来源于全局存储模块中的全局统计量单元;
步骤七:判断下一个节点是否为空,“是”回到步骤四,“否”进行步骤十一;
步骤八:判断节点是否已经处于链表头部,“是”进行步骤十,“否”进行步骤九;
步骤九:移动链表至表头,先将链表从表中摘下,再插入到表头即可;
步骤十:更新表头最大访问次数;
步骤十一:返回查询失败。
其中,在步骤一中所述的计算定位对应的哈希链表节点,是由哈希寻址模块中的ELF哈希单元和寻址定位单元完成,结果保存到全局存储模块中的哈希表数组单元中;
其中,在步骤三中所述的检测所有标记位的值由高效查找模块中的布隆过滤单元完成,其读取的数据来源于全局存储模块中的过滤表数组单元;
其中,在步骤四中所述的遍历链表的下一个节点为计算机的基本链表操作,直接对全局存储模块中的哈希表数组单元进行操作;
其中,在步骤五中所述的判断该节点的数据是否与关键词匹配,由高效查找模块的查询匹配单元完成,直接对全局存储模块中的哈希表数组单元进行操作;
其中,在步骤七中所述的判断下一个节点是否为空为计算机的基本链表操作,直接对全局存储模块中的哈希链头数组单元进行判断操作;
其中,在步骤八中所述的判断节点是否已经处于链表头部,为计算机的基本链表操作,直接对全局存储模块中的哈希链头数组单元进行判断操作;
其中,在步骤九中所述的移动链表至表头,先将链表从表中摘下,再插入到表头即可由高效查找模块中的主动哈希单元完成,该功能为基本链表操作的组合;
其中,在步骤十中所述的更新表头最大访问次数由高效查找模块中的更新信息单元完成,结果保存到全局存储模块中的全局统计量单元中;
其中,在步骤十一中所述的返回查询失败,由高效查找模块的布隆过滤单元(过滤器不理想时,也会由查询匹配单元完成),如果为理想过滤器时,全部由布隆过滤单元完成。
3、优点及功效:
本发明提供一种基于主动哈希和布隆过滤器的高效缓存方法。该方法首先采用ELF哈希进行均匀哈希操作,又通过主动哈希大幅减少了哈希表的平均查找长度,同时,基于布隆过滤器的布隆过滤表,可避免了对肯定不存在的关键词进行链表遍历。该方法构建哈希表的同时对布隆过滤表进行标记,使得其在查找过程中可以通过布隆过滤表进行布隆过滤,同时若查找成功,也会根据访问次数与阈值的关系进行节点动态调整,实现改进的主动哈希。整个过程仅依赖计算机基本的数据结构,操作简单易行,且易于编程实现。
其中查找频率的衡量有以下两种标准:
1)利用查找次数平均值,如果某域名的查找次数>平均查找次数,将该节点移到链表头部。
问题:次数会产生越界问题,一旦越界,算法失去意义。
2)利用查找时间间隔倒数的平均值,查找频率=1/(当前查找时戳 上次查找时戳)。如果某关键字的查找频率>平均查找频率,将该节点移到链表头部。
问题:如果在很短的时间内查找同一个域名,两次的时戳之差趋于0,取倒数会导致除0异常。
因而本发明具有高效、易实现和首创性的优点。
(四)附图说明:
图1理想哈希存储示意图。
图2原始主动哈希查找示意图。
图3本发明方法模块结构图。
图4本发明哈希寻址模块内部功能单元示意图。
图5本发明布隆过滤模块内部功能单元示意图。
图6本发明全局存储模块内部功能单元示意图。
图7本发明高效查找模块内部功能单元示意图。
图8本发明一种基于主动哈希和布隆过滤器的高效缓存流程框图。
(五)具体实施方式
见图1-图8所示,本发明一种基于主动哈希和布隆过滤器的高效缓存方法,其具体实施方式如下:
步骤一:计算待查找关键词的哈希值,定位对应的哈希链表;
步骤二:计算布隆过滤表标记位的坐标,找到对应的布隆过滤表中标记位值;所述的计算布隆过滤表标记位的坐标,查找对应的布隆过滤表中标记位值,是由高效查找模块中的标记生成单元完成,结果保存到全局存储模块中的过滤表数组单元中;
步骤三:检测所有标记位的值,若全为1,则无法过滤,进行步骤四,只要有一位为0,即可判断出关键词不存在,可行过滤,进行步骤十一;
步骤四:遍历链表的下一个节点;
步骤五:判断该节点的数据是否与关键词匹配,“是”进行步骤六,“否”进行步骤七;
步骤六:查询已经命中,读取该节点访问次数后,判断该值是否超过该节点所述链表的最大访问次数,“是”进行步骤八,“否”进行步骤十;所述的读取该节点访问次数,判断该值是否超过该节点所述链表的最大访问次数由高效查找模块中的阈值判断单元完成,其读取的数据来源于全局存储模块中的全局统计量单元;
步骤七:判断下一个节点是否为空,“是”回到步骤四,“否”进行步骤十一;
步骤八:判断节点是否已经处于链表头部,“是”进行步骤十,“否”进行步骤九;
步骤九:移动链表至表头,先将链表从表中摘下,再插入到表头即可;
步骤十:更新表头最大访问次数;
步骤十一:返回查询失败。
其中,在步骤一中所述的计算定位对应的哈希链表节点,是由哈希寻址模块中的ELF哈希单元和寻址定位单元完成,结果保存到全局存储模块中的哈希表数组单元中。哈希寻址模块中所用的ELF哈希算法是一种适合字符串型数据的均匀哈希算法。其算法把字符串的每个字符依次相加,每次将加的结果向左移动4位,即把当前字符ASCII(现今最通用的单字节编码系统)存入哈希结果低四位。如果加的结果大于28位,对结果向右移动24位与原值取异或。因为如果最高的四位不为0,则说明字符多余7个,如果不处理,再加第九个字符时,第一个字符会被移出,因此要有特殊处理。
其中,在步骤二中所述的计算布隆过滤表标记位的坐标,查找对应的布隆过滤表中标记位值,是由高效查找模块中的标记生成单元完成,结果保存到全局存储模块中的过滤表数组单元中。标记管理模块具体实施方式为:布隆过滤表后半区下标对应连续三个字符的ASCII码之和,元素为三字符中的第一个。前半区记录所有合法字符(0-9,a-z,A-Z,-)在各桶中的使用情况。将出现下述几种情形:
(1)连续三字符ASCII之和第一次出现:后半区对应位赋值为三字符的第一个字符
(2)连续三字符ASCII之和重复出现:由于后半区对应位已被赋值,所以需要用到前半区进行标记。
若三字符中第一个字符>对应位数值,则用标记区的高四位进行标记;
0x10(00010000):表示此字符在三字符中为第一个;
0x20(00100000):表示此字符在三字符中为第二个;
0x40(01000000):表示此字符在三字符中为第三个;
若三字符中第一个字符<对应位数值,则用标记区的低四位进行标记;
0x01(00000001):表示此字符在三字符中为第一个;
0x02(00000010):表示此字符在三字符中为第二个;
0x04(00000100):表示此字符在三字符中为第三个;
其中,在步骤三中所述的检测所有标记位的值由高效查找模块中的布隆过滤单元完成,其读取的数据来源于全局存储模块中的过滤表数组单元;全局存储模块在具体实施中,为节省空间,哈希表数组与过滤器数组单元可用一个二维数组实现。其中第一维对应每一个哈希链表,第二维作为布隆过滤表使用。全局统计量单元由链表结构体中的“链表长度”成员进行记录。
其中,在步骤四中所述的遍历链表的下一个节点为计算机的基本链表操作,直接对全局存储模块中的哈希表数组单元进行操作;
其中,在步骤五中所述的判断该节点的数据是否与关键词匹配,由高效查找模块的查询匹配单元完成,直接对全局存储模块中的哈希表数组单元进行操作;
其中,在步骤六中所述的读取该节点访问次数,判断该值是否超过该节点所述链表的最大访问次数由高效查找模块中的阈值判断单元完成,其读取的数据来源于全局存储模块中的全局统计量单元;高效查找模块进行布隆过滤时判断方法为:
(1)若后半区对应位为0,则说明该关键字一定不存在,可以直接返回“查找失败”结果;
(2)若后半区对应位不为0,再到前半区读取对应的标记位进行判断。如果标记位有一个为0的,则说明该关键字一定不存在,可以直接返回“查找失败”结果。
其中,在步骤七中所述的判断下一个节点是否为空为计算机的基本链表操作,直接对全局存储模块中的哈希链头数组单元进行判断操作;
其中,在步骤八中所述的判断节点是否已经处于链表头部,为计算机的基本链表操作,直接对全局存储模块中的哈希链头数组单元进行判断操作;
其中,在步骤九中所述的移动链表至表头,先将链表从表中摘下,再插入到表头即可由高效查找模块中的主动哈希单元完成,该功能为基本链表操作的组合;
其中,在步骤十中所述的更新表头最大访问次数由高效查找模块中的更新信息单元完成,结果保存到全局存储模块中的全局统计量单元中;
其中,在步骤十一中所述的返回查询失败,由高效查找模块的布隆过滤单元(过滤器不理想时,也会由查询匹配单元完成),如果为理想过滤器时,全部由布隆过滤单元完成;
综上所述,本发明包含一种基于主动哈希和布隆过滤器的高效缓存方法,包括哈希寻址模块、标记管理模块、全局存储模块和高效查找模块这4个模块,可用于EHR、DNS等数据库系统高速缓存的高效查找;本发明提供的方法,在主动哈希的基础上,引入布隆过滤思想,同时提高了查询失效时的效率。

Claims (1)

1.一种基于主动哈希和布隆过滤器的高效缓存方法,其特征在于:该方法的具体步骤如下:
步骤一:计算待查找关键词的哈希值,定位对应的哈希链表;
步骤二:计算布隆过滤表标记位的坐标,查找到对应的布隆过滤表中标记位值;即由高效查找模块中的标记生成单元完成,结果保存到全局存储模块中的过滤表数组单元中;
步骤三:检测所有标记位的值,若全为1,则无法过滤,进行步骤四,只要有一位为0,即判断出关键词不存在,进行过滤,进行步骤十一;
步骤四:遍历链表的下一个节点;
步骤五:判断该节点的数据是否与关键词匹配,“是”进行步骤六,“否”进行步骤七;
步骤六:查询已经命中,读取该节点访问次数,判断该节点访问次数是否超过该节点所述链表的最大访问次数,“是”进行步骤八,“否”进行步骤十;所述的“读取该节点访问次数,判断该节点访问次数是否超过该节点所述链表的最大访问次数”是由高效查找模块中的阈值判断单元完成,其读取的数据来源于全局存储模块中的全局统计量单元;
步骤七:判断下一个节点是否为空,“是”回到步骤四,“否”进行步骤十一;
步骤八:判断节点是否已经处于链表头部,“是”进行步骤十,“否”进行步骤九;
步骤九:移动链表至表头,先将链表从表中摘下,再插入到表头即可;
步骤十:更新表头最大访问次数;
步骤十一:返回查询失败;
其中,在步骤一中所述的计算定位对应的哈希链表节点,是由哈希寻址模块中的ELF哈希单元和寻址定位单元完成,结果保存到全局存储模块中的哈希表数组单元中;哈希寻址模块中所用的ELF哈希算法是一种适合字符串型数据的均匀哈希算法;其算法把字符串的每个字符依次相加,每次将加的结果向左移动4位,即把当前字符ASCII存入哈希结果低四位;如果加的结果大于28位,对结果向右移动24位与原值取异或;如果最高的四位不为0,则说明字符多余7个,如果不处理,再加第九个字符时,第一个字符会被移出;
其中,在步骤二中所述的计算布隆过滤表标记位的坐标,查找对应的布隆过滤表中标记位值,是由高效查找模块中的标记生成单元完成,结果保存到全局存储模块中的过滤表数组单元中;标记管理模块具体实施方式为:布隆过滤表后半区下标对应连续三个字符的ASCII码之和,元素为三字符中的第一个;前半区记录所有合法字符0-9,a-z,A-Z,在各桶中的使用情况;将出现下述几种情形:
(1)连续三字符ASCII之和第一次出现:后半区对应位赋值为三字符的第一个字符;
(2)连续三字符ASCII之和重复出现:由于后半区对应位已被赋值,所以需要用到前半区进行标记;
若三字符中第一个字符大于对应位数值,则用标记区的高四位进行标记;
0x10:表示此字符在三字符中为第一个;
0x20:表示此字符在三字符中为第二个;
0x40:表示此字符在三字符中为第三个;
若三字符中第一个字符小于对应位数值,则用标记区的低四位进行标记;
0x01:表示此字符在三字符中为第一个;
0x02:表示此字符在三字符中为第二个;
0x04:表示此字符在三字符中为第三个;
其中,在步骤三中所述的检测所有标记位的值由高效查找模块中的布隆过滤单元完成,其读取的数据来源于全局存储模块中的过滤表数组单元;为节省空间,哈希表数组与过滤器数组单元用一个二维数组实现;其中第一维对应每一个哈希链表,第二维作为布隆过滤表使用;全局统计量单元由链表结构体中的“链表长度”成员进行记录;
其中,在步骤四中所述的遍历链表的下一个节点为计算机的基本链表操作,直接对全局存储模块中的哈希表数组单元进行操作;
其中,在步骤五中所述的判断该节点的数据是否与关键词匹配,由高效查找模块的查询匹配单元完成,直接对全局存储模块中的哈希表数组单元进行操作;
其中,在步骤六中所述的读取该节点访问次数,判断该节点访问次数是否超过该节点所述链表的最大访问次数由高效查找模块中的阈值判断单元完成,其读取的数据来源于全局存储模块中的全局统计量单元;高效查找模块进行布隆过滤时判断方法为:
(1)若后半区对应位为0,则说明该关键词一定不存在,直接返回“查找失败”结果;
(2)若后半区对应位不为0,再到前半区读取对应的标记位进行判断;如果标记位有一个为0的,则说明该关键词一定不存在,直接返回“查找失败”结果;
其中,在步骤七中所述的判断下一个节点是否为空为计算机的基本链表操作,直接对全局存储模块中的哈希链头数组单元进行判断操作;
其中,在步骤八中所述的判断节点是否已经处于链表头部,为计算机的基本链表操作,直接对全局存储模块中的哈希链头数组单元进行判断操作;
其中,在步骤九中所述的移动链表至表头,先将链表从表中摘下,再插入到表头即由高效查找模块中的主动哈希单元完成,该功能为基本链表操作的组合;
其中,在步骤十中所述的更新表头最大访问次数由高效查找模块中的更新信息单元完成,结果保存到全局存储模块中的全局统计量单元中;
其中,在步骤十一中所述的返回查询失败,由高效查找模块的布隆过滤单元,如果为理想过滤器时,全部由布隆过滤单元完成。
CN201310237798.7A 2013-06-17 2013-06-17 一种基于主动哈希和布隆过滤器的高效缓存方法 Active CN103294822B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310237798.7A CN103294822B (zh) 2013-06-17 2013-06-17 一种基于主动哈希和布隆过滤器的高效缓存方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310237798.7A CN103294822B (zh) 2013-06-17 2013-06-17 一种基于主动哈希和布隆过滤器的高效缓存方法

Publications (2)

Publication Number Publication Date
CN103294822A CN103294822A (zh) 2013-09-11
CN103294822B true CN103294822B (zh) 2016-08-10

Family

ID=49095684

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310237798.7A Active CN103294822B (zh) 2013-06-17 2013-06-17 一种基于主动哈希和布隆过滤器的高效缓存方法

Country Status (1)

Country Link
CN (1) CN103294822B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572727B (zh) * 2013-10-22 2018-09-28 阿里巴巴集团控股有限公司 一种数据查询方法及装置
CN107870925B (zh) * 2016-09-26 2021-08-20 华为技术有限公司 一种字符串过滤方法和相关装置
CN108205571B (zh) * 2016-12-20 2022-04-29 航天信息股份有限公司 键值数据表的连接方法及装置
TWI686072B (zh) * 2017-08-04 2020-02-21 財團法人資訊工業策進會 傳輸裝置及其傳輸資料保護方法
CN110413215B (zh) * 2018-04-28 2023-11-07 伊姆西Ip控股有限责任公司 用于获取访问权限的方法、设备和计算机程序产品
CN108647289B (zh) * 2018-05-05 2022-01-21 中国人民解放军战略支援部队信息工程大学 基于布谷哈希和布隆过滤器的Hash建表方法
CN110176984B (zh) * 2019-05-28 2020-11-03 创意信息技术股份有限公司 一种用于安全字符串模式匹配的数据结构构造及匹配方法
CN110633275B (zh) * 2019-07-26 2023-12-12 广东联合电子服务股份有限公司 一种etc交易数据滞留分析方法及装置
EP4059202A1 (en) * 2019-11-22 2022-09-21 Centripetal Networks, Inc. Methods and systems for prevention of attacks associated with the domain name system
CN111339148A (zh) * 2020-03-13 2020-06-26 深圳前海环融联易信息科技服务有限公司 防止击穿缓存服务的方法、装置、计算机设备及存储介质
CN111581328A (zh) * 2020-04-21 2020-08-25 浙江华途信息安全技术股份有限公司 一种数据比对检测方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102810107A (zh) * 2011-06-01 2012-12-05 英业达股份有限公司 重复数据的处理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7730058B2 (en) * 2005-10-05 2010-06-01 Microsoft Corporation Searching for information utilizing a probabilistic detector
US9256686B2 (en) * 2008-09-15 2016-02-09 International Business Machines Corporation Using a bloom filter in a web analytics application
CN101655861B (zh) * 2009-09-08 2011-06-01 中国科学院计算技术研究所 基于双计数布鲁姆过滤器的哈希方法和哈希装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102810107A (zh) * 2011-06-01 2012-12-05 英业达股份有限公司 重复数据的处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于改进主动哈希的URL存储和查找算法;赵大勇等;《微电子学与计算机》;20080430;第25卷(第4期);第35-38页 *
基于计数布隆过滤器的负载均衡算法;笱程成等;《计算机工程》;20100930;第36卷(第17期);第111-113,116页 *

Also Published As

Publication number Publication date
CN103294822A (zh) 2013-09-11

Similar Documents

Publication Publication Date Title
CN103294822B (zh) 一种基于主动哈希和布隆过滤器的高效缓存方法
CN103544261B (zh) 一种海量结构化日志数据全局索引管理方法及装置
CN103425725B (zh) 散列冲突降低系统
CN101692651B (zh) 一种哈希查找表的方法和装置
CN101655861B (zh) 基于双计数布鲁姆过滤器的哈希方法和哈希装置
CN102122285B (zh) 一种数据缓存系统中的数据查询系统和数据查询方法
CN102542034B (zh) 一种数据库接口的结果集缓存方法
WO2013152678A1 (zh) 元数据查询方法和装置
CN101594319A (zh) 表项查找方法和装置
Xiao et al. Using parallel bloom filters for multiattribute representation on network services
CN109597829B (zh) 一种实现可搜索加密关系型数据库缓存的中间件方法
CN111552692A (zh) 一种加减法布谷鸟过滤器
CN104951403B (zh) 一种低开销且无差错的冷热数据识别方法
CN101404649B (zh) 一种基于cache的数据处理系统及其方法
CN107515931A (zh) 一种基于聚类的重复数据检测方法
CN105357247A (zh) 基于分层云对等网络的多维属性云资源区间查找方法
CN102354301B (zh) 缓存分区方法
Han et al. A novel routing algorithm for IoT cloud based on hash offset tree
CN106484684B (zh) 一种对数据库中的数据进行术语匹配的方法
CN107679148A (zh) 一种分布式文件系统的会话查找方法、装置及设备
Cappellari et al. A path-oriented rdf index for keyword search query processing
CN103186542A (zh) 一种数据查询的方法及装置
CN106557503A (zh) 一种图像检索的方法和系统
CN108173974A (zh) 一种基于分布式缓存Memcached的HC Model内部缓存数据淘汰方法
CN109213760B (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