CRDT: Conflict Free Replicated Data Type. A kind of data structure and synchronization approach whereby beplicas can be updated independently and concurrently without typical coordination. Can be good for distributed collaborative real time editing, and/or syncing live data among machines.
State-based replication: send all CRDT state to each replica; no need to send operations. Typically good when state is small relative to operations, and/or when communications are unreliable. A.k.a. CvRDT, convergent replicated data types.
Operation-based replication: send all CRDT operations to each replica; no need to send state. Typically good when state is large relative to operations, and/or when communications are reliable. A.k.a. CmRDT, commutative replicated data types.
I can't understand the illustration in the README, why cubes can be placed outside the 2 slots? What's the point of having slots if cubes can be outside?
Maintainer here, it's meant to be a visual representation of a 2-tuple of natural numbers.
But I get your point, there was another commentator here who expressed similar frustrations. When I find some time, I'll see about picking a clearer example for the README
15 comments
[ 3.5 ms ] story [ 51.1 ms ] threadCRDT: Conflict Free Replicated Data Type. A kind of data structure and synchronization approach whereby beplicas can be updated independently and concurrently without typical coordination. Can be good for distributed collaborative real time editing, and/or syncing live data among machines.
State-based replication: send all CRDT state to each replica; no need to send operations. Typically good when state is small relative to operations, and/or when communications are unreliable. A.k.a. CvRDT, convergent replicated data types.
Operation-based replication: send all CRDT operations to each replica; no need to send state. Typically good when state is large relative to operations, and/or when communications are reliable. A.k.a. CmRDT, commutative replicated data types.
- Commits provide the state of each file at that snapshot.
- Diffs (patches) provide a minimal operation to move from one FS state to another.
The point of CRDTs is that when you merge state, there CANNOT be a conflict, ever.
https://gritzko.gitbooks.io/swarm-the-protocol/content/crdt....
John Mumm - A CRDT Primer: Defanging Order Theory:
https://www.youtube.com/watch?v=OOlnp2bZVRs
And if you'd like a quick example, with some code from implementation, there's a Rustfest talk from 2018:
https://www.youtube.com/watch?v=CPbhrPPI1Xw
But I get your point, there was another commentator here who expressed similar frustrations. When I find some time, I'll see about picking a clearer example for the README
> a 2-tuple like structure that stores cubes in each slot.
instead of
> a 2-tuple like structure that stores cubes in two slots.
The flowing also confused me:
> It allows us to store a value and resolves concurrently set values by keeping both values.
"both" indicates the concurrency can only happen between two parties. I think saying "keeping all values" is more accurate.
Visualizing multi-dimensional merges isn't easy. :)
That said, maybe an additional example of merging JSON blobs might be more intuitive for some.
But it seems this is not very clear, I'll take another look around for a more intuitive structure.
I'll be adding this link pretty soon.