当前位置: 首页 > 专利查询>湖南大学专利>正文

一种基于Bloom Filter的键值对存储结构及方法技术

技术编号:13183731 阅读:45 留言:0更新日期:2016-05-11 15:18
本发明专利技术公开了一种基于Bloom Filter的键值对存储结构及方法,存储结构包括k个不相同的哈希函数和m个用于存储value的存储单元;所述m个存储单元被分配成k个不同的块,每个块有m/k个单元;每一个单元带有L层,每一层有B个比特位。本发明专利技术在数据库交互查询、高速网络中资源定位、计算机网络监控等产生大量数据、需要进行键值对查询的应用领域,可以大大减少集合查询的时间,降低资源消耗。

【技术实现步骤摘要】

本专利技术涉及计算机网络领域和计算机系统存储领域,特别是特别是高性能、高吞 吐量的交互查询的应用领域,具体是。
技术介绍
近年来,随着计算机的飞速发展,数据库,网络和其他应用中的集合规模呈几何增 长。存储和查询键值(key,Value)对是计算机系统中常见的任务,这就需要设计对应的键值 对存储数据结构支持快速的键值对查询。键值对操作经常出现在网络和存储系统中,如 key-value数据库MongoDB,CouchDB。每个放入到键值对存储系统中的唯一键(key)都对应 一个value,例如(3,5)是一个键key为3,值value为5的键值对,将(3,5)存储到键值对存储 系统后,可以通过查询键(key)为3,得到值(value)为5。 键值对操作通常包含下面四种操作:1、Query(key):对于指定键(key),查找对应 的值(value) JUnseri^key,value):将(key,value)键值对存入对应的键值对存储系统 中。3、〇616七6(1^7,¥31116) :在对应的键值对存储系统中删除对应的键值对(1^7,¥31116)。4、 Update(key,newValue):将key对应的键值由 value改为newValue。 设计一个高效的键值对存储结构带来了很大挑战。如,在传统计算机网络中,使用 〈源IP,目的IP,源端口,目的端口,协议号〉一共104比特的5元组来标识一条流,每一条TCP 流都会有对应的状态,如果将流的5元组作为键值对的key,将TCP流对应的状态作为value 组成键值对(key,value)。如果采用线性结构进行网络流状态存储,并且直接将(key和 value)作为元组直接存入。存储key(对应104个bit)需要大量的空间,而且在查找对应key 的value的时候会消耗大量的时间,因此在高速计算机网络中,如何高效的存储这些信息, 快速的查询对应流(key)的状态(value)成为挑战。 Bloom Filter是一种能够表示集合、支持集合查询的简洁数据结构,它能够有效 的表示数据集合。Bloom Filter结构实质是将集合中元素通过k个哈希函数映射到位向量 中。Bloom Filter在达到其高效表示集合的同时,进行元素查询时却存在一定的假阳性错 误,而不存在假阴性错误。虽然Bloom Filter结构在元素查询时存在少量错误,但是由于它 对存储空间的高效性,使得该数据结构自1970年由B. Bloom提出以来得到了比较广泛的应 用。但是传统的Bloom Filter仅仅只能支持元素是否存在与否的从属查询。如果元素 为key,那么只能支持key存在与否的从属查询,而无法支持(key,value)操作。因为bloom f i 1 ter无法直接存储value,因此并不能支持键值对的上述四种操作。要使得Bloom Fi Iter 支持键值对的基本操作,必须要改进传统的Bloom Filter,设计新的Bloom filter结构,使 得Bloom Filter能够支持键值对的基本操作。
技术实现思路
本专利技术所要解决的技术问题是,针对现有技术不足,提供一种基于Bloom Filter 的键值对存储结构及方法,大大减少集合查询的时间,降低资源消耗。为解决上述技术问题,本专利技术所采用的技术方案是:一种基于Bloom Filter的键 值对存储结构,包括k个不相同的哈希函数和m个用于存储value的存储单元(哈希函数用来 映射到存储单元中的位置);所述m个存储单元被分配成k个不同的块,每个块有m/k个单元; 每一个单元带有L层,每一层有B个比特位(后文中简称为statusbf)。 本专利技术还提供了一种利用上述结构实现键值对操作的方法,包括步骤: 1)当要插入一个键值对(key, value)时,将value进行编码,编码后表示为 V0V1V2……Vb-1;其中Vi表示编码后的第i位,0 < i <B;接着对key使用k个哈希函数hih〗…… 111<,确定1^个不同的位置11()(1^7)111(1^7)......hk-i(key),然后对这k个不同位置的单元进行加 操作,将value值插入;对于每个单元的第一个位Cf,将输入的value编码后对应的比特位Vj 作为对应位的输入,〇<j<B;对于其它层Cf - 一 Cf,使用该层的上一层g…的 进位位作为该层的输入,每一层的每一个位Cf:最终结果等于当前层每一个位C|的本位和; 2 )当要删除一个键值对(key,value )时,将value进行编码,编码后表示为 V0V1V2……Vb-1;其中Vi表示编码后的第i位,0 < i <B;接着对key使用k个哈希函数hih〗…… hk,确定k个不同的位置ho (key )hi (key)......hk-i (key),然后对这k个不同位置的单元进行减 操作,将value值删除;对于每个单元的第一个位Cf,将输入的value编码后对应的比特位Vj 作为对应位的输入,〇 < j<B;对于其它层Cf 使用该层的上一层的 进位位作为该层的输入,每一层的每一个位最终结果等于当前层每一个位C|的本位差; 3)要查询一个键值key时,对k个不同位置ho (key )hi( key)......hk-i(key)的单元进 行查询操作,对于k个位置的每个单元,对每一个位Si的每一层进行或操作,即然后通过所有位得到第k个单元查询结果1'1 = &&…… i<k;最终查询结果Q等于每个单位的与操作,即QiTiAL……ΛΤκ; 4)要将一个键值为key更新为newValue时,首先查询键值为key的value,然后重复 步骤2),删除(key,newValue),最后重复步骤1),插入(key,newValue) 〇 与现有技术相比,本专利技术所具有的有益效果为:本专利技术在数据库交互查询、高速网 络中资源定位、计算机网络监控等产生大量数据、需要进行键值对查询的应用领域,可以大 大减少集合查询的时间,降低资源消耗。【附图说明】图1是改进的键值对Bloom Filter结构,其中m表示所有单元的个数,k表示哈希函 数的个数,L表示每个单元的层数,B表示数据的位数。图2是插入操作示意图。:表示的是第i个块,第j个单元的第P层在进行 插入前的值,表示的是第i个块,第j个单元的第P层在进行插入后的值,:表示的是第i个块,第j个单元的第P层的进位位。对于每一层,类似于加法器我们 有:图3是删除操作示意图(表示的是第i个块,第j个单元的第P层在进行 删除前的值,:表示的是第i个块,第j个单元的第P层在进行删除后的值,:表示的是第i个块,第j个单元的第P层的借位位。对于每一层,类似于减法器我们 有: 图4(a)、图4(b)、图4(c)是插入操作示意图,分别插入键值对(fl,0001),(f2, 0010),(f3,0001),图4(d)、图4(f)是查询操作示意图,分别查询键值为Π ,f3的值,图4(e) 是删除操作示意图删除(Π ,〇〇〇1)。 图5实施环境数据详细信息,包含数据来源,数据时间,包大小,最大并本文档来自技高网
...

【技术保护点】
一种基于Bloom Filter的键值对存储结构,其特征在于,包括k个不相同的哈希函数和m个用于存储value的存储单元;所述m个存储单元被分配成k个不同的块,每个块有m/k个单元;每一个单元带有L层,每一层有B个比特位。

【技术特征摘要】

【专利技术属性】
技术研发人员:谢鲲施文文吉刚张广兴谢高岗
申请(专利权)人:湖南大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1