0%

dlsm论文阅读

  • icde’23分离式内存中LSM树索引的应用

论文题目:dLSM: An LSM-Based Index for Memory Disaggregation

背景介绍

目前已有的一些在分离内存场景中的索引结构,比如基于B+树的sherman,基于ART的smart,以及基于学习索引的ROLEX,都取得了不错的实验效果。这篇文章同样的也是在分离内存场景中对LSM树索引进行优化。这篇文章主要做出了以下几个贡献:

  1. 首个把LSM树放在分离内存场景中的尝试。
  2. 减少了软件开销。
  3. 把LSM树的压缩操作放在了内存节点上进行,减少了数据传输。
  4. 使用了内存的字节寻址特性来改善性能。
  5. 针对RDMA操作进行了优化。

整体架构介绍

对于在分离内存场景下的LSM树,作者选择把memtable放在计算节点侧,把sstable放在内存结点侧来减少网络开销,此外在计算节点侧会保存LSM树的元数据信息,以及sstable的bloom过滤器。计算节点侧的后台线程和内存节点侧的线程通过RPC进行通信来进行sstable压缩操作。对于读操作,首先会访问计算节点侧的memtable以及immutable memtable,最后去访问内存结点中的sstable。

  1. 首先dlsm使用了双检查的锁机制解决了memtable和immutable切换的并发控制。
  2. 通过把sstable的元数据信息放在计算节点侧提升读性能,通过计算节点侧的后台线程和远程内存结点的后台线程之间的RPC通信完成压缩指令的请求与确认。
  3. 通过在计算节点侧缓存bloom过滤器和一个额外的kv索引(这能很好地利用内存的字节寻址特性)来加速查询操作。

测试

这里就贴了写操作的测试,可以看到dlsm确实有很好的插入性能,容易让我们想到和SMART相比,是否也有更明显的优势。其余的读写以及范围查询测试,dlsm都表现出了更好的效果。

总结

这篇文章填补了分离内存中LSM树的空白,帮助分离内存领域中写操作提供了更好的解决方案。