一种基于分层分配的多层数据库的布隆过滤器构造方法技术

技术编号:15691051 阅读:100 留言:0更新日期:2017-06-24 03:56
本发明专利技术公开了一种基于分层分配的多层数据库的布隆过滤器构造方法,特征是包括设计建立存储结构、计算组合概率和、求解得分配给每层布隆过滤器的位数、维护存储结构;在进行合并操作时,使处于多层键值数据库(LevelDB)的高层的每个键分配到更多的布隆过滤器比特位数,低层的键分配到较少的布隆过滤器比特位数,其中布隆过滤器的误报率随着比特位数的增多而降低。与LevelDB传统的布隆过滤器构造方法相比,在保证内存开销与之前一致的情况下,本方法可以减少因布隆过滤器的误报带来的硬盘输入输出(I/O)操作,降低硬盘的I/O次数,减少LevelDB查询操作的平均延迟;也可以在保证查询时的期望硬盘I/O次数与传统方法基本相等的情况下,减少布隆过滤器带来的内存开销。

A method of constructing multi-layer bloom filter based on hierarchical distribution database

The invention discloses a method for constructing multi-layer bloom filter based on hierarchical distribution database, includes the establishment of storage structure, design calculation, and combined probability is assigned to each number, maintenance of storage structure layer bloom filter; in the merge operation, so that in the multi key database (LevelDB) of each key distribution the top to bloom filter more bits, bloom filter bits in the lower keys assigned to less, the bloom filter to reduce the false alarm rate with the increase in the number of bits. Compared with the traditional LevelDB bloom filter construction method, to ensure the memory overhead and before the same situation, this method can reduce the disk input and output caused by Bloom filter false positives (I/O) operation, reducing the disk number of I/O, reduce the average delay of LevelDB query operation; also can guarantee equal query expectations the number of disk I/O and traditional method under the condition of reducing the memory overhead brought by bloom filter.

【技术实现步骤摘要】
一种基于分层分配的多层数据库的布隆过滤器构造方法
本专利技术属于计算机数据存储
,具体涉及对采用日志合并树作为主体的多层键值数据库系统的布隆过滤器的比特位数进行分层分配的布隆过滤器构造方法。
技术介绍
美国计算机协会出版的《1970年ACMCACM国际期刊》(CommunicationsoftheACM1970年7月第13卷,问题7,第422-426页)所介绍的布隆过滤器(Space/timetrade-offsinhashcodingwithallowableerrors)是一个空间效率极其高效,用来检测一个元素是否存在与一个集合中的概率数据结构。由谷歌公司开源的部署在硬盘上的基于日志合并树的多层键值数据库系统(LevelDB)在实现和使用布隆过滤器技术时,为每一层存储键值对的文件(SSTable)中的每一个数据块都建立了一个布隆过滤器。自LevelDB1.4版本发行以来,对每层存储键值对的文件的每个数据块的布隆过滤器构造方式都采用每个键分配相同比特位数的方式。这种方法没有考虑到LevelDB每层的键的区间大致相同,因此可能会造成高层的文件访问频率相对于低层较高,布隆过滤器的误报次数也随之增多,从而因为布隆过滤器的误报产生额外的硬盘I/O操作的问题,延长了查询操作的平均延迟,降低了系统的整体性能。
技术实现思路
本专利技术的目的是提出一种基于分层分配的多层数据库的布隆过滤器构造方法,以弥补现有每层中每个文件内的每个键分配固定比特位数的缺陷,在保证布隆过滤器存储空间开销与之前一致的前提下,减少LevelDB的查询操作因布隆过滤器的误报而带来的硬盘输入/输出(I/O)操作,提高LevelDB的查询操作速度,或者在保证LevelDB布隆过滤器整体的误报率与之前基本不变的情况下,减少存储空间即内存的开销。本专利技术基于分层分配的多层数据库的布隆过滤器构造方法,其特征在于包括以下步骤:第一步:设计建立存储结构,并进行相应的初始化定义如下标识符表示相应的存储结构:L--表示多层键值数据库LevelDB的层数,B--分配给每个键的平均布隆过滤器比特位数,Si—LevelDB第i,0<=i<L,层的存储空间大小,SL---LevelDB的总大小,R—LevelDB层间大小的增长倍数,Bi—给处于第i层的键分配的布隆过滤器比特位数,F(Bi)---在分配的比特位数是Bi的情况下,布隆过滤器的误报率,P—LevelDB的查询操作找到对应的键的可能性,SN—存储键值对的文件SSTable包含的键值对数目,T—存储键值对的文件SSTable的所占的存储空间的大小;根据硬盘上所部署的键值数据库系统对以上参数进行初始化;第二步:计算组合概率和对LevelDB的层数L进行L=L+4操作,即把第0层的4个文件作为前四层;设Pa<i,j>表示查询操作访问至第i层(包括第i层),LevelDB的布隆过滤器发生j次误报的组合概率和,其中在第k层,0<=k<L,发生误报的概率为第一步定义的F(Bk),即为0.618BK;计算出Pa<i,j>满足0<=i<L,1<=j<=(i+1)的所有情况;第三步:求解得分配给每层布隆过滤器的位数当对LevelDB进行查询操作时,所查询的键值对存在于数据库中的可能性为P,不存在于数据库的可能性为1-P;当键值对存在于数据库中时,至少有一次I/O是为了访问所需要查询的键值对,当布隆过滤器发生误报时,可能产生额外的I/O;而所查询的键值对位于第i层的可能性为若键值对不存在于数据库中时,则只可能因为布隆过滤器的误报产生额外的I/O次数;由此得出当LevelDB进行查询操作时硬盘I/O次数的期望值EX为:计算使用LevelDB原本的布隆过滤器构造方法时与基于分层分配的布隆过滤器构造方法的内存开销,其中,使用LevelDB原本的布隆过滤器构造方法的内存开销为分配给LevelDB每个键的布隆过滤器比特位数乘以键值对的数目的总和,即为使用基于分层分配的布隆过滤器构造方法的内存开销为分配给LevelDB每层的文件内的键的布隆过滤器比特位数乘以该层所包含的键值对的数目的总和,即为通过枚举分配给LevelDB每层的文件内的键的布隆过滤器比特位数Bi的值----文件内分给每个键的布隆过滤器比特位数相同都为Bi,其中i的区间为[0,L-1],Bi的区间为[1,32],都为整数,在保证LevelDB原本的布隆过滤器构造方法与基于分层分配的布隆过滤器构造方法的内存开销差值小于一个指定值的情况下,使得上述期望值EX最小;第四步:维护存储结构把LevelDB部署到主机硬盘上,当LevelDB进行合并(compaction)操作时,若新生成的SSTable文件将被压往第i层,则给新生成的文件分配比特位数为SN*Bi的布隆过滤器----即根据本次合并操作新生成的存储键值对的文件被压往的层,用第三步求得的Bi来构造相应的布隆过滤器。上述本专利技术基于分层分配的多层数据库的布隆过滤器构造方法包括了设计建立存储结构,计算组合概率和,求解得分配给每层布隆过滤器的位数和维护存储结构。现实生活中的键值存储的工作负载(workload)通常呈现出很强的随机性,导致LevelDB每层的键的区间大致相同,因此在查询过程中使得LevelDB的高层文件相对于低层文件访问频率较高。本专利技术采用分层分配布隆过滤器的比特位数的方法,在进行合并(compaction)操作时,使处于LevelDB的高层的每个键分配到更多的布隆过滤器比特位数,低层的键分配到较少的布隆过滤器比特位数,其中布隆过滤器的误报率随着比特位数的增多而降低。与LevelDB传统的布隆过滤器构造方法采取的每层的每个键比特位数相同的分配方法相比,在保证内存开销与之前一致的情况下,本方法克服了传统方法因查询过程中LevelDB高层文件的访问频率比低层文件高导致因高层文件的布隆过滤器误报产生的硬盘I/O次数也较多的缺点,带来了LevelDB布隆过滤器整体误报率降低的优点,从而减少了因为布隆过滤器的误报带来的硬盘输入/输出(I/O)操作,降低硬盘的I/O次数,减少LevelDB查询操作的平均延迟。本专利技术也可以在保证查询时的期望硬盘I/O次数与传统的方法基本相等的情况下,使LevelDB的低层布隆过滤器分配到较少的比特位数,与传统的每层中每个键比特位数相同的分配方法相比,减少布隆过滤器带来的内存开销,提高系统的整体性能。附图说明图1是LevelDB的每层的键的范围示意图。图2是LevelDB进行查询操作的示意图。图3是LevelDB合并(compaction)操作示意图。具体实施方式实施例1:下面结合附图通过具体实施例对本专利技术基于分层分配的布隆过滤器比特位数分配方法作进一步的详细说明。实施例1:本实施例基于分层分配的多层数据库的布隆过滤器构造方法,具体包括以下步骤。第一步:存储结构设计,并进行相应的初始化,采用:L--表示多层键值数据库LevelDB的层数,B--分配给每个键的平均布隆过滤器比特位数,Si—LevelDB第i,0<=i<L,层的存储空间大小,SL---LevelDB的总大小,R—LevelDB层间大小的增长倍数,Bi本文档来自技高网...
一种基于分层分配的多层数据库的布隆过滤器构造方法

【技术保护点】
一种基于分层分配的多层数据库的布隆过滤器构造方法,其特征在于包括以下步骤:第一步:设计建立存储结构,并进行相应的初始化定义如下标识符表示相应的存储结构:L‑‑表示多层键值数据库LevelDB的层数,B‑‑分配给每个键的平均布隆过滤器比特位数,Si—LevelDB第i,0<=i<L,层的存储空间大小,SL‑‑‑LevelDB的总大小,R—LevelDB层间大小的增长倍数,Bi—给处于第i层的键分配的布隆过滤器比特位数,F(Bi)‑‑‑在分配的比特位数是Bi的情况下,布隆过滤器的误报率,P—LevelDB的查询操作找到对应的键的可能性,SN—存储键值对的文件SSTable包含的键值对数目,T—存储键值对的文件SSTable的所占的存储空间的大小;根据硬盘上所部署的多层键值数据库系统对以上参数进行初始化;第二步:计算组合概率和对LevelDB的层数L进行L=L+4操作,即把第0层的4个文件作为前四层;设Pa<i,j>表示查询操作访问至第i层,包括第i层,LevelDB的布隆过滤器发生j次误报的组合概率和,其中在第k层,0<=k<L,发生误报的概率为第一步定义的F(Bk),即为0.618...

【技术特征摘要】
1.一种基于分层分配的多层数据库的布隆过滤器构造方法,其特征在于包括以下步骤:第一步:设计建立存储结构,并进行相应的初始化定义如下标识符表示相应的存储结构:L--表示多层键值数据库LevelDB的层数,B--分配给每个键的平均布隆过滤器比特位数,Si—LevelDB第i,0<=i<L,层的存储空间大小,SL---LevelDB的总大小,R—LevelDB层间大小的增长倍数,Bi—给处于第i层的键分配的布隆过滤器比特位数,F(Bi)---在分配的比特位数是Bi的情况下,布隆过滤器的误报率,P—LevelDB的查询操作找到对应的键的可能性,SN—存储键值对的文件SSTable包含的键值对数目,T—存储键值对的文件SSTable的所占的存储空间的大小;根据硬盘上所部署的多层键值数据库系统对以上参数进行初始化;第二步:计算组合概率和对LevelDB的层数L进行L=L+4操作,即把第0层的4个文件作为前四层;设Pa<i,j>表示查询操作访问至第i层,包括第i层,LevelDB的布隆过滤器发生j次误报的组合概率和,其中在第k层,0<=k<L,发生误报的概率为第一步定义的F(Bk),即为0.618BK;计算出Pa<i,j>满足0<=i<L,1<=j<=(i+1)的所有情况;第三步:求解得分配给每层布隆过滤器的位数当对LevelDB进行查询操作时,所查询的键值对存在于数据库中的可能性为P,不存在于数据库的可能性为1-P;当键值对存在于数据库中时,至少有一次I/O是为了访问所需要查询的键值对,当布隆过滤器发生误报时,可能产生额...

【专利技术属性】
技术研发人员:李永坤张月明张伟韬吕敏许胤龙
申请(专利权)人:中国科学技术大学
类型:发明
国别省市:安徽,34

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

1