Бен Джонсон (Ben Johnson), автор на NoSQL хранилището BoltDB, представи проекта Litestream, който осигурява надстройка за организиране на репликацията на данни в SQLite. Litestream не изисква промени в SQLite и може да работи с всякакви приложения, използващи тази библиотека. Репликацията се извършва от отделно изпълняващ се фонова процес, който проследява промените в файловете с базата данни и ги прехвърля в друг файл или във външно хранилище. Кодът на проекта е написан на езика Go и се разпространява под лиценция Apache 2.0.
Всички взаимодействия с базата данни се извършват чрез стандартния API на SQLite, т.е. Litestream директно не се намесва в работата, не влияе на производителността и не може да повреди съдържанието на базата данни, което значително отличава Litestream от решения като Rqlite и Dqlite. Промените се проследяват чрез активиране на WAL журнала ("Write-Ahead Log") в SQLite. За икономия на място в хранилището, системата периодично агрегира потока от промени в срязвания (снапшоти) на базата данни, върху които започват да се натрупват други промени. Времето за създаване на срязванията се задава в настройките, например, могат да се формирват срязвания веднъж на ден или веднъж на час.
Като основни области на приложение на Litestream се споменава организиране на безопасно резервно копие и разпределение на натоварването при четене на няколко сървъри. Поддържа се прехвърляне на потока от промени в хранилища Amazon S3, Azure Blob Storage, Backblaze B2, DigitalOcean Spaces, Scaleway Object Storage, Google Cloud Storage, Linode Object Storage или на всеки външен хост, който поддържа протокол SFTP. В случай на повреда на съдържанието на основната база данни, резервното копие може да бъде възстановено от състояние, съответстващо на указан момент от време, определена промяна, последната промяна или зададено срязване.
Източник: opennet.ru
