Faster: A Concurrent Key-Value Store with In-Place Updates Badrish Chandramouliy, Guna Prasaadz∗, Donald Kossmanny, Justin Levandoskiy, James Huntery, Mike Barnett† yMicrosoft Research zUniversity of Washington
[email protected],
[email protected], {donaldk, justin.levandoski, jahunter, mbarnett}@microsoft.com ABSTRACT 1.1 Challenges and Existing Solutions Over the last decade, there has been a tremendous growth in data- State management is an important problem for all these applications intensive applications and services in the cloud. Data is created on and services. It exhibits several unique characteristics: a variety of edge sources, e.g., devices, browsers, and servers, and • Large State: The amount of state accessed by some applications processed by cloud applications to gain insights or take decisions. can be very large, far exceeding the capacity of main memory. For Applications and services either work on collected data, or monitor example, a targeted search ads provider may maintain per-user, and process data in real time. These applications are typically update per-ad and clickthrough-rate statistics for billions of users. Also, intensive and involve a large amount of state beyond what can fit in it is often cheaper to retain state that is infrequently accessed on main memory. However, they display significant temporal locality secondary storage [18], even when it fits in memory. in their access pattern. This paper presents Faster, a new key- • Update Intensity: While reads and inserts are common, there value store for point read, blind update, and read-modify-write are applications with significant update traffic. For example, a operations. Faster combines a highly cache-optimized concurrent monitoring application receiving millions of CPU readings every hash index with a hybrid log: a concurrent log-structured record second from sensors and devices may need to update a per-device store that spans main memory and storage, while supporting fast aggregate for each reading.