The Log Structured Merge Trees (LSM-tree) based key-value stores are widely used in many storage systems to support a variety of operations such as updates, point reads, and range reads. Traditionally, LSM-tree's merge policy organizes data into multiple levels of exponentially increasing capacity to support high-speed writes. However, we contend that the traditional merge policies are not optimized for reads. In this work, we present Autumn, a scalable and read optimized LSM-tree based key-value stores with minimal point and range read cost. The key idea in improving the read performance is to dynamically adjust the capacity ratio between two adjacent levels as more data are stored. As a result, smaller levels gradually increase their capacities and merge more often. In particular, the point and range read cost improves from the previous best known $O(logN)$ complexity to $O(\sqrt{logN})$ in Autumn by applying the novel Garnering merge policy. While Garnering merge policy optimizes for both point reads and range reads, it maintains high performance for updates. Moreover, to further improve the update costs, Autumn uses a small amount of bounded space of DRAM to pin/keep the first level of LSM-tree. We implemented Autumn on top of LevelDB and experimentally showcases the gain in performance for real world workloads.
翻译:基于日志结构合并树(LSM-tree)的键值存储被广泛应用于多种存储系统中,以支持更新、点读和范围读等多种操作。传统上,LSM-tree的合并策略将数据组织成容量指数级递增的多层结构以支持高速写入。然而,我们认为传统合并策略未对读取操作进行优化。本文提出Autumn,一种基于LSM-tree的可扩展读优化键值存储,其点读和范围读成本达到最小化。提升读取性能的核心思想是随着存储数据量的增加,动态调整相邻两层之间的容量比率。这使得较小层级的容量逐渐增大并更频繁地执行合并。特别地,通过采用新颖的Garnering合并策略,Autumn将点读和范围读的成本从先前已知最佳的$O(logN)$复杂度提升至$O(\sqrt{logN})$。Garnering合并策略在优化点读与范围读的同时,仍保持高性能的更新操作。此外,为进一步改善更新成本,Autumn使用少量有限容量的DRAM空间来固定/保持LSM-tree的第一层级。我们在LevelDB基础上实现了Autumn,并通过实验展示了其在真实工作负载下的性能提升。