VLDB2022

Keep CALM and CRDT On

Shadaj Laddad, Conor Power, Mae Milano, Alvin Cheung, Natacha Crooks, Joseph M. Hellerstein

13 citations

Abstract

Despite decades of research and practical experience, developers have few tools for programming reliable distributed applications without resorting to expensive coordination techniques. Conflictfree replicated datatypes (CRDTs) are a promising line of work that enable coordination-free replication and offer certain eventual consistency guarantees in a relatively simple object-oriented API. Yet CRDT guarantees extend only to data updates; observations of CRDT state are unconstrained and unsafe. We propose an agenda that embraces the simplicity of CRDTs, but provides richer, more uniform guarantees. We extend CRDTs with a query model that reasons about which queries are safe without coordination by applying monotonicity results from the CALM Theorem, and lay out a larger agenda for developing CRDT data stores that let developers safely and efficiently interact with replicated application state. State-Based CRDTs We begin by reviewing the definition of state-based CRDTs. CvRDTs encapsulate the current ๐‘ ๐‘ก๐‘Ž๐‘ก๐‘’ of the replica; let the type of ๐‘ ๐‘ก๐‘Ž๐‘ก๐‘’ be called ๐‘‡ . The API for state-based CRDTs contains three classes of methods, all of which run locally on a single replica's state: Merge: merge is a single, required method that takes a value ๐‘ฃ of type ๐‘‡ as input. It combines ๐‘ ๐‘ก๐‘Ž๐‘ก๐‘’ with ๐‘ฃ to generate a value ๐‘ ๐‘ก๐‘Ž๐‘ก๐‘’ โ€ฒ of type ๐‘‡ , and updates itself so that ๐‘ ๐‘ก๐‘Ž๐‘ก๐‘’ = ๐‘ ๐‘ก๐‘Ž๐‘ก๐‘’ โ€ฒ . Constraint: the merge function must be ACI. Operations: these are methods that clients use to modify ๐‘ ๐‘ก๐‘Ž๐‘ก๐‘’. Constraint: operations must be monotonic with respect to the type ๐‘‡ . Queries: these are methods that do not modify ๐‘ ๐‘ก๐‘Ž๐‘ก๐‘’, but return a result that may be dependent on ๐‘ ๐‘ก๐‘Ž๐‘ก๐‘’.