ABSTRACT
Most web-based applications require an undisrupted connection to some kind of server for updating the current application state and propagating changes made locally at the clients. By their very nature, CRDTs provide the right semantics for these applications as they resolve conflicts after concurrent state changes from different users or when a user reconnects after some period of unavailability. Although the JSON format is often used to summarize and represent the complete state of web applications, there is currently - to our knowledge - no generic integrated implementation of a JSON CRDT framework that supports the standard clientserver setup for web apps.
In this paper, we present the AutoCouch framework which combines the benefits of the Automerge CRDT library with the widely used CouchDB framework. It provides an out-ofthe-box use of a conflict-free JSON document that is replicated on server side and in browsers on client side, while requiring few adaptations to provide smooth online/offline transitions for web apps.
- 2014. Riak 2.0. https://riak.comGoogle Scholar
- 2020. delta-crdts. https://github.com/peer-base/js-delta-crdtsGoogle Scholar
- 2020. Ditto-CRDT-lib. https://www.npmjs.com/package/ditto-crdt-libGoogle Scholar
- AntidoteDB. 2020. Overview. https://antidotedb.gitbook.io/documentationGoogle Scholar
- Cihan Biyikoglu. 2020. Under the Hood: Redis CRDTs (Conflict-free Replicated Data Types). Technical Report. Redis Labs.Google Scholar
- Apache Software Foundation. 2020. Apache CouchDB. https://docs.couchdb.org/en/stable/Google Scholar
- Martin Kleppmann and Alastair R. Beresford. 2016. A Conflict-Free Replicated JSON Datatype. CoRR abs/1608.03960 (2016). arXiv:1608.03960 http://arxiv.org/abs/1608.03960Google Scholar
- Martin Kleppmann, Herb Caudill, Orion Henry, Rajat Verma, Sam McCord, Peter van Hardenberg, Mark McGranaghan, Miguel Oller, and Issiaka Aziz Fane. 2019. Automerge. https://github.com/automerge/automerge/blob/master/README.mdGoogle Scholar
- Martin Kleppmann and Eric Dahlseng. 2019. Automerge internal data structures. https://github.com/automerge/automerge/blob/master/INTERNALS.mdGoogle Scholar
- Martin Kleppmann, Adam Wiggins, Peter van Hardenberg, and Mark McGranaghan. 2019. Local-first software: you own your data, in spite of the cloud. In Proceedings of the 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, Onward! 2019, Athens, Greece, October 23--24, 2019, Hidehiko Masuhara and Tomas Petricek (Eds.). ACM, 154--178. Google ScholarDigital Library
- Petru Nicolaescu, Kevin Jahns, Michael Derntl, and Ralf Klamma. 2016. Near Real-Time Peer-to-Peer Shared Editing on Extensible Data Types. In Proceedings of the 19th International Conference on Supporting Group Work. ACM, 39--49. Google ScholarDigital Library
- Nuno M. Preguiça. 2018. Conflict-free Replicated Data Types: An Overview. CoRR abs/1806.10254 (2018). arXiv:1806.10254 http://arxiv.org/abs/1806.10254Google Scholar
- Victor Grishchenko & Co. 2020. Replicated Object Notation. https://replicated.cc/Google Scholar
Index Terms
- AutoCouch: a JSON CRDT framework
Recommendations
Secure and resilient data replication for the client-centric decentralized web
Middleware '22 Doctoral Symposium: Proceedings of the 23rd International Middleware Conference Doctoral SymposiumPart of the web is shifting to a client-centric, decentralized model where web clients become the leading execution environment for application logic and data storage. However, the basic paradigm of the web and the browser is still server-centric. The ...
Legion: Enriching Internet Services with Peer-to-Peer Interactions
WWW '17: Proceedings of the 26th International Conference on World Wide WebMany web applications are built around direct interactions among users, from collaborative applications and social networks to multi-user games. Despite being user-centric, these applications are usually supported by services running on servers that ...
Safe replication through bounded concurrency verification
High-level data types are often associated with semantic invariants that must be preserved by any correct implementation. While having implementations enforce strong guarantees such as linearizability or serializability can often be used to prevent ...
Comments