Unterschiede zwischen OT und CRDT

Kann mir jemand einfach die Hauptunterschiede zwischen Operational Transform und CRDT erklären?

Soweit ich weiß, handelt es sich bei beiden um Algorithmen, mit denen Daten ohne Konflikte auf verschiedenen Knoten eines verteilten Systems konvergieren können.

In welchem Fall würden Sie welchen Algorithmus verwenden? Soweit ich weiß, wird OT hauptsächlich für Text verwendet und CRDT ist allgemeiner und kann mit fortgeschritteneren Strukturen umgehen, oder?

Ist CRDT leistungsfähiger als OT?

Ich stelle diese Frage, weil ich versuche, einen kollaborativen Editor für HTML-Dokumente zu implementieren, und nicht sicher bin, in welche Richtung ich zuerst schauen soll. Ich habe das ShareJS-Projekt und die Versuche, die Rich-Text-Zusammenarbeit im Browser zu unterstützen, unter @ gesehecontenteditables Elemente. Nirgendwo in ShareJS sehe ich einen Versuch, CRDT dafür zu verwenden.

Wir wissen auch, dass Google Text & Tabellen OT verwendet und für die Echtzeit-Ausgabe umfangreicher Dokumente recht gut geeignet ist. Ist Googles Entscheidung, OT zu verwenden, weil CRDT zu diesem Zeitpunkt nicht sehr bekannt war? Oder wäre es heute auch eine gute Wahl?

Ich bin auch daran interessiert, mehr über andere Anwendungsfälle zu erfahren, beispielsweise die Verwendung dieser Algorithmen für Datenbanken. Riak scheint CRDT zu verwenden. Kann OT verwendet werden, um Knoten einer Datenbank zu synchronisieren und eine Alternative zu Paxos / Zab / Raft zu sein?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage