首页> 中国专利> 基于树形结构的布鲁姆过滤器的查询与更新方法

基于树形结构的布鲁姆过滤器的查询与更新方法

摘要

本发明公开了一种基于树形结构的布鲁姆过滤器的查询和更新方法,该方法为:在树形布鲁姆过滤器中存储一定规模或者具有相应特性数据的数据集;读入需要查询的数据集或者需要进行更新操作的数据集;基于树形结构的布鲁姆过滤器元素查询与更新;输出查询和更新结果。本发明可以大大减少误判发生的机率,降低了查询和更新操作所需的时间,增强布鲁姆过滤器的可扩展性,为网络数据存储和数据集成员查询提供保障,它可以应用于数据集中数据成员检测,以及广泛应用于数据库、网络和分布式系统中。

著录项

  • 公开/公告号CN102110171A

    专利类型发明专利

  • 公开/公告日2011-06-29

    原文格式PDF

  • 申请/专利权人 湖南大学;

    申请/专利号CN201110069411.2

  • 发明设计人 张大方;黄昆;苏欣;程聂;

    申请日2011-03-22

  • 分类号G06F17/30;

  • 代理机构长沙正奇专利事务所有限责任公司;

  • 代理人马强

  • 地址 410082 湖南省长沙市麓山南路2号

  • 入库时间 2023-12-18 02:43:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-05-22

    授权

    授权

  • 2011-08-10

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20110322

    实质审查的生效

  • 2011-06-29

    公开

    公开

说明书

技术领域

本发明涉及电子计算机网络技术,具体是指基于树形结构的布鲁姆过滤器的查询与更新方法。

背景技术

随着计算机科学的不断进步特别是网络技术的飞速发展,网络规模的增长日新月异,这就使得数据库和网络中数据规模也在不断的增大,网络资源的合理利用成为计算机科学研究的新一轮挑战。在网络中的数据流日趋庞大的今天,如何合理的表示和查找一个数据流的相关信息从而对它进行正确的处理,成为了计算机应用领域的核心问题。

存储空间的利用率,数据集查询和更新效率这两个方面是布鲁姆过滤器及其相关研究的重点关注所在,特别是在网络带宽资源依然宝贵,网络传输数据越来越大,网络负担越来越重,线上实时处理速度要求越来越高的今天。尽管提供存储空间的硬件设施随着技术的发展出现了一定程度上的富余,但是,对便于空间和时间的合理利用的高效的数据结构的进行研究,并且能够达到减少计算机处理器对片外存储器的操作,以提高工作效率的目的,具有重要的应用价值。本发明所提出的树形布鲁姆过滤器算法也是基于这一需求所提出的,是为了更好的满足空间和时间的高效性而针对布鲁姆过滤器算法所进行的研究。

布鲁姆过滤器BF是一种高效的数据存储结构,它主要用于在存在一定的假阳性概率下对数据成员的查找。同时布鲁姆过滤器也是一种用于信息表示的精简数据结构,它通过一个由“0”与“1”组成的比特位串来表示数据元素集合,并能够支持随机的哈希查找。布鲁姆过滤器算法的实质就是通过K个哈希函数将原本需要存储的数据元素集合转换成仅由一定比特位就能够表示的位串,它改善了传统查询算法(如:哈希查询,树形查找)中由数据大小决定存储空间的不利局面,在数据规模飞速膨胀的今天其意义显得尤为突出。布鲁姆过滤器是基于网络发展的现状所提出的高效的查询算法,但由于布鲁姆过滤器不支持元素删除操作的局限性,计数布鲁姆过滤器CBF被提出以便解决这一问题。CBF使用长度为m的计数器counter来代替布鲁姆过滤器中的比特位,以便记录元素映射到向量U中的情况,通过计数器的增减来表示元素的插入与删除。但是,当所取的m过小时CBF存在数据溢出的问题,而且使用固定比特的计数器会造成存储空间的浪费。

BloomingTree算法采用了多层次的布鲁姆过滤器结构,其主要思想是通过为置“1”的比特位增加由比特位组成的叶子结点的方式实现分层的数据结构,并且每一层的布鲁姆过滤器都能够呈现“树形”结构中相应叶子结点的层次特性,从而达到比CBF空间更加高效——空间需求减少了39.2%,达到减少假阳性的目的。BloomingTree算法数据结构如图1所示。

第一层是由m个比特位所组成的布鲁姆过滤器;第二、三层由叶子结点所组成,这些叶子结点的大小由控制函数bitnode决定,每个结点对应着第一层置“1”的比特位。第四层也就是最后一层则是由计数器组成的计数布鲁姆过滤器,其大小为m比特。

BloomingTree算法在逻辑索引方面的缺陷如图1中所标记的第5个比特位所示,当第4个比特位置“1”后,因为BloomingTree算法必须根据所查询的比特位的前一位是“1”还是“0”来决定下一层叶子结点置“1”的位置,而现在第5个比特位的前一个比特位由“0”变成了“1”,但是第5个比特位的下一层叶子结点并没有发生相应的变化,这种情况的发生必然会导致查询时出现误判,特别是当数据集规模增大,插入、删除操作增多时这样的情况将会频繁出现。

发明内容

本发明所要解决的技术问题是,在低于CBF的空间需求的条件下实现与CBF相同的功能,与CBF相比在相同的假阳性条件下达到更高的正确匹配率;解决BloomingTree算法在逻辑索引时的发生错误的问题,节省BloomingTree算法在查询和更新所需要的时间开销,提高正确匹配率。

为解决上述问题,本发明的技术方案是,基于树形结构的布鲁姆过滤器由多层次的布鲁姆过滤器构成,第一层为常用布鲁姆过滤器,中间层是由与第一层置“1”的比特位对应的叶子结点所组成的比特位串,最后一层为由计数器组成的计数布鲁姆过滤器。

所述基于树形结构的布鲁姆过滤器的查询与更新方法为:

1)在树形布鲁姆过滤器中存储一定规模或者具有相应特性数据的数据集;

2)读入需要查询的数据集或者需要进行更新操作的数据集;

3)基于树形结构的布鲁姆过滤器元素查询与更新;

4)输出查询和更新结果。

所述基于树形结构的布鲁姆过滤器元素查询与更新的步骤为:

第一步:使用哈希函数对数据集成员进行哈希计算;

第二步:对得到的哈希值求模,得到第一层置“1”的比特位在下一层叶子结点应该置“1”的位置;

第三步:对第一层置“1”的比特位之前已经置“1”的比特位进行计数,得到叶子结点在下一层叶子结点中的插入位置;

第四步:在中间层布鲁姆过滤器中根据得到的索引数据,查询或更新相应位置的叶子结点;

第五步:在最后一层查询或更新该层上一层相应比特位之前已经置“1”的比特位的个数,找到最后一层中的相应计数器。

本发明所述方法可以大大减少误判发生的机率,降低了查询、插入和删除操作所需的时间,增强布鲁姆过滤器的可扩展性,为网络数据存储和数据集成员查询提供保障。

附图说明

图1为BloomingTree基本结构及其查询示例;

图2为树形布鲁姆过滤器查询算法;

图3为树形布鲁姆过滤器插入过程;

图4为树形布鲁姆过滤器与BloomingTree匹配率比较;

图5为树形布鲁姆过滤器与BloomingTree查询时间比较;

图6(a)为树形布鲁姆过滤器与BloomingTree算法插入时间比较;

图6(b)为树形布鲁姆过滤器与BloomingTree算法删除时间比较。

具体实施方式

以下结合附图对本发明的具体实施方式作详细说明。

树形布鲁姆过滤器(Tree-based Bloom Filters)的基本数据结构如图1所示,算法采用了更加高效的查询、插入和删除的算法,这样不仅能够有效的解决BloomingTree算法在上述操作中所存在的逻辑索引时的错误,而且也有效的改进了在多层次结构中需要多次重复计算的缺点。在多层次结构中特别是当层数L逐渐增大时树形布鲁姆过滤器在能够保持BloomingTree在空间方面优势地位的同时,还有效的提高了时间的运算效率,下面就以bitnode=1为例,具体的介绍树形布鲁姆过滤器的查询,插入和删除操作。

在一个树形布鲁姆过滤器中查询元素a是否属于某一个数据集合U时,需要经过k个哈希函数中的任意一个或多个哈希后插入布鲁姆过滤器中,我们需要通过同样的哈希函数找到第一层布鲁姆过滤器中元素的正确位置u1[h(a)](L=1),然后需要找到在树形结构中相应的叶子结点并且返回相应的查询结果。

