Delta State Replicated Data Types
arXiv:1603.01529 · doi:10.1016/j.jpdc.2017.08.003
Abstract
CRDTs are distributed data types that make eventual consistency of a distributed object possible and non ad-hoc. Specifically, state-based CRDTs ensure convergence through disseminating the entire state, that may be large, and merging it to other replicas; whereas operation-based CRDTs disseminate operations (i.e., small states) assuming an exactly-once reliable dissemination layer. We introduce Delta State Conflict-Free Replicated Data Types (-CRDTs) that can achieve the best of both worlds: small messages with an incremental nature, as in operation-based CRDTs, disseminated over unreliable communication channels, as in traditional state-based CRDTs. This is achieved by defining delta mutators to return a delta-state, typically with a much smaller size than the full state, that to be joined with both local and remote states. We introduce the -CRDT framework, and we explain it through establishing a correspondence to current state-based CRDTs. In addition, we present an anti-entropy algorithm for eventual convergence, and another one that ensures causal consistency. Finally, we introduce several -CRDT specifications of both well-known replicated datatypes and novel datatypes, including a generic map composition.
arXiv admin note: substantial text overlap with arXiv:1410.2803
References in corpus (2)
Cited by in corpus (10)
- A Conflict-Free Replicated JSON Datatype
- Conflict-free Replicated Data Types: An Overview
- Approaches to Conflict-free Replicated Data Types
- GeoGauss: Strongly Consistent and Light-Coordinated OLTP for Geo-Replicated SQL Database
- Pure Operation-Based Replicated Data Types
- Got: Git, but for Objects
- DeCo: A Core Calculus for Incremental Functional Programming with Generic Data Types
- Models for Storage in Database Backends
- Verifying Strong Eventual Consistency in -CRDTs
- Achlys : Towards a framework for distributed storage and generic computing applications for wireless IoT edge networks with Lasp on GRiSP