A Conflict-Free Replicated JSON Datatype
Martin Kleppmann and Alastair R. Beresford
IEEE Transactions on Parallel and Distributed Systems 28(10):2733–2746,
April 2017.
Abstract
Many applications model their data in a general-purpose storage format such as JSON. This data
structure is modified by the application as a result of user input. Such modifications are well
understood if performed sequentially on a single copy of the data, but if the data is replicated and
modified concurrently on multiple devices, it is unclear what the semantics should be. In this paper
we present an algorithm and formal semantics for a JSON data structure that automatically resolves
concurrent modifications such that no updates are lost, and such that all replicas converge towards
the same state (a conflict-free replicated datatype or CRDT). It supports arbitrarily nested list
and map types, which can be modified by insertion, deletion and assignment. The algorithm performs
all merging client-side and does not depend on ordering guarantees from the network, making it
suitable for deployment on mobile devices with poor network connectivity, in peer-to-peer networks,
and in messaging systems with end-to-end encryption.