ISSN 1000-1239 CN 11-1777/TP

Journal of Computer Research and Development ›› 2018, Vol. 55 ›› Issue (9): 2038-2049.doi: 10.7544/issn1000-1239.2018.20180258

Special Issue: 2018新型存储系统结构前沿技术专题

Previous Articles     Next Articles

A Log-Structured Key-Value Store Based on Non-Volatile Memory

You Litong, Wang Zhenjie, Huang Linpeng   

  1. (Department of Computer Science and Engineering, Shanghai Jiao Tong University, Shanghai 200240)
  • Online:2018-09-01

Abstract: Non-volatile memory (NVM) technologies are promising that would change the future of storage. NVM possesses many attractive capabilities such as byte addressability, low access latency, and persistence. It provides a great opportunity for the integration of DRAM and NVM in a unified main storage space. NVM could access data through the memory bus and CPU related instructions, which makes it possible to design a fast and persistent storage system in non-volatile memory. Existing key-value stores proposed for block devices implement NVM as block devices, which conceal the performance that NVM provides. A few existing key-value stores for NVM fail to provide consistency when hardware supports (e.g., cache flush) on power failures are unavailable. In this paper, we present a non-volatile memory key-value storage system, named TinyKV, which utilizes the log structure as its core framework. We propose a static concurrent, cache-friendly Hash table implementation using the characteristics of the key-value workloads. TinyKV separates the maintenance for data log of each worker thread in order to guarantee high concurrency. In addition, we implement the log structure technology for memory management and design a multi-tier memory allocator to ensure consistency. To reduce write latency, we reduce writes to NVM and cache flushing instructions by using cache flushing instructions. Our experiments demonstrate that TinyKV outperforms traditional key-value stores in both throughput and scalability.

Key words: non-volatile memory (NVM), log structure, key-value store, Hash table, memory management

CLC Number: