1 Punkte von GN⁺ 2023-09-04 | 1 Kommentare | Auf WhatsApp teilen
  • Erläuterung des theoretischen Hintergrunds und der technischen Umsetzung von cola, einem in Rust geschriebenen Text-CRDT (Conflict-free Replicated Data Type) für kollaborative Bearbeitung in Echtzeit
  • CRDTs sind Datenstrukturen, die gleichzeitig an mehreren Orten repliziert und verändert werden können und auch ohne Koordination durch eine zentrale Instanz garantiert konvergieren
  • Der Artikel gliedert sich in die Darstellung des Dokumentzustands und der Bearbeitungen, die ihn verändern, in Methoden zur effizienten Implementierung des Frameworks im Code sowie in Benchmark-Vergleiche zwischen cola und anderen Rust-basierten CRDT-Bibliotheken
  • Der Autor führt im Text das Konzept der „Anchors“ ein, das dazu dient, sowohl Einfügungen als auch Löschungen auf eine Weise zu spezifizieren, die Nebenläufigkeit ermöglicht
  • Im Beitrag wird erläutert, wie sich konfliktbehaftete Einfügungen mit „Lamport timestamps“ behandeln lassen, indem nach dem Lamport-Zeitstempel absteigend sortiert wird
  • Zur Behandlung von Löschungen stellt der Autor das Konzept der „tombstones“ vor. Als tombstoned markierte Zeichen gelten als gelöscht, bleiben aber weiterhin im Dokument erhalten
  • Der Beitrag diskutiert außerdem, wie sich die Systemleistung durch den Einsatz von „G-trees“ (grow-only trees) verbessern lässt. G-trees können in beide Richtungen durchlaufen werden, wodurch wiederholte Bearbeitungen an derselben Cursor-Position sehr schnell sind
  • Zum Abschluss vergleicht der Autor cola in Benchmarks mit drei weiteren in Rust implementierten CRDTs: diamond-types, automerge und yrs. cola übertrifft alle drei sowohl in Upstream- als auch in Downstream-Richtung
  • Der Autor weist darauf hin, dass cola zwar derzeit die schnellste bekannte Implementierung eines Text-CRDT ist, für den Produktionseinsatz aber noch weitere Arbeit nötig ist, etwa Unterstützung für Undo/Redo und andere Funktionen

1 Kommentare

 
GN⁺ 2023-09-04
Hacker-News-Kommentare
  • Ein Kommentar behauptet, dass der G-Baum im Grunde ein B-Baum mit zusätzlichen Elternzeigern sei und dass sich seine Struktur auch dann nicht grundlegend ändere, wenn man ihn in einem Array speichere
  • Es gibt die Sorge, dass Cola keine Rich-Text-Formatierungsbereiche wie Fett oder Kursiv unterstützen könnte; der Kommentator schlägt Peritext als Stand der Technik bei Rich-Text-CRDT-Algorithmen vor
  • Es gibt Fragen zu Leistungs- oder Funktionsvergleichen zwischen Cola und ähnlichen Technologien wie Automerge oder Y.js/Yrs
  • Es wurde eine Lösung für das Problem der Knoteneigentümerschaft in dynamischen Arrays diskutiert; dabei werden alle Knoten im dynamischen Array gespeichert und Indizes zum Verweisen auf andere Knoten verwendet
  • Es wurde vorgeschlagen, eine Crate namens slotmap zu verwenden, um Löschungen zu unterstützen, ohne sich Sorgen machen zu müssen, dass Indizes verschoben werden oder auf andere Werte zeigen
  • Einige Nutzer äußern Interesse daran, Cola in Projekten auszuprobieren, in denen andere Werkzeuge wie Etherpad und Word gescheitert sind
  • Es wurde Kritik an der Fairness der verwendeten Benchmarks geäußert, da diese weder Operationen noch echten Text berechnen und speichern
  • Es wurde auch erwähnt, dass dieses Cola nicht mit dem gleichnamigen Werk von Ian Piumarta verwechselt werden sollte
  • Es gibt außerdem die Frage, ob sich mit Text-CRDTs kollaboratives Bearbeiten von Formularen im Browser ermöglichen lässt
  • Es wurde vorgeschlagen, die Abkürzung „CRDT“ im Dokument zu definieren, da sie nicht sehr geläufig ist und Leser verwirren könnte
  • Außerdem wurde die Frage aufgeworfen, ob sich Cola zusammen mit tiptap/prosemirror oder anderen Texteditoren nutzen lässt, um CRDT-basierte kollaborative Bearbeitung hinzuzufügen