论文阅读(7):flamedb

flamedb:a key-value store with grouped level structure and heterogeneous bloom filter

2018 WEI TAO ZHANG 中国科技大学

本文主要工作:

  • 提出了grouped level structure数据结构减少写放大,
  • group之间的数据无序,为了弥补读性能,提出了heterogeneous bloomfilter。
  • 实现了flamedb原型,但没找到开源代码

grouped level structure

在这里插入图片描述

  • 设计:component ci被分成m个group,m=max(|ci+1|)/max(|ci|).并且|ci|代表ci包括的kv对数量。
  • 基本概念就像上面图片里的原文讲的,在ci向ci+1层compact过程中,因为ci所有kv对数量,正好是ci+1层的一个group的kv对数量。将ci层所有kv对排序,合并成ci+1的一个group。所以ci+1层group内部有序,但group间是无序的。
  • 这样必然增加读复杂性,这是通过本文提出的异构布隆过滤器解决的,简单讲就是,因为上层component访问频率更高,所以给他们分配更大的bits-per-key。可以减少误判率,从而提高读性能。

性能分析

本文有两段关于写放大和读性能的数学分析,单独摘出来看看

在这里插入图片描述

上面是讲,LSMtree写放大主要包括两部分,ci中的kv写到ci这种不会下沉的compact和所有kv都要最后下沉到ct的compact。
而flamedb对此做出的优化就是,分了group之后,因为ci下沉到ci+1时,不需要把ci+1的group都读出来再整体排序,所以减少了第一部分的写放大,即最后的计算公式,只有第二部分,所有kv下沉到ct的开销。

在这里插入图片描述

这部分是LSMtree的读放大分析,i代表key在不同的层,pi为kv在不同层的概率,文中是按照size占整体权重来计算的。f为bf的false positive概率。

在这里插入图片描述

这个结果是GLS的读放大公式,gk代表第k层的group数量,在0-m之间。同样,gij的概率大小也是kv 数量占整体得比重。

在这里插入图片描述
在如上的测试参数下,LSM和GLS的读放大对比结果如下:
在这里插入图片描述

总结

一开始会觉得,group之间无序应该对读性能的影响很严重,本文说是通过异构布隆过滤器来减轻这种影响,但同构布隆过滤器9.6bit时,误判率也只有1%,与0.819%其实差别不大。还有些不明白的地方之后要再考虑
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值