Ben Johnson, der Autor des NoSQL-Speichers BoltDB, hat das Projekt Litestream vorgestellt, das eine Erweiterung zur Organisation der Datenreplikation in SQLite bereitstellt. Litestream erfordert keine Änderungen an SQLite und kann mit jeder Anwendung arbeiten, die diese Bibliothek nutzt. Die Replikation wird von einem separaten Hintergrundprozess durchgeführt, der die Änderungen in den Datenbankdateien verfolgt und sie in eine andere Datei oder in einen externen Speicher überträgt. Der Code des Projekts ist in Go geschrieben und wird unter der Lizenz Apache 2.0 verteilt.
Alle Interaktionen mit der Datenbank erfolgen über die standardmäßige SQLite-API, d.h. Litestream greift nicht direkt ein, beeinflusst nicht die Performance und kann den Inhalt der Datenbank nicht beschädigen, was Litestream vorteilhaft von Lösungen wie Rqlite und Dqlite unterscheidet. Änderungen werden durch das Aktivieren des WAL-Logs („Write-Ahead Log“) in SQLite verfolgt. Um Speicherplatz zu sparen, aggregiert das System regelmäßig den Änderungsstrom in Schnappschüsse der Datenbank, auf denen weitere Änderungen gespeichert werden. Die Erstellung von Schnappschüssen kann in den Einstellungen festgelegt werden, z.B. können Schnappschüsse einmal am Tag oder einmal pro Stunde erstellt werden.
Die Hauptanwendungsbereiche von Litestream umfassen die sichere Sicherung und die Lastverteilung für Lesevorgänge auf mehrere Server. Es wird die Übertragung von Änderungsströmen zu Speichern wie Amazon S3, Azure Blob Storage, Backblaze B2, DigitalOcean Spaces, Scaleway Object Storage, Google Cloud Storage, Linode Object Storage oder auf jeden externen Host unterstützt, der das SFTP-Protokoll unterstützt. Im Falle einer Beschädigung des Inhalts der Hauptdatenbank kann die Sicherung aus einem Zustand, der dem angegebenen Zeitpunkt, einer bestimmten Änderung, der letzten Änderung oder einem festgelegten Snapshot entspricht, wiederhergestellt werden.
Quelle: opennet.ru
