Hauptseite > Lexikon-Begriff > CRDT (Conflict-free Replicated Data Type)
CRDT (Conflict-free Replicated Data Type)
aus dem PadKompendium. Kategorie: Lexikon-Begriff.
Ein CRDT ist eine Datenstruktur, die sich auf mehreren Knoten unabhängig verändern lässt und nach einem Austausch der lokalen Änderungen automatisch konvergiert. Im Editor-Bereich verdrängt CRDT zunehmend Operational Transformation.
Ein CRDT — Conflict-free Replicated Data Type — ist eine Datenstruktur, deren Operationen so definiert sind, dass jede mögliche Anwendungsreihenfolge denselben Endzustand erzeugt. Mathematisch werden CRDTs als kommutativer Monoid oder Verband modelliert; daraus folgt automatisch, dass parallel verarbeitete Edits ohne Konflikt zusammengeführt werden können.
Familien
Es gibt zwei Hauptfamilien:
- State-based CRDTs (CvRDT) synchronisieren komplette Zustände und nutzen eine Merge-Funktion, die kommutativ, assoziativ und idempotent ist.
- Operation-based CRDTs (CmRDT) synchronisieren Operationen, ähnlich wie OT — verlangen aber, dass die Operationen selbst kommutativ sind, was zusätzliche Metadaten (Lamport-Zeitstempel, Knoten-IDs) erfordert.
Vorteile gegenüber OT
CRDTs benötigen keine zentrale Server-Instanz, die eine kanonische Reihenfolge festlegt. Knoten können beliebig getrennt sein, lokal arbeiten und ihre Edits später austauschen — sie konvergieren trotzdem. Das macht CRDTs zur natürlichen Wahl für Peer-to-Peer-Editoren, lokale Offline-Notizen-Apps und föderierte Systeme.
Nachteile
Die Metadaten für CRDTs wachsen mit der Anzahl der Operationen; ohne Garbage-Collection oder Komprimierung können Dokumente nach Jahren der Bearbeitung unhandlich werden. Moderne Implementierungen wie Yjs und Diamond Types haben diesen Punkt mit binär-kompakten Protokollen und Run-Length-Encoding adressiert.
Praxis
Aktuelle Editoren, die auf CRDT setzen, sind unter anderem die Live-Edit-Funktion in Obsidian Sync, das Co-Editing in Logseq, das Live-Cursor-System in Tldraw und die jüngere Synchronisations-Schicht von HedgeDoc. Auch viele neue Notiz- und Whiteboard-Apps bauen auf Yjs auf.