4 ms·
> I've ended up using other less sound (more prone to failure), but more practical methods of doing sync. Could you share the alternative methods that you’ve
by appwiz 6y ago
> I've ended up using other less sound (more prone to failure), but more practical methods of doing sync.
Could you share the alternative methods that you’ve used?
- mike_red5hift 6y agoStuff like diffing multiple json documents and merging adds, updates and deletes where conflicts did not exist and overwriting conflicting attributes based on timestamps (latest wins). There's some reasonably good jsonpatch libraries out there that will do the heavy lifting. Plenty of room for problems to arise, but it did not require keeping a log of updates. My use cases did not require real-time collaboration and the structure of the document was known beforehand, though.
- appwiz 6y agoGot it. I’ve typically seen Operational Transforms brought up as the alternative to CRDT for real-time collaboration. But, if you don’t need to solve for that use case and the format is JSON, it’s a different problem to solve and you don’t need that journal of changes. If you have code available in the public domain, I’d love to see it.
- topicseed 6y agoOperational Transformation, though not the easiest to grasp, offers a solution to the same problem that is perhaps more loyal to the original user intent.
- heavenlyblue 6y agoOT is just a fancy name for a CRDT
- alextheparrot 6y agoIs this really true (I just watched the video, so still learning these concepts, so please be kind)? The linked video makes a clear distinction that OT and CRDT are different, as OT has the idea of a centralised coordinator to ensure consistency by mutating the proposed, conflicting operations whereas CRDT uses commutativity to attempt to make conflicting operations an inaccessible state
- toomim 6y agoThere is no formal distinction between an OT and CRDT algorithm. It's true that the most popular OT systems have a central server -- but there exist OT algorithms without a central server. It's also true that CRDT algorithms tend to require too much memory usage to be practical -- but there exist CRDT algorithms with bounded memory. There are even algorithms that can be equally called OT and CRDT.
- sagichmal 6y agoNo, CRDTs and Operational Transforms are not the same at all.
- heavenlyblue 6y agoWell, so OT is the same as CRDT except that you also have a centralised server that decides the merge conflicts.
- topicseed 6y agoNot true whatsoever.
- toomim 6y agoActually, the algorithms have a lot of overlap. The original CRDT (called WOOT, for "WithOut Operational Transform") was derived from an OT algorithm. Historically, what happened was that the OT research community couldn't solve consistency without adding tombstones into their data structures that recorded deletions (and generally kept these deletion marks around forever). They called these "tombstones." People didn't like that you had to keep them around forever, but they seemed to solve the problem. Over time, some researchers decided to just keep more things around forever, and promoted the idea that you don't need to do as much transforming of operations if you just preserved all operations in a spatial data structure, not just the tombstones, but everything. They came up with a new name this style: CRDT. But in fact, the technical definition of a CRDT actually fits OT algorithms quite well. A CRDT just means that you can accept any operation at any time. That's what a good OT system also needs to do. So there isn't a technical distinction between an OT or a CRDT. They each define a set of features, and your synchronizer can possess OT features, and it can possess CRDT features.