syncular – Offline-first SQL-Sync

Okay, mal ehrlich: Ich hab da erstmal ganz viel „offline-first“ gehört und halb erwartet, dass mich wieder irgendein Hype-Schlagwort begrüßt. Aber dann bin ich auf syncular auf GitHub gestoßen – und das Ding weckt tatsächlich mein Interesse. Weil die Leute hinter dem Projekt sich einer Frage stellen, die mich in diesem Bereich schon lange neugierig macht: Wie schafft man es eigentlich, dass eine App offline weiterfunktioniert, ohne dass man spätestens bei der ersten Abfrage auf dem Netzwerk sitzt?

Die Idee ist simpel und ziemlich elegant. Jeder Client bekommt eine echte SQLite-Datenbank lokal hingelegt. Der Server hält dagegen einen Commit-Log, der die Reihenfolge der Änderungen verwaltet – also eine server-autoritative Datenebene, die bestimmt, was am Ende zählt. Login, Join, Aggregation und Index-Abfragen laufen dann als ganz normales lokales SQL, ohne dass überhaupt ein Netzwerk-Request dafür nötig wäre. Heißt im Klartext: Solange du die Daten lokal hast, kannst du die Kernfunktionen der App auch ohne Verbindung nutzen. Für mich klingt das nach einer wirklich tabellenartigen Sache – im wörtlichen Sinne.

Die zwei Kern-Tracks sind übrigens TypeScript und Rust. Was genau wo passiert (also ob das Rust die Performance-Strecken übernimmt und TypeScript eher die Integration), das steht in der Meldung nicht im Detail drin. Da wird die Quelle etwas knapp. Ich will da nichts erfinden, also sag ich lieber ehrlich: Genau entschlüsseln konnte ich die Architektur aus dem Text nicht.

Was mich ein bisschen zurückhaltend macht, ist auch, dass der Text recht dünn ist. Es gibt zum Beispiel keine konkreten Zahlen – keine Sync-Latenzen, keine Datenmengen, nichts. Und „server-autorität“ klingt erstmal stark, aber die eigentliche Kohärenz-Frage bei Offline-Sync ist ja: Was passiert, wenn zwei Clients offline unterschiedlich schreiben? Da wäre ich gespannt, ob das Projekt da eine klare Konflikt-Strategie hat. Die gängigen Offline-Lösungen sind ja berüchtigt dafür, dass sie genau an dieser Stelle nerven.

Was ich dem Ganzen zugutehalte: Der Ansatz, lokales SQL als primäre Schnittstelle zu nehmen statt einer eigenen, abstrakten Sync-API, fühlt sich für Entwickler:innen sehr natürlich an. Wer schon einmal mit einer App gearbeitet hat, die im Flugzeugmodus in sich zusammenfällt, weiß, wie befreiend das sein kann. Ich habe auf jeden Fall eine Demo auf meine Liste gepackt – und wenn ich mehr weiß, erzähle ich euch davon.

Schreibe einen Kommentar