Log-Structured Merge-trees (LSM-trees) have been widely used in modern NoSQL systems. Due to their out-of-place update design, LSM-trees have introduced memory walls among the memory components of multiple LSM-trees and between the write memory and the buffer cache. Optimal memory allocation among these regions is non-trivial because it is highly workload-dependent. Existing LSM-tree implementations instead adopt static memory allocation schemes due to their simplicity and robustness, sacrificing performance. In this paper, we attempt to break down these memory walls in LSM-based storage systems. We first present a memory management architecture that enables adaptive memory management. We then present a partitioned memory component structure with new flush policies that better exploits the write memory to minimize the write cost. To break down the memory wall between the write memory and the buffer cache, we further introduce a memory tuner that tunes the memory allocation between these two regions. We have conducted extensive experiments in the context of Apache AsterixDB using the YCSB and TPC-C benchmarks and we present the results here.
翻译:在现代的NOSQL系统中广泛使用有逻辑结构的合并树(LSM树),由于这些树的更新设计离地设计,LSM树在多个LSM树的记忆组件中以及在写存储器和缓冲缓冲缓存之间引入了记忆墙。这些地区之间的最佳记忆分配是非三边性的,因为它高度依赖工作量。现有的LSM树实施采用静态的记忆分配计划,因为它们的简单性和稳健性,牺牲了性能。在本文中,我们试图在基于LSM的存储系统中打破这些记忆墙。我们首先展示了能够适应性记忆管理的记忆管理结构。我们随后展示了一种分隔式的记忆组件结构,配有新的冲水政策,更好地利用写存储器来尽量减少写成本。为了打破写存储器和缓冲缓冲缓存之间的记忆墙,我们进一步引入一个调和这两个区域之间记忆分配的记忆调和调。我们利用YCSB和TP-C基准在Apache AsterixD中进行了广泛的实验。我们在这里展示了结果。