SLM-DB: Single-Level Key-Value Store with Persistent Memory(FAST 19)

(一)研究目标

结合B+Tree利用PM对LSM-Tree进行优化。

(二)研究背景

在这里插入图片描述
LevelDB 存在的问题:较低的读性能和严重的读写放大。
Slow read operations
一个读操作至少需要两次块读取,一次读索引块,另一次读数据块
先搜索内存中的MemTable和Imutable Table,找不到则在磁盘上的每一个 Level 上根据SSTable的开始key进行二分查找,定位数据所在的SSTable,然后对 SSTable File 中存储的数据索引再次进行二分查找,找到对应的数据块。为了避免不必要的块读取和减少搜索成本,LevelDB对每个块使用Bloom过滤器

High write and read amplification
写放大:

  • 维护垂直的多级有序数据结构 SSTables 来保证顺序写
  • 需要在不同的层级之间进行归并排序操作,同时需要常常进行数据压缩(Compaction)
    读放大:
  • 由于 LSM 树的原因,读数据时往往需要在多个层级进行检索
  • 不仅需要读取该 Key 所对应的数据所在的数据块,还要读取对应的索引块和 Bloom Filter 块,索引块和 Bloom Filter块的数据和可能比 KV 本身大得多

(三)研究概述

使用 PM 进行缓冲写入,省略了 WAL 的写开销,采用单层的 LSM 结构来减小写放大问题带来的影响。利用 PM 的特性维护 B+ Tree 作为索引,加速数据的检索。
在这里插入图片描述

(四)关键技术

Persist

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值