美文网首页
NoveLSM调研报告

NoveLSM调研报告

作者: 贺大伟 | 来源:发表于2018-10-12 17:52 被阅读149次

    抽时间调研了一下NoveLSM,总结如下:

    NoveLSM核心就是利用Nonvolatile Memory设备解决LSM面临的核心问题:写放大以及写放大的带来的操作的 latency 上升。

    NoveLSM解决思路包括如下几个方面(其中一部分是解决老问题引入新问题以及解决办法)。

    1. 减少memtable到SST的序列化反序列化开销。

    NoveLSM团队直接开发了基于NVM的可持久化的skip list,因此从memtable到NVM避免了序列化和反序列化。

    2. 减少 Compaction 的开销

    compaction开销是导致写延迟的罪魁祸首,NoveLSM的做法是发现compaction来不及的时候,memtable的数据直接写入NVM中,因为NVM相比内存要大很多,这要本质上是增加了一层持久化缓存,这样也引入新问题,本来LSM的架构是memtable+SST,现在变成了memtable+NVM table+SST。因此read的流程就要响应的调整。

    3. 减少 Logging 的开销

    LSM的memtable一般都需要WAL用于recover,对于NVM本身就是非易失设备,可以免去WAL。相应的recover的时候,对于NVM table,直接把这个当作WAL看待就可以了。

    补充一点,就是增大memtable主要是为了提升写的性能,降低compaction的影响,但是也带来了recover的耗时比较长的问题,同时内存资源也比较宝贵,因此综合起来logging开销不可忽视。

    4. 支持并发读取

    NoveLSM引入NVM减少compaction,带来了LSM层级的增加,导致原来的read流程的延时会进一步增加,因此NoveLSM采用并发读取的方式降低read的延时,这样 read latency 从通常的T-MemDRAM + T-MemNVM + T-Imm + T-SST变成了max(T-MemDRAM + T-MemNVM, T-Imm, T-SST)。

    T-MemDRAMT-MemNVM是 DRAM 和 NVM memtable 的时间开销。

    T-Imm则是 immutable memtable 的开销。

    T-SST 就是 SST 的开销。

    在read的正确性方面,NoveLSM通过增加一些约束来保证。

    a. 在上一层的结果未返回之前,下一层的结果不能作为最终结果。

    b. 如果某一层返回了结果,那么之后层级的结果忽略,即不会等待后面层级的结果。

    优化之后的效果还是比较明显。论文中贴出了对比测试数据

    相关文章

      网友评论

          本文标题:NoveLSM调研报告

          本文链接:https://www.haomeiwen.com/subject/ypvgaftx.html