Ben Johnson, autor do armazenamento NoSQL BoltDB, apresentou o projeto Litestream, que fornece uma camada para organizar a replicação de dados no SQLite. O Litestream não requer alterações no SQLite e pode funcionar com quaisquer aplicativos que utilizem esta biblioteca. A replicação é realizada por um processo em segundo plano separado, que monitora as alterações nos arquivos do banco de dados e as transfere para outro arquivo ou para um armazenamento externo. O código do projeto está escrito na linguagem Go e é distribuído sob a licença Apache 2.0.
Toda a interação com o banco de dados é feita através da API padrão do SQLite, ou seja, o Litestream não interfere diretamente no funcionamento, não afeta o desempenho e não pode danificar o conteúdo do banco de dados, o que distingue o Litestream de soluções como Rqlite e Dqlite. As alterações são monitoradas através da ativação do log WAL ('Write-Ahead Log') no SQLite. Para economizar espaço de armazenamento, o sistema periodicamente agrega o fluxo de alterações em snapshots do banco de dados, sobre os quais começam a se acumular outras alterações. O tempo de criação dos snapshots é especificado nas configurações, por exemplo, é possível gerar snapshots uma vez por dia ou uma vez por hora.
As principais áreas de aplicação do Litestream incluem a organização de backups seguros e a distribuição da carga de leitura em vários servidores. O fluxo de alterações pode ser transferido para armazenamentos como Amazon S3, Azure Blob Storage, Backblaze B2, DigitalOcean Spaces, Scaleway Object Storage, Google Cloud Storage, Linode Object Storage ou para qualquer host externo que suporte o protocolo SFTP. Em caso de dano ao conteúdo do banco de dados principal, um backup pode ser restaurado para um estado correspondente a um determinado momento, alteração específica, última alteração ou snapshot definido.
Fonte: opennet.ru
