Anyone have any more resources on the adoption/use of CRDTs?
Anyone have any more resources on the adoption/use of CRDTs?
Also check out automerge, a CRDT that aims to be as JSON-like as possible: https://github.com/automerge/automerge
Martin Kleppmann (one of the creators of Automerge) has given several great in-depth talks about it, eg. https://www.youtube.com/watch?v=yCcWpzY8dIA
In particular the "operations" defined in [1] section 4.2 are defined in this file: https://github.com/automerge/automerge/blob/master/backend/o...
[1] https://www.cl.cam.ac.uk/~arb33/papers/KleppmannBeresford-CR...
Redis Enterprise is probably the biggest CRDT usage in databases, used to sync geo-replicated active-active clusters: https://redislabs.com/landing/active-active/
There's also Datanet/Kuhiro which was a novel fully distributed database using CRDTs to always merge state across disruptions to a global view, although now seemingly dysfunct: http://highscalability.com/blog/2016/10/17/datanet-a-new-crd...
I'd venture that the number of potential write conflicts introduced by FB users hopping geo's is small enough to simply report an error to the client and forcing a retry - or handled by a hand-shake before the customer crosses GEOs
Is there any practical database application where a CRDT is useful?
Any application complex enough to need geo-replication is also likely not just writing a single key per user. There will be shared keys and data structures like tables/lists/hashes that all need to be synced.
https://en.wikipedia.org/wiki/Conflict-free_replicated_data_...