Ben Johnson, autorul stocării NoSQL BoltDB, a prezentat proiectul Litestream, care oferă un cadru pentru organizarea replicării datelor în SQLite. Litestream nu necesită modificări în SQLite și poate funcționa cu orice aplicație care utilizează această bibliotecă. Replicarea este gestionată de un proces de fundal care urmărește modificările din fișierele bazei de date și le transferă într-un alt fișier sau în stocare externă. Codul proiectului este scris în limbajul Go și este distribuit sub licența Apache 2.0.
Toată interacțiunea cu baza de date se realizează prin API-ul standard SQLite, adică Litestream nu interveni direct în funcționare, nu afectează performanța și nu poate deteriora conținutul bazei de date, ceea ce îl diferențiază favorabil de soluții precum Rqlite și Dqlite. Modificările sunt urmărite prin activarea jurnalului WAL („Write-Ahead Log”) în SQLite. Pentru a economisi spațiu de stocare, sistemul agregă periodic fluxul de modificări în instantanee ale bazei de date, pe care incep să se acumuleze alte modificări. Timpul de creare a instantaneelor este specificat în setări, de exemplu, se pot genera instantanee o dată pe zi sau o dată pe oră.
Printre principalele domenii de aplicare ale Litestream se numără organizarea copiilor de siguranță sigure și distribuția sarcinii de citire pe mai multe servere. Se suportă transferul fluxului de modificări în stocări Amazon S3, Azure Blob Storage, Backblaze B2, DigitalOcean Spaces, Scaleway Object Storage, Google Cloud Storage, Linode Object Storage sau pe orice host extern care suportă protocolul SFTP. În caz de deteriorare a conținutului bazei de date principale, copia de rezervă poate fi restaurată dintr-o stare corespunzătoare unui moment specific, unei modificări anume, ultimei modificări sau unei instantanee specificate.
Sursa: opennet.ro
