Ben Johnson, de auteur van de NoSQL-opslag BoltDB, heeft het project Litestream geïntroduceerd, dat een laag biedt voor het organiseren van gegevensreplicatie in SQLite. Litestream vereist geen wijzigingen in SQLite en kan werken met elke applicatie die deze bibliotheek gebruikt. Replicatie wordt uitgevoerd door een apart draaiend achtergrondproces dat wijzigingen in de databasebestanden bijhoudt en deze naar een ander bestand of externe opslag overbrengt. De code van het project is geschreven in Go en wordt verspreid onder de Apache 2.0-licentie.
Alle interactie met de database gebeurt via de standaard SQLite API, dat wil zeggen, Litestream mengt zich niet direct in de werking, beïnvloedt de prestaties niet en kan de inhoud van de database niet beschadigen, wat Litestream gunstig onderscheidt van oplossingen zoals Rqlite en Dqlite. Wijzigingen worden gevolgd door het inschakelen van de WAL-log ('Write-Ahead Log') in SQLite. Om opslagruimte te besparen, aggregeert het systeem periodiek de stroom van wijzigingen in snapshots van de database, waarop andere wijzigingen kunnen worden opgebouwd. De tijd voor het creëren van snapshots kan in de instellingen worden opgegeven, bijvoorbeeld, het is mogelijk om snapshots eens per dag of eens per uur te maken.
Als belangrijkste toepassingsgebieden voor Litestream worden genoemd het organiseren van veilige back-ups en het verdelen van de leeslast over meerdere. serversHet is mogelijk om de stroom van wijzigingen naar opslagplaatsen zoals Amazon S3, Azure Blob Storage, Backblaze B2, DigitalOcean Spaces, Scaleway Object Storage, Google Cloud Storage, Linode Object Storage of elke externe host die het SFTP-protocol ondersteunt, over te brengen. In geval van beschadiging van de inhoud van de primaire database kan een back-up worden hersteld naar de staat die overeenkomt met een bepaald tijdstip, een specifieke wijziging, de laatste wijziging of een opgegeven snapshot.
Bron: opennet.ru
