Wormhole: A Fast Ordered Index for In-memory Data Management
arXiv:1805.02200 · doi:10.1145/1810479.1810540
Abstract
In-memory data management systems, such as key-value stores, have become an essential infrastructure in today's big-data processing and cloud computing. They rely on efficient index structures to access data. While unordered indexes, such as hash tables, can perform point search with O(1) time, they cannot be used in many scenarios where range queries must be supported. Many ordered indexes, such as B+ tree and skip list, have a O(log N) lookup cost, where N is number of keys in an index. For an ordered index hosting billions of keys, it may take more than 30 key-comparisons in a lookup, which is an order of magnitude more expensive than that on a hash table. With availability of large memory and fast network in today's data centers, this O(log N) time is taking a heavy toll on applications that rely on ordered indexes. In this paper we introduce a new ordered index structure, named Wormhole, that takes O(log L) worst-case time for looking up a key with a length of L. The low cost is achieved by simultaneously leveraging strengths of three indexing structures, namely hash table, prefix tree, and B+ tree, to orchestrate a single fast ordered index. Wormhole's range operations can be performed by a linear scan of a list after an initial lookup. This improvement of access efficiency does not come at a price of compromised space efficiency. Instead, Wormhole's index space is comparable to those of B+ tree and skip list. Experiment results show that Wormhole outperforms skip list, B+ tree, ART, and Masstree by up to 8.4x, 4.9x, 4.3x, and 6.6x in terms of key lookup throughput, respectively.
arXiv comment15 pages; 18 figures; 1 table
Cited by in corpus (22)
- Fast, Multicore-Scalable, Low-Fragmentation Memory Allocation through Large Virtual Memory and Global Data Structures
- Aspect-oriented linearizability proofs
- Advanced Synchronization Techniques for Task-based Runtime Systems
- An Efficient Wait-free Resizable Hash Table
- PIM-STM: Software Transactional Memory for Processing-In-Memory Systems
- A Concurrent Perspective on Smart Contracts
- Between Linearizability and Quiescent Consistency: Quantitative Quiescent Consistency
- The Ubiquitous Skiplist: A Survey of What Cannot be Skipped About the Skiplist and its Applications in Big Data Systems
- Adapting Persistent Data Structures for Concurrency and Speculation
- Path-Sensitive Atomic Commit: Local Coordination Avoidance for Distributed Transactions
- Parallel Working-Set Search Structures
- Multiversion Concurrency with Bounded Delay and Precise Garbage Collection
- Concurrent Data Structures Made Easy (Extended Version)
- Specifying and Verifying Concurrent Algorithms with Histories and Subjectivity
- Proving linearizability using forward simulations
- Asymmetry-aware Scalable Locking
- A Scalable Concurrent Algorithm for Dynamic Connectivity
- Flat combined Red Black Trees
- Migration-Based Synchronization
- Processing Transactions in a Predefined Order
- Accelerating Irregular Computations with Hardware Transactional Memory and Active Messages
- Flat-Combining-Based Persistent Data Structures for Non-Volatile Memory