Ben Johnson, autor NoSQL-bazy danych BoltDB, zaprezentował projekt Litestream, który dostarcza nakładkę do organizacji replikacji danych w SQLite. Litestream nie wymaga wprowadzania zmian w SQLite i może działać z dowolnymi aplikacjami korzystającymi z tej biblioteki. Replikacją zajmuje się oddzielny proces w tle, który śledzi zmiany w plikach bazy danych i przenosi je do innego pliku lub zewnętrznego magazynu. Kod projektu napisany jest w języku Go i jest rozpowszechniany na licencji Apache 2.0.
Cała interakcja z bazą danych odbywa się poprzez standardowe API SQLite, co oznacza, że Litestream nie ingeruje bezpośrednio w działanie, nie wpływa na wydajność i nie może uszkodzić zawartości bazy danych, co wyróżnia Litestream na tle rozwiązań takich jak Rqlite czy Dqlite. Zmiany są śledzone poprzez włączenie dziennika WAL („Write-Ahead Log”) w SQLite. Aby zaoszczędzić miejsce w magazynie, system okresowo agreguje strumień zmian w migawki bazy danych, na których zaczynają gromadzić się inne zmiany. Czas tworzenia migawek określa się w ustawieniach, na przykład można tworzyć migawki raz dziennie lub raz na godzinę.
Podstawowe obszary zastosowania Litestream obejmują organizację bezpiecznego backupu oraz rozkład obciążenia odczytu na kilka serwerów. Wspierane jest przenoszenie strumienia zmian do magazynów Amazon S3, Azure Blob Storage, Backblaze B2, DigitalOcean Spaces, Scaleway Object Storage, Google Cloud Storage, Linode Object Storage lub na dowolny zewnętrzny host obsługujący protokół SFTP. W przypadku uszkodzenia zawartości głównej bazy danych, kopia zapasowa może zostać przywrócona do stanu odpowiadającego wskazanemu momentowi czasowemu, określonemu zmianie, ostatniej zmianie lub określonej migawce.
Źródło: opennet.ru
