为LSM-tree重新启用高速缓存
数据结构与算法
2016-06-08 v1 数据库
摘要
LSM-tree已被Google、Facebook和Amazon广泛应用于云计算系统,以实现写密集工作负载的高性能。然而,在LSM-tree中,随机键值查询可能因压缩(算法中的基本操作)对缓存的干扰而经历长延迟和低吞吐量。LSM-tree依赖频繁的压缩操作将数据合并为有序结构。压缩后,原始数据被重新组织并写入磁盘其他位置。结果,缓存数据因其引用地址改变而失效,导致严重的性能下降。我们提出dLSM,以便在密集写入期间重新启用高速缓存。dLSM是一种在磁盘上带有压缩缓冲区的LSM-tree,充当缓冲垫以最小化压缩引起的缓存失效。压缩缓冲区维护频繁压缩数据的一系列快照,这些快照表示底层LSM-tree中相应数据的一致视图。由于更新速率远低于压缩,压缩缓冲区中的数据几乎静止。在dLSM中,对象通过相应块的磁盘地址引用,该块要么位于频繁压缩数据的压缩缓冲区中,要么位于不频繁压缩数据的底层LSM-tree中。因此,热对象可有效保留在缓存中而无有害失效。借助小型磁盘上压缩缓冲区,dLSM通过启用有效缓存实现了高查询性能,同时保留了LSM-tree用于写密集数据处理的全部优点。我们基于LevelDB实现了dLSM。我们的评估显示,在标准DRAM缓存下,dLSM在HDD存储上可比具有相同缓存的LSM-tree实现5–8倍的性能提升。
引用
@article{arxiv.1606.02015,
title = {Re-enabling high-speed caching for LSM-trees},
author = {Lei Guo and Dejun Teng and Rubao Lee and Feng Chen and Siyuan Ma and Xiaodong Zhang},
journal= {arXiv preprint arXiv:1606.02015},
year = {2016}
}