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 ๐ ๐ก๐๐ก๐.