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的查询操作因布隆过滤器的误报而带来的硬盘输入/输 ...
【技术保护点】
一种基于分层分配的多层数据库的布隆过滤器构造方法,其特征在于包括以下步骤:第一步:设计建立存储结构,并进行相应的初始化定义如下标识符表示相应的存储结构: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,发生误报的概率为第一步定 ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。