Conflict-free Replicated Data Type (CRDT) 09.02.2023, 10:05 Uhr

Automerge 2.0: bereit für die Produktion

Ein Conflict-free Replicated Data Type (CRDT) ist eine Datenstruktur, die verteilte Datenspeichersysteme und Mehrbenutzeranwendungen vereinfachen soll.
(Quelle: automerge.org)
Automerge 2.0 ist eine ein produktionsreifes CRDT-System mit deutlichen Verbesserungen in Sachen Leistung und Zuverlässigkeit. Es ist sowohl in JavaScript als auch in Rust verfügbar und enthält TypeScript-Typen und C-Bindings für den Einsatz in anderen Ökosystemen. Verbessert wurde auch die Dokumentation und zum ersten Mal gibt es Support-Optionen für Produktionsanwender.
Automerge ist ein CRDT, ein "konfliktfrei replizierter Datentyp", quasi eine "versionskontrollierte Datenstruktur". Mit Automerge können Sie Änderungen an Daten aufzeichnen und sie dann an anderen Stellen wiedergeben, wobei an jeder Stelle zuverlässig das gleiche Ergebnis erzielt wird. Es unterstützt JSON-ähnliche Daten, einschließlich beliebig verschachtelter Maps und Arrays, sowie einige fortgeschrittenere Datentypen wie Text und numerische Zähler.
Frühere Versionen von Automerge waren in reinem JavaScript implementiert. Die ersten Implementierungen waren theoretisch solide, aber zu langsam und verbrauchten zu viel Speicher für die meisten Produktionsanwendungen. Außerdem ist die Unterstützung von JavaScript auf mobilen Geräten und eingebetteten Systemen begrenzt.
Das Ziel für Automerge 2.0 war, eine schnelle und effiziente Version zu schaffen, die überall verfügbar ist: im Browser, auf jedem mobilen Gerät und sogar auf Mikrocontrollern wie dem ESP32. Um dies zu erreichen wurde Automerge 2.0 in Rust neu geschrieben. Dazu kommen plattformspezifische Wrapper, um es in jedem Sprach-Ökosystem verfügbar zu machen. Auf diese Weise soll die CRDT-Kernlogik auf allen Plattformen identisch sein und alle gemeinsam von neuen Funktionen und Optimierungen profitieren.
Für JavaScript-Anwendungen bedeutet dies, dass Rust zu WebAssembly kompiliert und ein JavaScript-Wrapper bereitgestellt wird, der die bestehende Automerge-API beibehält. Rust-Anwendungen können die Bibliothek natürlich auch direkt verwenden, und wir stellen sicher, dass es so einfach wie möglich ist, die Unterstützung in anderen Sprachen mit gut durchdachten Traits und einem umfassenden Satz von C-Bindings zu implementieren.
Alles Weitere zu Automerge 2.0 sowie den geplanten Ausbau erfahren Sie auf dieser Webseite.


Das könnte Sie auch interessieren