Ben Johnson, avtor NoSQL shranjevanja BoltDB, je predstavil projekt Litestream, ki zagotavlja razširitev za organizacijo replikacije podatkov v SQLite. Litestream ne zahteva sprememb v SQLite in lahko deluje z vsemi aplikacijami, ki uporabljajo to knjižnico. Replikacijo izvaja posebej zagnan ozadjski proces, ki spremlja spremembe v datotekah z bazo podatkov in jih prenaša v drugo datoteko ali zunanje shrambo. Koda projekta je napisana v jeziku Go in se distribuira pod licenco Apache 2.0.
Vse interakcije z bazo podatkov potekajo preko standardnega API-ja SQLite, torej Litestream neposredno ne posega v delovanje, ne vpliva na zmogljivost in ne more poškodovati vsebine baze podatkov, kar ga odlikuje v primerjavi z rešitvami, kot sta Rqlite in Dqlite. Spremembe se spremljajo prek vključitve WAL dnevnika ("Write-Ahead Log") v SQLite. Da bi prihranili prostor v shrambi, sistem občasno agregira tok sprememb v rezine (snapshot-e) baze podatkov, nad katerimi se začnejo nabirati druge spremembe. Čas ustvarjanja rezin je določen v nastavitvah, na primer, rezine se lahko oblikujejo enkrat na dan ali enkrat na uro.
Kot glavne aplikacije Litestream omenja organizacijo varnega rezervnega kopiranja in obremenitev branja na več strežnikov. Podprt je prenos toka sprememb v shrambe Amazon S3, Azure Blob Storage, Backblaze B2, DigitalOcean Spaces, Scaleway Object Storage, Google Cloud Storage, Linode Object Storage ali na katerikoli zunanji gostitelj, ki podpira protokol SFTP. V primeru poškodbe vsebine glavne baze podatkov se lahko varnostna kopija obnovi iz stanja, ki ustreza določenemu trenutku, določenemu spremebi, zadnji spremembi ali določenemu rezinu.
Izvor: opennet.ru
