15 Punkte von GN⁺ 2023-10-05 | 2 Kommentare | Auf WhatsApp teilen
  • Eine interaktive Einführung in Conflict-free Replicated Data Types (CRDTs)
    • Eine Art von Datenstruktur, die auf verschiedenen Computern (Peers) gespeichert wird und sofort aktualisiert werden kann, ohne Netzwerkanfragen oder Abstimmung mit anderen Peers
  • CRDTs eignen sich hervorragend, um umfangreiche kollaborative Apps wie Google Docs und Figma ohne Synchronisationsanforderungen über einen zentralen Server zu bauen
  • Es gibt zwei Arten von CRDTs: zustandsbasierte und operationsbasierte
    • Zustandsbasierte CRDTs übertragen den gesamten Zustand zwischen Peers, und ein neuer Zustand entsteht durch das Zusammenführen aller Zustände
    • Operationsbasierte CRDTs übertragen nur die Aktionen, die ein Nutzer ausführt, und diese können zur Berechnung des neuen Zustands verwendet werden
  • Dieser Artikel konzentriert sich auf zustandsbasierte CRDTs und erklärt, wie man primitive CRDTs erstellt, wie man sie zu komplexeren Datenstrukturen zusammensetzt und wie man einen kollaborativen Pixel-Art-Editor baut
  • Vorgestellt wird das Konzept des Last Write Wins Register (LWW Register), ein einfacher Typ von CRDT, der einen einzelnen Wert hält und per Zeitstempel den aktuellen Wert mit dem zuletzt geschriebenen Wert überschreibt
  • Außerdem wird das Konzept des Last Write Wins Map (LWW Map) vorgestellt, ein komplexerer Typ von CRDT, der einen oder mehrere Werte enthält
  • Enthält einen interaktiven Playground, der hilft zu verstehen, wie LWW Registers und LWW Maps funktionieren
  • Der nächste Artikel wird sich darauf konzentrieren, mit den in diesem Beitrag beschriebenen Konzepten einen kollaborativen Pixel-Art-Editor zu bauen

2 Kommentare

 
cosine20 2023-10-06

Ziemlich interessant. Ich habe mich schon gefragt, wie Apps mit Echtzeit-Zusammenarbeit wie Google Docs eigentlich umgesetzt werden...

 
GN⁺ 2023-10-05
Hacker-News-Kommentar
  • Ein Artikel, der als hervorragende Einführung in Conflict-free Replicated Data Types (CRDTs) für Entwickler gelobt wird und echte Codebeispiele sowie klare Erklärungen enthält
  • CRDTs werden in der Produktentwicklung eingesetzt und können schwer zu handhaben sein, bieten jedoch Vorteile wie Null-Latenz und Eventual Consistency
  • CRDTs ermöglichen verteilte Caches ohne Invalidierungslogik, was das Cache-Management vereinfacht und die Leistung verbessert
  • CRDTs ermöglichen das Löschen älterer Schreibvorgänge, was die Systemlast reduziert und Edge Computing ermöglicht
  • Die Nutzung von CRDTs bringt jedoch Herausforderungen mit sich, etwa Schwierigkeiten bei rollenbasierter Autorisierung, die Notwendigkeit von Änderungen an additiven Datenmodellen und Probleme beim Debugging
  • Dienste wie Liveblocks versuchen, die Nutzung von CRDTs zu vereinfachen, können für unabhängige Entwickler jedoch teuer sein
  • CRDTs wurden in verschiedenen Anwendungen eingesetzt, darunter Manager für TTRPG-Kampagnen, automatisch synchronisierte Datenbanken und kollaborative Notebook-Tools
  • CRDTs gelten als sehr nützlich und interessant für das Datenmanagement, ihre Bedeutung für nutzerzentrierte Anwendungen ist jedoch umstritten
  • Einige argumentieren, der wichtigste Vorteil von CRDTs sei die Echtzeit-Zusammenarbeit, die bereits durch zentrale Lösungen wie Google Docs gelöst worden sei
  • Andere weisen darauf hin, dass CRDTs Vorteile wie Multi-Device-Support und Offline-Zugriff bieten, diese Funktionen jedoch ebenfalls in zentralen Lösungen verfügbar sind
  • Es gibt auch Bedenken hinsichtlich der Datenhaltbarkeit und der Nutzerkontrolle bei CRDTs, da sich Datenmodelle nicht leicht aktualisieren lassen und andere Peers die Daten verändern können
  • Trotz dieser Debatten besteht weiterhin anhaltendes Interesse an CRDTs, und Forschung und Entwicklung in diesem Bereich gehen weiter