Write Fast, Read in the Past

Marek Zawirski, Nuno Preguiça, Sérgio Duarte, Annette Bieniusa, Valter Balegas, Marc Shapiro

2015 · 72 citations · 32 references

DOIFull text

Open access

Concepts

TL;DR

Client‑side apps require a local cache for cloud data that is consistent, fault‑tolerant, and resource‑efficient to support many unreliable, resource‑poor clients and large databases. The paper introduces SwiftCloud, a distributed object database that offers fast, causally‑consistent client‑side reads and writes backed by the cloud. SwiftCloud implements a causally‑consistent client‑side cache backed by the cloud, using novel algorithms and design choices that are experimentally evaluated in the study. The system is resource‑efficient, scales well with bounded metadata, remains available during faults by switching data centres while preserving consistency, and delivers high performance and availability to client‑side apps at a small cost.

Abstract

Client-side apps (e.g., mobile or in-browser) need cloud data to be available in a local cache, for both reads and updates. For optimal user experience and developer support, the cache should be consistent and fault-tolerant. In order to scale to high numbers of unreliable and resource-poor clients, and large database, the system needs to use resources sparingly. The SwiftCloud distributed object database is the first to provide fast reads and writes via a causally-consistent client-side local cache backed by the cloud. It is thrifty in resources and scales well, thanks to consistent versioning provided by the cloud, using small and bounded metadata. It remains available during faults, switching to a different data centre when the current one is not responsive, while maintaining its consistency guarantees. This paper presents the SwiftCloud algorithms, design, and experimental evaluation. It shows that client-side apps enjoy the high performance and availability, under the same guarantees as a remote cloud data store, at a small cost.

References

32