Artigo Revisado por pares

BiloKey : A Scalable Bi-Index Locality-Aware In-Memory Key-Value Store

2019; Institute of Electrical and Electronics Engineers; Volume: 30; Issue: 7 Linguagem: Inglês

10.1109/tpds.2019.2891599

ISSN

2161-9883

Autores

Wenlong Ma, Yuqing Zhu, Cheng Li, Mengying Guo, Yungang Bao,

Tópico(s)

Distributed systems and fault tolerance

Resumo

Fast in-memory key value stores are the keys to building large-scale Internet services. The state-of-the-art solutions mainly focus on optimizing the performance for read-intensive workloads. Nevertheless, a wide range of applications demonstrate a significant amount of updates and range queries, which scale poorly with the current implementations. In this paper, we present BiloKey, a highly scalable in-memory key value store on multi-core machines, significantly outperforming Redis and Memcached for a variety of mixed read and write workloads. To achieve this, BiloKey leverages a fast bi-index comprised by a Hash Table index and a SkipList index, where the former supports feature rich operations including GET, UPDATE and DELETE with O(1) complexity, while the latter supports SCAN with O(log N) complexity. Furthermore, to make the bi-index design scale well, BiloKey adopts three techniques: lazy synchronization for reducing the overhead of maintaining index consistency, lock-free data structure for supporting multi-writers, and locality-aware data parallel processing for preserving the data locality of requests. Compared with two popular in-memory KV stores (i.e., Redis and Memcached), experimental results show that: (1) for write-intensive workloads, BiloKey outperforms Redis and Memcached by 7.8x and 3.7x on average (up to 11.5x and 4.8x), respectively; (2) for scan-intensive workloads, BiloKey achieves an average speedup of 2.3x against Redis; (3) for read-intensive workloads, BiloKey also outperforms Redis and Memcached by 1.2x and 1.8x on average.

Referência(s)