[发明专利]一种键值数据库内布隆过滤器的配置方法有效
申请号: | 201711042747.3 | 申请日: | 2017-11-17 |
公开(公告)号: | CN107729535B | 公开(公告)日: | 2020-01-03 |
发明(设计)人: | 李永坤;张月明;张伟韬;吕敏;许胤龙 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06F16/172 | 分类号: | G06F16/172;G06F16/2455 |
代理公司: | 34101 安徽省合肥新安专利代理有限责任公司 | 代理人: | 汪祥虬 |
地址: | 230026 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 键值 数据 库内 过滤器 配置 方法 | ||
1.一种键值存储系统内布隆过滤器的配置方法,其特征在于包括以下步骤:
第一步:设置布隆过滤器相关参数
首先选定一个数据块的空间大小S KB,然后根据选定的数据块大小测试系统硬盘性能,按如下标准选取块大小:键值存储系统内使用内部有序的文件存储键值对,每个文件对应一个布隆过滤器,选取的块大小与一个布隆过滤器的空间大小范围相同,其中S的范围是4~16KB;指定文件的大小为T KB,以(S+T)KB大小的数据块为起始点,每次在原来的块大小基础上增加S KB,块大小最大为(64+T)KB,每次测试系统写一个块所耗费的时间,组成时间向量根据不同块大小之间的时间差异,选取与起始点时间差异小于指定时间差Δt微秒的最大块大小Smax KB,其中T为正整数,Δt为正整数;然后用N表示存储有序键值对的文件数目N,以下简称“文件”,每个文件用i进行唯一标识;接下来指定文件所对应的布隆过滤器个数J,每个布隆过滤器对应唯一的身份标识符j,即按序从1到J对布隆过滤器进行标号,指定每个布隆过滤器内分配给每个键的比特位数bi,j,其中N为正整数,i的范围是1~N,J的范围是bi,j的范围是2~32,且并令向量即每个文件对应一组布隆过滤器,且组内每个过滤器分配给键的比特位数之和最大为32;最后指定键值存储系统内每个键平均可分配到的布隆过滤器比特位B,布隆过滤器可用内存资源M=B*N,其中B的范围是2~32;
第二步:生成适应性布隆过滤器
生成布隆过滤器在键值存储系统生成新文件时,键值存储系统使用两种方式生成新的文件,一种为轻量级合并,另一种为主合并,在上述两种方式的合并过程中,根据第一步中指定的布隆过滤器个数J,使用J个线程,每个线程由文件中包含的键配合哈希函数生成1个布隆过滤器,同时保证生成每个布隆过滤器使用的哈希函数相互独立;然后根据布隆过滤器的大小与文件当前的已写入偏移,确定每个布隆过滤器应写入的文件偏移和数据量,把J个布隆过滤器写往文件的元数据区;若硬盘为固态硬盘,则继续采用J个线程,把J个布隆过滤器同时写往硬盘;
第三步:多级缓存队列初始化
通过多级缓存队列对文件的元数据进行维护,多级缓存队列由多个链表和若干系统参数构成,链表上每一个结点元素对应一个文件的元数据,每个链表的结构采用最近最少使用算法进行维护;
首先指定系统中多级缓存队列中链表的个数,用Q+1表示,并依次按照0~Q对链表进行标号,其中Q的值等于J;初始状态下,所有文件元数据都由一个普通链表维护,称这个链表为“较少访问”链表,标号为0;
其他系统参数包括:系统当前总访问频率A、多级缓存队列中链表最大标号Q、文件元数据的有效访问间隔V,即对同一文件元数据的两次访问中间间隔的最大次数和布隆过滤器当前内存资源总体使用量m;其中,A为正整数,初始值为0,V的范围为10~100,布隆过滤器当前内存资源总体使用量m初始化为0;
而与文件一一对应的文件元数据包括:文件身份标识符i、文件大小、文件访问频率fi、若干布隆过滤器、布隆过滤器到期时间E和当前布隆过滤器个数Ci;其中,文件访问频率fi与布隆过滤器个数Ci的初始值都为0;
第四步:多级缓存队列调整策略设置步骤
在键值存储系统开始运行后,文件访问频率fi与当前布隆过滤器个数Ci由多级缓存队列参数的调整策略设置,布隆过滤器到期时间E则在每次调整时设为当前总访问频率A与有效访问间隔V之和,
多级缓存队列调整策略的时机为每次访问文件元数据时,当发生文件元数据访问时,先在多级队列中找到文件元数据所处的链表位置,接着把该文件元数据的访问频率fi与系统当前总访问频率A都加1,然后设置布隆过滤器到期时间E=A+V,最后把该文件元数据移到所处链表的尾部,并对文件元数据包含的布隆过滤器进行调整;
具体的调整策略由当前内存资源使用量决定,当前内存资源使用量分为两种:第一种为当前布隆过滤器内存资源使用量m远小于可用内存资源M,第二种为当前布隆过滤器内存资源使用量m接近甚至超过可用内存资源M;当处于第一种情况时,根据指定函数QueueNum,以文件访问频率fi为参数,求得文件元数据应维护的布隆过滤器个数,若当前维护的布隆过滤器个数Ci少于QueueNum(fi)时,则以硬盘上的文件中第Ci+1个布隆过滤器为起始,读取QueueNum(fi)-Ci个布隆过滤器,加载入内存,并入文件的元数据,根据新加入的布隆过滤器的内存资源占用bi,j,令m的值增加令Ci=QueueNum(fi),并把文件元数据移入标号为QueueNum(fi)的链表尾部,当处于第二种情况时,在增加某些访问频率较高文件对应的元数据中布隆过滤器个数的同时,也会减少某些访问频率较低文件对应的布隆过滤器个数,减少的方法分为两个阶段:
阶段一的操作从标号为Q的链表开始,标号为1的链表结束,从高到低的检查链表的表头元素,判断A是否大于表头元素中E的值,若大于,则把表头元素移入低一级链表的表尾,释放元数据中第Ci个布隆过滤器占用的内存资源,使m的值减少并令E=A+V;而若不大于,则进入低一级链表继续检查,
执行完阶段一的操作后,若m的值仍然大于M,则从标号为1的链表开始到标号为Q的链表为止,从每个链表的表头元素开始,对每个链表元素对应的文件元数据进行类似于阶段一的减少一个布隆过滤器的操作,直到m的值小于M;
其中QueueNum函数如下:
QueueNum函数中Base参数为正整数;
第五步:查询策略调整步骤
每个文件元数据中可能包含多个布隆过滤器;在进行查询操作时,向文件元数据包含的所有布隆过滤器都发出判断请求,每个布隆过滤器返回一个键是否存在于本文件中的响应,若任何一个布隆过滤器报告键值对不存在于本文件中,即认为键值对确实不在该文件当中,而只有当所有布隆过滤器都报告键值对存在于本文件中,才能认为键值对可能存在于该文件当中,并发出一次对该文件的硬盘输入/输出请求。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711042747.3/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置