3 ms·
Just store all updates - as if you do event sourcing - ordered by a timestamp. The list of updates will eventually converge as will any function of that list, i
by danbruc 4y ago
Just store all updates - as if you do event sourcing - ordered by a timestamp. The list of updates will eventually converge as will any function of that list, including any function that merges all the updates into a current state. You might have to [partially] reevaluate the function in case a delayed update shows up and has to be inserted into the middle of the list of updates. So I guess there are additional requirements in order to qualify as a CRDT, bounded additional space or bounded amount of computation on updates. But I don't know as it turned out my understanding of what qualifies as a good CRDT was too narrow.
- jamil7 4y agoYeah event sourcing and what you described is what these libraries are calling delta CRDTs. The appeal is they’re hiding away the actual event log, metadata and rebasing/merging parts and exposing data types that look something like what you’d normally use.
- melony 4y agoAnd if you tie the conflict resolution logic to the individual delta operations, you get Operational Transforms.