Litestream introduit avec la mise en œuvre du système de réplication pour SQLite

Ben Johnson, auteur du stockage BoltDB NoSQL, a présenté le projet Litestream, qui fournit un module complémentaire pour organiser la réplication des données dans SQLite. Litestream ne nécessite aucune modification de SQLite et peut fonctionner avec n'importe quelle application utilisant cette bibliothèque. La réplication est effectuée par un processus en arrière-plan exécuté séparément qui surveille les modifications apportées aux fichiers de la base de données et les transfère vers un autre fichier ou vers un stockage externe. Le code du projet est écrit en Go et distribué sous la licence Apache 2.0.

Toutes les interactions avec la base de données s'effectuent via l'API SQLite standard, c'est-à-dire Litestream n'interfère pas directement avec le fonctionnement, n'affecte pas les performances et ne peut pas endommager le contenu de la base de données, ce qui distingue Litestream des solutions telles que Rqlite et Dqlite. Les modifications sont suivies en activant le journal WAL (« Write-Ahead Log ») dans SQLite. Pour économiser de l'espace de stockage, le système regroupe périodiquement le flux de modifications en tranches de base de données (instantanés), au-dessus desquelles d'autres modifications commencent à s'accumuler. L'heure de création des tranches est indiquée dans les paramètres ; par exemple, vous pouvez créer des tranches une fois par jour ou une fois par heure.

Les principaux domaines d'application de Litestream incluent l'organisation de sauvegardes sécurisées et la répartition de la charge de lecture sur plusieurs serveurs. Il prend en charge le déplacement du flux de modifications vers Amazon S3, Azure Blob Storage, Backblaze B2, DigitalOcean Spaces, Scaleway Object Storage, Google Cloud Storage, Linode Object Storage ou tout hôte externe prenant en charge le protocole SFTP. Si le contenu de la base de données principale est endommagé, la copie de sauvegarde peut être restaurée à partir d'un état correspondant à un instant spécifié, à une modification spécifique, à la dernière modification ou à une tranche spécifiée.

Source: opennet.ru

Ajouter un commentaire