LSM Tree 底层设计理念

  • 场景:设计一个海量读写的的kv数据库,优先保证写入速度,但是读取速度也不能很慢
    • 因为海量数据存储,不能使用内存,得存到文件里。
  • Q:对已经落盘的文件,怎么根据key修改value
    • A:读取文件找到指定的key,修改指定的值
  • Q:需要随机磁盘io,磁头、磁道、扇区三者合一,然后进行io操作,慢
    • A:追加写:不找之前的了,直接写新的key-value(顺序io),新的key代替老的key
  • Q:查询的时候一个key对应多个value,还需要排序过滤,慢
    • A:异步compaction:新建一个文件(SSTable)接受新的写入数据,写到一定数量后关闭,然后创建一个新的SSTable,对关闭的SSTable进行异步的合并,根据key+版本删除旧版本数据
  • Q:文件中检索指定的key 有什么方案
    • A:同一个SSTable中,key按顺序排列
    • A:创建若干索引文件
    • A:每个SSTable,记录其 kmax,kmin
    • A:对SSTable切分,分出若干segement并记录kmax,kmin
    • A:每个segement添加一个bloomfilter,用于快速过滤
  • Q:为了key在SSTable中按序排列,那写SST
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值