SLIK: scalable low-latency indexes for a key-value store
Ankita Kejriwal, Arjun Gopalan, Ashish Kumar Gupta, Zhihao Jia, Stephen P. Yang, John K. Ousterhout · USENIX Annual Technical Conference · 2016
Many large-scale key-value storage systems sacrifice features like secondary indexing and/or consistency in favor of scalability or performance. This limits the ease and efficiency of application development on such systems. Implementing secondary indexing in a large-scale memory based system is challenging because the goals for low latency, high scalability, consistency and high availability often conflict with each other. This paper shows how a large-scale key-value storage system can be extended to provide secondary indexes while meeting those goals. The architecture, called SLIK, enables multiple secondary indexes for each table. SLIK represents index B+ trees using objects in the underlying key-value store. It allows indexes to be partitioned and distributed independently of the data in tables while providing reasonable consistency guarantees using a lightweight ordered write approach. Our implementation of this design on RAMCloud (a main memory key-value store) performs indexed reads in 11 µs and writes in 30 µs. The architecture supports indexes spanning thousands of nodes, and provides linear scalability for throughput.