Publication de rqlite 6.0, une base de données distribuée tolérante aux pannes basée sur SQLite.

La version 6.0 de la base de données distribuée rqlite a été présentée, utilisant SQLite comme moteur de stockage et permettant l'organisation d'un cluster de dépÎts synchronisés. Parmi les caractéristiques de rqlite, on note la simplicité d'installation, de déploiement et de maintenance d'un stockage distribué tolérant aux pannes, similaire à etcd et Consul, mais utilisant un modÚle relationnel pour le travail avec les données au lieu d'un format clé/valeur. Le code du projet est écrit en Go et est distribué sous licence MIT.

Pour maintenir tous les nƓuds dans un Ă©tat synchronisĂ©, l'algorithme de consensus Raft est utilisĂ©. Rqlite utilise la bibliothĂšque SQLite originale et le driver standard go-sqlite3, sur lesquelles repose une couche qui traite les requĂȘtes des clients, effectue la rĂ©plication vers d'autres nƓuds et suit l'atteinte du consensus sur le choix du nƓud leader.

Les modifications dans la base de donnĂ©es peuvent ĂȘtre apportĂ©es uniquement par le nƓud dĂ©signĂ© comme leader, mais les connexions pour les opĂ©rations d'Ă©criture peuvent Ă©galement ĂȘtre dirigĂ©es vers d'autres nƓuds du cluster, qui retourneront l'adresse du leader pour rĂ©itĂ©rer la requĂȘte (la prochaine version promet d'ajouter un passage automatique Ă  travers le leader). L'accent est mis sur la tolĂ©rance aux pannes, donc le SGBD ne se dĂ©veloppe que pour les opĂ©rations de lecture, tandis que les opĂ©rations d'Ă©criture reprĂ©sentent un goulot d'Ă©tranglement. Il est possible de lancer un cluster rqlite Ă  partir d'un seul nƓud, et cette solution peut ĂȘtre utilisĂ©e pour organiser l'accĂšs Ă  SQLite via HTTP sans fournir de tolĂ©rance aux pannes.

Les donnĂ©es SQLite sur chaque nƓud ne sont pas stockĂ©es dans un fichier, mais en mĂ©moire. Au niveau de la couche d'implĂ©mentation du protocole Raft, un journal de toutes les commandes SQLite qui entraĂźnent des modifications de la base de donnĂ©es est conservĂ©. Ce journal est utilisĂ© lors de la rĂ©plication (rĂ©plication au niveau de la lecture des requĂȘtes sur d'autres nƓuds), du lancement d'un nouveau nƓud ou de la rĂ©cupĂ©ration aprĂšs une perte de connectivitĂ©. Pour rĂ©duire la taille du journal, une compression automatique est appliquĂ©e, qui est lancĂ©e aprĂšs un certain nombre de modifications et entraĂźne la sauvegarde sur disque d'un instantanĂ©, Ă  partir duquel un nouveau journal commence Ă  ĂȘtre tenu (l'Ă©tat de la base de donnĂ©es en mĂ©moire est identique Ă  l'instantanĂ© + le journal des modifications accumulĂ©es).

Caractéristiques de rqlite :

  • SimplicitĂ© de dĂ©ploiement du cluster, sans nĂ©cessiter d'installation sĂ©parĂ©e de SQLite.
  • PossibilitĂ© d'obtenir rapidement un stockage SQL rĂ©pliquĂ©.
  • PrĂȘt Ă  ĂȘtre utilisĂ© dans des projets de production.
  • La disponibilitĂ© d'une API HTTP(S) permettant de mettre Ă  jour les donnĂ©es en mode batch et de dĂ©terminer le nƓud principal du cluster. Une interface en ligne de commande est Ă©galement fournie, ainsi que la possibilitĂ© d'utiliser diverses bibliothĂšques clientes conçues pour SQLite.
  • DisponibilitĂ© d'un service pour identifier d'autres nƓuds, permettant de crĂ©er des clusters de maniĂšre dynamique.
  • Support du chiffrement des Ă©changes de donnĂ©es entre les nƓuds.
  • PossibilitĂ© de configurer le niveau de vĂ©rification de l'actualitĂ© et de la cohĂ©rence des donnĂ©es lors de la lecture.
  • PossibilitĂ© optionnelle de connecter des nƓuds en mode lecture seule, ne participant pas Ă  la dĂ©termination du consensus et utilisĂ©s pour augmenter la scalabilitĂ© du cluster pour les opĂ©rations de lecture.
  • Support d'une forme propre des transactions basĂ©e sur la fusion de commandes dans une seule requĂȘte (les transactions basĂ©es sur BEGIN, COMMIT, ROLLBACK, SAVEPOINT et RELEASE ne sont pas supportĂ©es).
  • Support de la crĂ©ation de sauvegardes Ă  chaud.

La nouvelle version apporte des modifications architecturales significatives visant Ă  amĂ©liorer la fiabilitĂ© du cluster grĂące Ă  l'optimisation du routage des requĂȘtes de lecture et d'Ă©criture vers les nƓuds appropriĂ©s du cluster. Les nƓuds rqlite peuvent dĂ©sormais multiplexe entre plusieurs connexions logiques en utilisant des connexions TCP Ă©tablies entre les nƓuds par le protocole Raft. Si une requĂȘte nĂ©cessite les droits du nƓud principal mais est envoyĂ©e Ă  un nƓud secondaire, le nƓud secondaire peut dĂ©terminer l'adresse du leader et la transmettre au client, sans effectuer de calcul de consensus via le protocole Raft.

Le changement a Ă©galement permis de se dĂ©barrasser d'un composant distinct pour la synchronisation des mĂ©tadonnĂ©es et d'Ă©liminer le traitement sĂ©parĂ© de l'Ă©tat Raft et des mĂ©tadonnĂ©es. Les nƓuds secondaires dirigent dĂ©sormais les requĂȘtes vers le nƓud principal uniquement si nĂ©cessaire, lorsqu'il leur faut connaĂźtre l'adresse du nƓud principal. L'API propose la possibilitĂ© d'obtenir des informations sur l'Ă©tat des autres nƓuds du cluster. Une commande « .sysdump » a Ă©tĂ© ajoutĂ©e Ă  l'interface de ligne de commande.

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster