Replicated data types: specification, verification, optimality

  title={Replicated data types: specification, verification, optimality},
  author={Sebastian Burckhardt and Alexey Gotsman and Hongseok Yang and Marek Zawirski},
  journal={Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
Geographically distributed systems often rely on replicated eventually consistent data stores to achieve availability and performance. To resolve conflicting updates at different replicas, researchers and practitioners have proposed specialized consistency protocols, called replicated data types, that implement objects such as registers, counters, sets or lists. Reasoning about replicated data types has however not been on par with comparable work on abstract data types and concurrent data… 

Figures and Tables from this paper

Bounded Implementations of Replicated Data Types

By imposing reasonable restrictions on the underlying network, Burkhardt et al recast their declarative framework in terms of standard labelled partial orders, and are able to construct canonical finite-state reference implementations with bounded metadata that can be used for formal verification of ECRDT implementations via CEGAR.

ViSearch: Weak Consistency Measurement for Replicated Data Types

TheViSearch framework refactors the existing brute-force checking algorithm to a generic algorithm skeleton, which further enables efficient pruning of the search space and effective parallelization, and shows the usefulness and cost-effectiveness of consistency measurement based on the ViSearch framework in realistic scenarios.

Dependable eventual consistency with replicated data types. (Cohérence à terme fiable avec des types de données répliquées)

This thesis designs optimized set and register RDTs with metadata overhead reduced to the number of replicas, and designs SwiftCloud, a replicated causally-consistent RDT object database for client-side applications with small metadata.

VeriFx: Correct Replicated Data Types for the Masses

VeriFx is proposed, a high-level programming language with automated proof capabilities that lets programmers implement RDTs atop functional collections and express correctness properties that are verified automatically, and provides libraries for implementing and verifying Conflict-free Replicated Data Types and Operational Transformation functions.

Mergeable replicated data types

This work presents a fundamentally different approach to programming in the presence of replicated state based on the use of invertible relational specifications of an inductively-defined data type as a mechanism to capture salient aspects of the data type relevant to how its different instances can be safely merged in a replicated environment.

Toward Domain-Specific Solvers for Distributed Consistency

It is argued that domain-specific SMT-based tools that exploit the mathematical foundations of distributed consistency would enable both more efficient verification and improved ease of use for domain experts.

Semantics, Specification, and Bounded Verification of Concurrent Libraries in Replicated Systems

This paper proposes appropriate semantics and specifications for highly-concurrent libraries in a weakly-consistent, replicated setting and develops a static analysis framework that can automatically detect correctness violations of library implementations parameterized with respect to the different consistency policies provided by the underlying system.

Replication-aware linearizability

This work addresses the problem of specifying and verifying CRDTs, introducing a new correctness criterion called Replication-Aware Linearizability, inspired by linearizable, the de-facto correctness criterion for (shared-memory) concurrent data structures.

Safe replication through bounded concurrency verification

A novel programming framework for replicated data types (RDTs) equipped with an automatic (bounded) verification technique that discovers and fixes weak consistency anomalies and shows that in practice, proving bounded safety guarantees typically generalize to the unbounded case.

Eventually consistent register revisited

This work identifies a register construction that generalizes existing ones by combining runtime causality ordering, to identify concurrent writes, with static data semantics, to resolve them and proposes a simple conflict resolution template based on an application-predefined order on the domain of values.



An optimized conflict-free replicated set

A reasoning abstraction, \emph{permutation equivalence}, is presented that systematizes the characterization of the expected concurrency semantics of concurrent types and presents one of the existing conflict-free replicated data types, Observed-Remove Set.

Conflict-Free Replicated Data Types

This paper formalises two popular approaches (state- and operation-based) and their relevant sufficient conditions and studies a number of useful CRDTs, such as sets with clean semantics, supporting both add and remove operations, and considers in depth the more complex Graph data type.

A comprehensive study of Convergent and Commutative Replicated Data Types

This paper formalises asynchronous object replication, either state based or operation based, and provides a sufficient condition appropriate for each case, and describes several useful CRDTs, including container data types supporting bothadd and remove operations with clean semantics, and more complex types such as graphs, montonic DAGs, and sequences.

Replicated abstract data types: Building blocks for collaborative applications

Managing update conflicts in Bayou, a weakly connected replicated storage system

The motivation for and design of these mechanisms for conflict detection and per -write conflict resolution based on client-provid ed procedures are presented and the experiences gained with an initial implementation of the system are described.

CheckFence: checking consistency of concurrent data types on relaxed memory models

The CheckFence prototype automatically translates the C implementation code and the test program into a SAT formula, hands the latter to a standard SAT solver, and constructs counter example traces if there exist incorrect executions.

Don't settle for eventual: scalable causal consistency for wide-area storage with COPS

This paper identifies and defines a consistency model---causal consistency with convergent conflict handling, or causal+---that is the strongest achieved under these constraints and presents the design and implementation of COPS, a key-value store that delivers this consistency model across the wide-area.

Understanding Eventual Consistency

This work proposes a framework for formal and declarative specification of the semantics of eventually consistent systems using axioms, and demonstrates that the framework provides system architects with a tool for explor- ing the design space, and lays the foundation for formal reasoning aboutEventually consistent systems.

Eventually Consistent Transactions

This work establishes a handful of simple operational rules for managing replicas, versions and updates, based on graphs called revision diagrams, and proves that these rules are sufficient to guarantee correct implementation of eventually consistent transactions.

Cloud Types for Eventual Consistency

It is demonstrated how cloud types enable simple programs to use eventually consistent storage without introducing undue complexity, and how to provide cloud types using a system and protocol comprised of multiple servers and clients is demonstrated.