Бен Джонсон (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. В случае повреждения содержимого основной БД резервная копия может быть восстановлена из состояния, соответствующего указанному моменту времени, определённому изменению, последнему изменению или заданному срезу.
|