Litcius/Paper detail

FenceKV: Enabling Efficient Range Query for Key-Value Separation

Chenlei Tang, Jiguang Wan, Changsheng Xie

2022IEEE Transactions on Parallel and Distributed Systems38 citationsDOI

Abstract

LSM-tree is widely used in key-value stores for big data storage, but it suffers from write amplification brought by frequent compaction operations. An effective solution for this problem is key-value separation, which decouples values from the LSM-tree and stores them in a separate value log. However, existing key-value separation schemes achieve poor range query performance, especially for small key-value pairs, because they focus on mitigating write amplification but neglect access characteristics of the SSD. In this article, we propose FenceKV, which aims to achieve better range query performance while maintaining reasonable update performance for update-intensive workloads. FenceKV employs a new partition method to map values to the storage space based on the key-range to achieve efficient update and range query. Moreover, it adopts a key-range garbage collection policy to mitigate the garbage collection overhead and maintain sequential access for range queries. We compare FenceKV with modern key-value stores with various workloads, and results show that FenceKV can improve the range query performance significantly, while maintaining reasonable update performance compared to the existing designs of key-value separation.

Topics & Concepts

Computer scienceAssociative arrayRange query (database)Garbage collectionKey (lock)Overhead (engineering)Range (aeronautics)Tree (set theory)Partition (number theory)Distributed computingDatabaseData miningComputer networkGarbageInformation retrievalOperating systemWeb search querySearch engineSargableCombinatoricsMaterials scienceArtificial intelligenceMathematicsComposite materialMathematical analysisProgramming languageAdvanced Data Storage TechnologiesCaching and Content DeliveryCloud Computing and Resource Management
FenceKV: Enabling Efficient Range Query for Key-Value Separation | Litcius