Mercury: bringing efficiency to key-value stores

  • Authors:
  • Rohan Gandhi;Aayush Gupta;Anna Povzner;Wendy Belluomini;Tim Kaldewey

  • Affiliations:
  • Purdue University;IBM Research - Almaden;IBM Research - Almaden;IBM Research - Almaden;IBM Research - Almaden

  • Venue:
  • Proceedings of the 6th International Systems and Storage Conference
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

While the initial wave of in-memory key-value stores has been optimized for serving relatively fixed content to a very large number of users, an emerging class of enterprise-scale data analytics workloads focuses on capturing, analyzing, and reacting to data in real-time. At the same time, advances in network technologies are shifting the performance bottleneck from the network to the memory subsystem. To address these new trends, we present a bottom-up approach to building a high performance in-memory key-value store, Mercury, for both traditional, read-intensive as well as emerging workloads with high write-to-read ratio. Mercury's architecture is based on two key design principles: (i) economizing the number of DRAM accesses per operation, and (ii) reducing synchronization overheads. We implement these principles with a simple hash table with linked-list based chaining, and provide high concurrency with a fine-grained, cache-friendly locking scheme. On a commodity single-socket server with 12 cores, Mercury scales with number of cores and executes 14 times more queries/second than a popular hash-based key-value system, Memcached, for both read and write-heavy workloads.