Ben Johnson, författaren till NoSQL-lagringslösningen BoltDB, har presenterat projektet Litestream, som erbjuder ett tillägg för att organisera datoreplikering i SQLite. Litestream kräver inga ändringar i SQLite och kan fungera med alla applikationer som använder detta bibliotek. Replikeringen hanteras av en separat körande bakgrundsprocess, som övervakar ändringar i databasfiler och överför dem till en annan fil eller ett externt lagringsutrymme. Projektkoden är skriven i Go och distribueras under Apache 2.0-licensen.
All interaktion med databasen sker genom det inbyggda API:et för SQLite, dvs. Litestream blandar sig inte direkt i arbetsprocessen, påverkar inte prestandan och kan inte skada databasinnehållet, vilket gör Litestream fördelaktigt jämfört med lösningar som Rqlite och Dqlite. Ändringarna övervakas genom att aktivera WAL-loggen ("Write-Ahead Log") i SQLite. För att spara utrymme i lagret aggregerar systemet periodiskt flödet av ändringar till snapshots av databasen, ovanpå vilka andra ändringar börjar samlas. Tiden för skapande av snapshots anges i inställningarna; till exempel kan snapshots skapas en gång om dagen eller en gång i timmen.
De främsta användningsområdena för Litestream inkluderar organisering av säker backup och lastbalansering av läsning på flera. servrar. Flödet av ändringar stöds för överföring till lagringslösningar som Amazon S3, Azure Blob Storage, Backblaze B2, DigitalOcean Spaces, Scaleway Object Storage, Google Cloud Storage, Linode Object Storage eller till vilken extern värd som helst som stöder SFTP-protokollet. Vid skada på innehållet i den primära databasen kan en backup återställas till ett tillstånd som motsvarar en angiven tidpunkt, en specifik ändring, den senaste ändringen eller en angiven snapshot.
Källa: opennet.ru