图2说明了TBF的基本查询过程,包括三个主要步骤:

步骤1:元素a经过哈希确定元素在第一层布鲁姆过滤器的位置u1[h(a)],如果u1[h(a)]的值等于1则继续查询L+1层,如果u1[h(a)]的值不等于1则返回元素a不属于数据集合U的信息。

步骤2:使用Popcount函数找出第一层布鲁姆过滤器中位置u1[h(a)]之前所有“1”的个数x从而找到接下来L-1层中需要查询的叶子结点的位置,同时用得到的哈希值h(a)对(此时bitnode=1)求模得到值p指示叶子结点中置“1”的位置Leaf[h(a)](当bitnode=1时表示叶子结点左结点,表示叶子结点右结点)。

步骤3:在L=2,3,4……L-1层中根据得到的参数x和p索引得到相应查询位置uL[h(a)],如果uL[h(a)]等于1则继续查询L+1层,如果uL[h(a)]不等于1则返回元素a不属于数据集合U的信息。

步骤4:在最后一层即第L层,使用Popcount函数找出第L-1层中查询位置u[h(a)]之前“1”的个数y,根据y找到第L层相应的计数器Counter,如果如果Counter不等于0则返回元素a属于数据集合U的信息,如果Counter等于0则返回元素a不属于数据集合U的信息。

多层次的查询能够保证比计数布鲁姆过滤器更高的正确匹配率,但是树形布鲁姆过滤器的关键还是在于的插入与删除操作是否能够在多层次索引结构中插入或者删除正确的叶子结点以便保证查询的正确匹配率。树形布鲁姆过滤器的插入与删除操作如图3所示,结合图2来描述树形布鲁姆过滤器的插入操作的具体步骤。图3表示树形布鲁姆过滤器的插入操作,在插入一个属于数据集合U的元素b时,首先元素b经过哈希函数哈希之后得到哈希值h(b),根据哈希值h(b)找到第一层布鲁姆过滤器中应该置“1”的位置并将其置“1”;其次使用Popcount函数找出第一层布鲁姆过滤器中位置u1[h(b)]之前所有“1”的个数x从而找到接下来L-1层中需要插入叶子结点位置并插入叶子结点,同时用得到的哈希值h(b)对求模得到值p指示叶子结点中置“1”的位置Leaf[h(b)];然后在L=2,3,4……L-1层中根据得到的参数x索引得到叶子结点应该插入的位置并插入叶子结点,在根据参数p索引得到叶子结点中应该置“1”的位置uL[h(b)]并将uL[h(b)]置“1”;在最后一层即第L层,使用Popcount函数找出第L-1层中查询位置u[h(b)]之前“1”的个数y,根据y找到第L层相应的计数器Counter并令计数器中的值加1。

树形布鲁姆过滤器的删除操作是插入操作的逆向过程,以删除元素c为例,在进行删除操作时,首先元素c经过哈希函数哈希之后得到哈希值h(c),根据哈希值h(c)找到第一层布鲁姆过滤器中应该置“0”的位置;其次使用Popcount函数找出第一层布鲁姆过滤器中位置u1[h(c)]之前所有“1”的个数x从而找到接下来L-1层中需要删除叶子结点位置;再在最后一层即第L层,使用Popcount函数找出第L-1层中查询位置u[h(c)]之前“1”的个数y,根据y找到第L层相应的计数器Counter并令计数器中的值减1;然后根据参数p删除L=L-1,L-2,L-3……2层中相应的叶子结点;最后根据哈希值h(c)将第一层布鲁姆过滤器相应位置置“0”。

图4中实验结果验证的是当假阳性一致的时候,树形布鲁姆算法匹配个数要大于BloomingTree算法的匹配个数。通过改变假阳性参数X=-f(X与假阳性概率f成反比),比较在K=4,5,6,7,8,9,10,11,12,14时,树形布鲁姆过滤器算法与BloomingTree算法在匹配率方面的匹配正确率。假阳性相同的情况下,匹配个数多证明明正确匹配的个数相比而言也就更多,实验验证了树形布鲁姆过滤器算法在数据成员查询方面的优势。

