Société Canonical sortie significative du projet (SQLite distribué), un moteur SQL embarqué compatible avec SQLite, supportant la réplication des données, la récupération automatique après défaillance et la résilience via la distribution des gestionnaires sur plusieurs nœuds. La base de données est implémentée sous forme de bibliothèque C intégrée aux applications et sous licence Apache 2.0 (SQLite original est fourni dans le domaine public). Des liaisons sont disponibles pour le langage .
La bibliothèque est une surcouche à la base de code SQLite existante, ajoutant le support d'un protocole réseau pour connecter plusieurs instances d'application exécutées sur différents hôtes. L'application construite avec Dqlite peut fonctionner comme un cluster autonome résilient, sans dépendance à des bases de données externes. En pratique, Dqlite est utilisé par Canonical dans le système de gestion des conteneurs . Parmi les domaines d'application de la bibliothèque, on mentionne également la création de dispositifs IoT résilients et de gestionnaires dans des systèmes
.
Pour assurer la cohérence lors de la réplication des données, une méthode de consensus basée sur l'algorithme , utilisé dans des projets tels que etcd, RethinkDB, CockroachDB et OpenDaylight. Dans Dqlite, une implémentation asynchrone propre est appliquée , écrite en C. Pour le multiplexage des connexions et l'organisation du lancement des coroutines, des bibliothèques prêtes à l'emploi sont utilisées et .
Comparé à un projet similaire , Dqlite offre un support complet des transactions, peut se connecter à tous les projets en C, permet d'utiliser la fonction time() et applique la réplication basée sur les images plutôt que sur la traduction d'expressions SQL.
Caractéristiques de Dqlite :
- Exécution de toutes les opérations disque et réseau en mode asynchrone ;
- Présence d'un jeu de tests pour valider l'intégrité des données ;
- Faible consommation de mémoire et échange efficace de données sur le réseau ;
- Stockage permanent sur disque de la base de données et du journal des transactions (avec possibilité de mise en cache en mémoire) ;
- Récupération rapide après défaillance ;
- Client CLI stable en Go, pouvant être utilisé pour initialiser la base de données, configurer la réplication et connecter/déconnecter des nœuds ;
- Support des architectures ARM, X86, POWER et IBM Z ;
- L'implémentation de l'algorithme Raft est optimisée pour minimiser les latences lors de la validation des transactions.
Source : opennet.ru