图5用于验证在层数相同条件下,假阳性发生变化时树形布鲁姆过滤器算法和BloomingTree算法在查询时间上的效率的优劣,选用最基本的层数L=4,在层数L固定条件下,比较在K=2,4,6,8,10,11,12,13,14,15时,分别在所构造的树形布鲁姆过滤器和BloomingTree中执行查询操作后的结果。经过统计实验结果后得到结论:在假阳性相同条件下,树形布鲁姆过滤器算法相对BloomingTree算法而言,其查询时间平均提高了13.37%。

图6用于验证在假阳性相同条件下,层数不断增大时树形布鲁姆过滤器算法和BloomingTree算法在插入和删除操作时间上的效率的优劣,需要比较在K=8条件下,选用不同层数L=4,5,6,7,8,9,10,11,12时,分别在所构造的树形布鲁姆过滤器和BloomingTree中进行十轮插入和删除操作后的结果。经过统计实验结果后得到结论:在假阳性相同条件下,树形布鲁姆过滤器算法相对BloomingTree算法而言,在执行插入操作时时间效率平均提高了17.93%,在执行删除操作时时间效率平均提高了12.01%。

本发明作为一种基于树形结构的布鲁姆过滤器算法,具有一定的通用性,并且可以通过应用该方法的思想改进多层次布鲁姆过滤器算法。可应用于数据集中数据成员检测,以及广泛应用于数据库、网络和分布式系统中。

其具体的实施可以归纳为一个预备步骤和三个实施步骤:

预备步骤:预先在树形布鲁姆过滤器(TBF)存储数据集。

预先在树形布鲁姆过滤器(TBF)存储一定规模或者具有相应特性数据的数据集,用来作为数据成员查询时的规则依据,当新的数据集中需要对数据成员进行查询时,通过TBF的查询算法查询已经存储在其中作为规则依据的数据集,从而得到得到相应的查询结果。

步骤1:读入需要查询或者需要进行更新操作的数据集。

首先读入需要查询的数据集或者需要进行更新操作的数据集,这样才能对已经存储在其中的依据数据集进行查询,或者对已经存储在其中的依据数据集进行插入、删除等更新操作。

步骤2:对读入的数据集进行相应操作。

数据集读入之后,逐一对数据集中的成员进行查询、更新操作,相应的操作根据TBF的数据结构可以分成三个部分:第一层布鲁姆过滤器的操作;中间层布鲁姆过滤器的操作;最顶层计数布鲁姆过滤器的操作。

在第一层布鲁姆过滤器中数据集成员经过k个哈希函数中的任意一个或多个哈希后插入布鲁姆过滤器中,我们需要通过同样的哈希函数找到第一层布鲁姆过滤器中元素的正确位置u1[h(a)](L=1),然后需要找到在树形结构中相应的叶子结点并且返回相应的查询结果。根据得到的哈希值求模得到第一层置“1”的比特位在下一层叶子结点应该置“1”的位置,同时通过对第一层置“1”的比特位之前已经置“1”进行计数得到叶子结点在下一层叶子结点中的插入位置,在中间层布鲁姆过滤器中根据得到的索引数据,查询或者更新相应位置的叶子结点。在最终层则是根据该层上一层相应比特位之前已经置“1”的比特位的个数找到最后一层中的相应计数器,计数器用于更新操作进行计数。通过这样的逻辑索引和更新方法,能够迅速、有效的查找到相应的比特位,完成对输入数据集所包含数据成员的确认,或者通过相应的插入和删除算法,可以完成对原始数据集存储数据的更新。

步骤3:输出查询和更新结果。

输出结果可以根据个人需要设置相关参数,本发明应用时的输出结果包括需要查询的数据集成员、数据集成员匹配个数以及检索所用的时间或者是需要更新的数据集成员、更新所用的时间。

由上可知,本发明是多层次的布鲁姆过滤器算法的创新算法,它主要用于数据集成员的动态查询,能够实现计数布鲁姆过滤器同样的功能如支持数据成员信息的动态更新、有效改善数据溢出状况等等,而且在空间结构上比计数布鲁姆过滤器更加高效。它是基于BloomingTree算法的优化,改进了BloomingTree算法在逻辑索引结构方面以及在时间效率方面的缺陷。同时,通过实验验证了树形布鲁姆过滤器算法与BloomingTree算法相比在时间上的高效性,它可以大大减少误判发生的机率,降低了查询、插入和删除操作所需的时间,增强布鲁姆过滤器的可扩展性,为网络数据存储和数据集成员查询提供保障。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号