FR 3099834 A1 20210212 FR 1909019 A 20190806 Description Titre de l'invention : Maintien de la cohérence des données entre des noeuds de calcul d'une architecture informatique distribuée [0001] La présente invention concerne un procédé et un système de maintien de la cohérence des données à travers une pluralité de noeuds de calcul d'une architecture informatique distribuée. Plus spécifiquement, la présente invention concerne un procédé de maintien de la cohérence des données entre des ensembles de données dans une base de données maître d'un noeud de calcul maître et les ensembles de données correspondants stockés dans une base de données de réplication d'au moins un noeud de calcul de réplication. [0002] Au cours des quelques dernières années, la distribution des services/applications via une plateforme informatique dématérialisée est devenue une chose ordinaire. L'avantage principal de l'informatique dématérialisée est qu'elle supprime la plupart des soucis concernant le matériel physique et/ou aux ressources logicielles, permettant ainsi aux utilisateurs dc se concentrer sur le coeur de leur activité plutôt que de se préoccuper dc la maintenance et du déploiement de centres de données. Le modèle d'informatique dématérialisée est basé sur le l'octroi, à un utilisateur, d'un accès à des ressources informatiques physiques sur une base payante permettant à l'utilisateur de payer les ressources informatiques allouées à un ou plusieurs serveurs d'application pour faire fonctionner les services/applications demandés sur la plateforme informatique dématérialisée. Au fur et à mesure que la demande pour les applications/ services gérés de manière dématérialisée évolue, les ressources spécifiques sous-jacentes peuvent être dimensionnées de façon dynamique pour satisfaire les besoins informatiques des services/applications dématérialisé(e)s à tout moment donné. [0003] Une plateformc informatique dématérialisée est généralement distribuée parmi une pluralité dc noeuds dc calcul, par ex. des centres de données. Chaque noeud de calcul peut être configure pour faire fonctionner au moins une partie d'un service et/ou application demandé(es) par un client, qui peut impliquer la manipulation de grandes quantités de données, par ex. le tri, l'assemblage, la combinaison et similaire pour générer une réponse à une demande client. Pour de nombreuses applications dématérialisées, il peut être nécessaire d'effectuer la manipulation des données à chaque noeud de calcul pour générer une réponse rapide à la demande client. La mise en oeuvre de la manipulation de données au niveau de chaque noeud de calcul peut nécessiter l'utilisation de données fraîches qui sont des données reflétant les dernières modifications, afin de s'assurer que la réponse transmise au client reflète les dernières mises à jour de données. Par exemple, lors du calcul de la disponibilité des vols en réponse à une demande de recherche de voyage d'un client, il est important que les données se 2 rapportant au calcul aient été mises à jour avec les dernières modifications, s'assurant ainsi de la précision des résultats transmis au client. [0004] Les approches actuelles de maintien de la fraîcheur des données dans une ar- chitecture distribuée varient largement. Un procédé bien connu de maintien de la fraîcheur et de la cohérence des données est l'approche force qui implique la prise d'un instantané de l'intégralité de l'ensemble de données à répliquer, divisé en blocs, et la transmission pour répliquer les différents noeuds de réplication. Cependant, une telle approche implique la réplication complète de l'ensemble de données qui augmenterait le volume de données sur le réseau et la latence lors de la réplication des données vers les noeuds de réplication correspondants. Par conséquent, une optimisation des mises à jour périodiques consiste en la détection des blocs qui ont changé et en la transmission de ceux-ci uniquement. [0005] Une autre approche de réplication des données entre les noeuds est connue comme la réplication de la base de données à maîtres multiples, qui tire parti du journal d'évènements de modification de base de données entre les noeuds informatiques dans une architecture distribuée. Chaque changement détecté est transmis sous la forme d'un message aux autres noeuds de calcul pour réplication. Cependant, le message transmis a un surdéhit important à mesure qu'il contient, en plus de la modification des bases de données, la clé de l'élément modifié, ainsi que le format (type) des informations transmises, de sorte que le noeud de calcul de réception peut traiter chaque modification individuelle, menant à une faible efficacité de transmission du réseau. [0006] Une autre approche pour la réplication de données est connue sous le nom d'approche optimisée de latence de centre de données INTRA impliquant un schéma de sérialisation tel qu'un tampon de protocole Google. Ces schémas visent à transmettre des réseaux éventuellement extrêmement grands (mégadonnées de téraoctets) de structures de données exactement identiques (tous les paquets ont le même format) à travers des processus et des machines INTRA-centre de données. Cependant, les schémas de ces réalisations sont moins flexibles lorsqu'il s'agit d'ensembles de données contenant des champs de données de tailles de données différentes. [0007] Par conséquent, il n'est pas nécessaire d'identifier une solution pour répliquer les données vers différents noeuds de calcul, qui est flexible concernant le format des données et la taille des données à répliquer, et qui est efficace en termes de coûts de transmission du réseau et de latence. [0008] Un objet de la présente invention consiste à fournir une solution qui surmonte ces in- convénients des solutions de l'ait antérieur. Plus spécifiquement, l'objet de la présente invention est de fournir une solution pour répliquer les données entre les noeuds de calcul de manière flexible et efficace pour le réseau. [0009] L'objet de la présente invention est atteint, selon l'invention, avec le système et le 3 procédé montrant les caractéristiques techniques des aspects ci-dessous. [0010] Selon un premier aspect de la présente invention, un procédé est fourni pour maintenir la cohérence des données entre les ensembles de données stockés dans une hase de données maître d'un noeud de calcul maître et les ensembles de données correspondant stockés dans une hase de données de réplication d'au moins un noeud de calcul de réplication, dans lequel à chaque fois qu'une version mise à jour d'un ensemble de données stocké est reçue, le noeud de calcul maître est configuré pour mettre à jour un ensemble de données correspondant stocké dans la hase de données maître et transmettre les données de réplication concernant la version de l'ensemble de données mis à jour audit au moins un noeud de calcul de réplication pour réplication, chaque ensemble de données comprenant une pluralité de champs de données agencé selon une disposition prédéterminée définie selon une structure de représentation de l'ensemble de données (DSR), qui est stockée avec chaque ensemble de données dans les hases de données maître et de réplication, le procédé comprenant : le traitement au niveau du noeud de calcul maître au moyen d'un module de traitement maître d'une version mise àjour d'un ensemble de données stocké, l'étape de traitement comprenant : la réception au moyen d'un moteur de réception de données, de la version mise àjour d'un ensemble de données stocké dans la hase de données maître ; le traitement de la version de l'ensemble de données mise àjour au moyen d'un moteur de traitement pour générer la structure DSR mise à jour ; l'analyse de la structure DSR mise à jour au moyen d'un moteur d'analyse pour extraire les champs de données de la version de l'ensemble de données mise à jour ; la classification au moyen d'un moteur de classification de champs de données extraits dans des champs de données stables, comprenant des valeurs de données qui modifient un premier taux de fréquence, et des champs de données volatils, comprenant des valeurs de données qui modifient un deuxième taux de fréquence, qui est plus élevé que le premier taux de fréquence, la génération au moyen d'un moteur de vecteur binaire, un vecteur binaire stockant les valeurs de données extraites des champs de données volatils ; la préparation au moyen d'un moteur de préparation de données des données à répliquer au niveau dudit au moins un noeud de calcul de réplication, les données de réplication comprenant le vecteur binaire généré ; et la transmission au moyen d'un moteur de transmission de données des données de réplication audit au moins un noeud de calcul de réplication ; et la réplication au niveau dudit au moins un noeud de calcul de réplication au moyen d'un module de réplication des données de réplication, l'étape de réplication comprenant : la réception au moyen d'un moteur de réception de données de réplication des données de réplication ; le traitement au moyen d'un moteur de traitement de réplication des données de réplication pour extraire les valeurs de données à répliquer ; la sélection au moyen d'un moteur de sélection DSR d'une structure DSR de réplication correspondant aux données de réplication ; et la réplication au moyen d'un moteur de réplication, basé sur la structure DSR de réplication sélectionnée, des valeurs de données extraites des données de réplication dans l'ensemble de données de réplication correspondant. [0011] On a trouvé que dans la majorité des cas, si un ensemble de données comprend à la fois des champs de données stables et des champs de données volatils, les valeurs de données des champs de données volatils changeraient plus vite que les valeurs de données des champs de données stables. En conséquence, dans de nombreux cas, il peut être plus économique, en termes de coût de transmission de données de réseau, de transmettre uniquement les valeurs de données de l'ensemble de données qui peut avoir changé par rapport à une version antérieure, plutôt que l'intégralité de l'ensemble des données. Cette technique requiert que le type de chaque champ de données dans l'ensemble de données, qu'il soit stable ou volatil, soit correctement identifié. L'identification des types de champs de données peut s'effectuer en générant une structure DSR, qui fournit des informations sur la disposition des champs de données dans l'ensemble de données. Les informations dans la structure DSR peuvent être utilisées par un moteur de classification pour classer les champs de données dans stables ou volatils. Le moteur de classification peut utiliser une gamme de techniques de traitement de données, par ex. l'Apprentissage automatique, associé à des données historiques pour déterminer la vitesse à laquelle les valeurs de données de chaque champ de données dans l'ensemble de données changent clans le temps, et par conséquent classer les champs de données clans des champs de données volatils ou stables. Les valeurs de données des champs de données volatils changeraient à une vitesse plus élevée que les valeurs de données des champs stables. Les valeurs de données des champs de données volatils sont extraites et stockées dans un vecteur binaire Le vecteur binaire est inclus, ou au moins partiellement inclus, dans les données de réplication à transmettre audit au moins un noeud de calcul de réplication. Au niveau de chaque noeud de calcul de réplication, les données de réplication, qui peuvent inclure le vecteur binaire et/ou d'autres informations, sont traitées, et les valeurs de données à répliquer, sont extraites. Pour chaque donnée de réplication l'ensemble des données correspondant est identifié, et avec l'utilisation de la structure DSR de réplication, les valeurs de données extraites des données de réplication sont répliquées clans les champs de données correspondants. Dans le contexte de la présente invention, l'ensemble de données DSR peut être utilisé comme clé de sérialisation/ désérialisations pour les données de réplication, par ex. les données stockées dans la structure de vecteur binaire. Un des avantages de l'approche de réplication proposée est qu'en transmettant, au moins dans la plupart des cas, uniquement les changements apparus dans les champs de données volatils plutôt que dans l'intégralité de l'ensemble des données, il est possible de réduire le volume de données transmises sur le réseau, en réduisant ainsi le coût du réseau associé, tout en maintenant la cohérence et la fraîcheur des données entre le noeud de calcul maître et au moins un des noeuds de calcul de réplication. Dans les cas où il existe des changements dans la structure DSR, par ex. suppression/insertion de champs de données dans l'ensemble de données, et/ou modifications dans les champs de données stables et il peut être exigé de transmettre l'intégralité de l'ensemble des données et la structure DSR correspondante pour réplication dans ledit au moins un noeud de calcul de réplication. [0012] Selon des modes de réalisation, le vecteur binaire est généré par concaténation des valeurs de données des champs de données volatils. Les valeurs de données concaténécs sont liées ensemble en une chaîne de données qui forme le vecteur binaire, réduisant ainsi la taille des données à transmettre sur le réseau. De plus, la concaténation des valeurs de données des champs volatils peut donner lieu à une compression plus efficace du vecteur binaire, qui peut par ailleurs réduire la taille des données à transmettre sur le réseau. [0013] Selon des modes de réalisation, chaque champ de données volatil stocke une valeur de donnée d'une taille de données prédéterminée représentée par un certain nombre de bits. La structure DSR comprend des informations concernant la taille des données de chaque champ de données volatil et/ou stable. La taille des données de chaque champ de données volatil peut être utilisée pour calculer la longueur maximum du vecteur binaire De plus, la taille des données peut être utilisée comme un marqueur d'identification pour identifier les valeurs de données correspondant aux différents champs de données volatils. [0014] Selon des modes de réalisation, le vecteur binaire est configuré pour stocker en séries les bits représentant la valeur de donnée de chaque champ de donnée volatil. Le vecteur binaire est configuré pour stocker les bits représentant la valeur de donnée de chaque champ de donnée en série, c.-à-d. un bit après l'autre, ce qui peut par ailleurs améliorer la compression, puisque cela n'exige aucun formatage, et réduit les coûts de transmission du réseau. [0015] Selon des modes de réalisation, le vecteur binaire est configuré pour stocker les valeurs de données des champs de données volatils dans l'ordre défini dans la structure DSR pour l'ensemble des données correspondantes. En tant que telle, la structure DSR pour chaque ensemble de données peut être utilisée comme une clé de sérialisation 6 dans le noeud de calcul maître lorsqu'elle génère le vecteur binaire et/ou les données de réplication, et/ou comme une clé de désérialisation lorsqu'elle réplique les données extraites des données de réplication dans ledit au moins un noeud de calcul. Parce que la structure DSR est stockée avec l'ensemble de données correspondant dans le noeud maître et au moins un noeud de calcul de réplication, elle ne doit pas être transmise avec les données de réplication. Par conséquent, l'approche de réplication proposée peut par ailleurs contribuer à réduire les données à transmettre sur le réseau. [0016] Selon des modes de réalisation, les données de réplication sont compressées au moyen d'un moteur de compression du moteur de transmission de données avant d'être transmise audit au moins un noeud de calcul de réplication, où elles sont décompressées par un moteur de décompression du moteur de réception de données. La compression réduit la taille des données à transmettre, réduisant ainsi le coût du réseau associé. [0017] Selon des modes de réalisation, le moteur de compression est configuré pour sé- lectionner un procédé de compression provenant d'une hase de données de compression, le procédé de compression appliqué aux données de réplication est encodé et transmis audit au moins un noeud de réplication, où elles sont utilisées par le moteur de décompression pour sélectionner un procédé de décompression correspondant provenant d'une hase de données de décompression pour décompresser les données de réplication. De cette manière, le moteur de compression peut sélectionner le meilleur procédé de compression pour réduire la taille des données de réplication, réduisant ainsi le coût de transmission du réseau. Le procédé de compression peut être encodé dans le message de réplication, par ex. l'en-tête du message, de sorte que le moteur de décompression est capable d'identifier le procédé de décompression correspondant au procédé de compression appliqué. De cette manière on s'assure que la compression et la décompression de la réplication sont effectuées sans aucune perte d'information. Les bases de données de compression et de décompression peuvent être conservées par un utilisateur et mises à jour régulièrement. Chaque procédé de compression et de décompression peut être sélectionné selon des critères tels que la taille des données à répliquer, les contraintes de réseau, et similaires. [0018] Selon des modes de réalisation, les données à transmettre sont compressées binaire (RLE). L'algorithme de compression RLE est configuré pour encoder une séquence de bits identiques dans le vecteur binaire en tant que nombre représentant la longueur de la séquence. Dans certains cas, un symbole prédéterminé peut être utilisé pour dénoter un bit qui peut être sauté ou qui n'a pas changé. L'utilisation des symboles et la représentation en nombre de la longueur de la séquence de bits dans le vecteur binaire peut augmenter l'efficacité de l'algorithme de compression. [0019] Selon des modes de réalisation, les données de réplication se composent du vecteur binaire, ou du vecteur binaire et de la structure DSR. Selon le nombre de modifications 7 détectées entre la structure DSR précédente et la DSR mise à jour, il peut être utile de transmettre uniquement le vecteur binaire, ou le vecteur hinaire et la DRS mise à jour. Au niveau d'une réplication, le vecteur binaire et/ou la DRS mise à jour sont stockées dans la hase de données de réplication associée à l'ensemble de données correspondant. Le noeud de réplication peut être configure pour répliquer une pluralité d'ensembles de données. Chacun de la pluralité des ensembles de données peut être stocké dans une hase de données de réplication correspondante. Les données de réplication peuvent contenir des informations supplémentaires identifiant l'ensemble des données associé aux données de réplication. Par exemple, des bits supplémentaires peuvent être insérés dans le vecteur hinaire en précisant l'ensemble de données correspondant au niveau du noeud de réplication. [0020] Selon des modes de réalisation, dans lesquels le vecteur hinaire généré est encodé en tant que différence provenant d'un vecteur binaire généré pour une version antérieure de l'ensemble de données correspondant. La compression et la décompression garantissent que la taille des données transmises sur le réseau est réduite, réduisant ainsi les coûts de transmission du réseau associés. [0021] Selon des modes de réalisation, l'étape de génération d'un vecteur binaire comprend la comparaison de la structure DSR mise à jour avec la structure DSR de l'ensemble des données stocké dans la hase de données maître pour identifier des différences de disposition des champs de données dans l'ensemble de données mis à jour, et dans lequel lorsqu'une différence de disposition de l'ensemble de données est détectée l'intégralité de la structure DSR mise à jour et/l'intégralité de l'ensemble des données mis à jour est incluse dans les données de réplication. Avec le temps, la structure de l'ensemble des données peut changer ou expirer. De plus, avec le temps, les valeurs de données des champs de données stables peuvent également changer. Par conséquent, lorsque des changements sont détectés au moins la DRS de l'ensemble des données mis à jour est transmise avec le vecteur binaire audit au moins un de calcul de réplication. L'intégralité de l'ensemble de données mis à jour peut également être transmis pour réplication dans ledit au moins un noeud de calcul de réplication, par ex. lorsqu'une modification est détectée dans les valeurs de données des champs de données stables ou une modification de la disposition est apparue en raison de l'ajout ou la suppression de champs de données. Au niveau d'un noeud de réplication, la DRS transmise remplacerait la DRS stockée clans la base de données de réplication pour l'ensemble de données correspondant. Dans le cas où l'intégralité de l'ensemble de données mis à jour est transmise avec les données de réplication, alors l'ensemble de donnés transmis remplacerait l'ensemble des données correspondantes stockées dans la base de données de réplication dudit au moins un noeud de calcul de réplication. [0022] Selon des modes de réalisation, dans lesquels l'étape de sélection de la structure DSR 8 de réplication au niveau dudit au moins un noeud de calcul de réplication comprend le fait de déterminer si les données de réplication comprennent une structure DSR mise à jour, dans laquelle lorsqu'une structure DSR mise à jour est transmise elle est alors sélectionnée en tant que structure DSR de réplication, autrement la structure DSR de l'ensemble des données de réplication stocké est sélectionné en tant que structure DSR de réplication. Comme précédemment décrit, avec le temps la structure DSR stockée dans la hase de données de réplication dudit au moins un noeud de calcul de réplication expirerait et/ou changerait, il est ainsi important que lorsqu'une DSR mise à jour est transmise en tant que partie des données de réplication, elle remplace la structure DSR correspondante, et est par ailleurs sélectionnée pour [napper les valeurs de données extraites de la hase de données de réplication vers les champs de données corrects de l'ensemble de données correspondant stocké dans la hase de données de réplication. De cette manière, on peut s'assurer que les valeurs extraites sont associées à la version la plus récente de la structure DSR pour l'ensemble de données correspondant. [0023] Selon des modes de réalisation, dans lesquels l'étape de transmission comprend la division des données de réplication en paquets de données, qui sont indépendamment transmis audit au moins un noeud de calcul de réplication où elles sont collectées et traitées par un moteur de reconstruction de données du moteur de réception de données pour reconstruire les données de réplication. En décomposant les données de réplication en paquets de données, il devient possible de transmettre les paquets de données en parallèle, en augmentant ainsi la vitesse à laquelle les données sont transmises du noeud de calcul maître audit au moins un noeud de calcul de réplication. De plus, la décomposition du vecteur binaire en paquets de données plus petits peut être nécessaire pour satisfaire la bande passante du réseau de communication de transmission. Par exemple, dans le cas où la taille du vecteur binaire est plus grande que l'unité de transmission maximale (MTU) acceptable du réseau de communication. [0024] Selon des modes de réalisation, dans lesquels la première valeur de données de chaque paquet de données définit une valeur de décalage associé à la position des paquets de données dans les données de réplication. La première valeur de données d'un paquet de données peut indiquer le décalage du paquet de données dans les données transmises. Selon des modes de réalisation, la valeur de décalage peut indiquer le nombre de bits de données séparant le premier bit du vecteur binaire et/ou les données de réplication du premier bit de chaque paquet de données. Par exemple, si le vecteur binaire dans les données de réplication contient un millier de bits, et le vecteur binaire est divisé en cinq paquets de données de deux cents bits chacun, alors la valeur de décalage du premier paquet indiquerait qu'il existe une séparation de zéro bits, la valeur de décalage du deuxième paquet indiquerait qu'il existe cent quatre-vingt-dix-neuf bits séparant le premier bit du vecteur binaire du premier bit du 9 deuxième paquet dc données, la valeur de décalage du troisième paquet de données indiquerait qu'il y a trois cent quatre-vingt-dix-neuf bits séparant le premier hit du vecteur binaire du premier hit du troisième paquet de données, la valeur de décalage du quatrième paquet de données indiquerait qu'il y a cinq cent quatre-vingt-dix-neuf bits séparant le premier bit du vecteur binaire du premier hit du quatrième paquet de données, et la valeur de décalage du cinquième paquet de données indiquerait qu'il y a sept cent quatre-vingt-dix-neuf bits séparant le premier hit du vecteur binaire du premier hit du cinquième paquet de données. La valeur de décalage peut être utilisée par le moteur de réception de données au niveau dudit au moins un noeud de calcul de réplication pour assembler les paquets de données de sorte à reconstruire les données de réplication transmises. [0025] Selon des modes de réalisation, dans lesquels la structure DSR générée pour chaque ensemble de données correspondant comprend au moins un champ de donnée d'emplacement réservé pour recevoir des modifications dans la structure DSR, le champ de donnée d'emplacement réservé comprend un hit dc validité, la valeur du bit de validité indique si le champ de donné d'emplacement réservé contient une valeur de donnée, laquelle valeur de donnée est classée en tant que valeur de donnée volatile. Les champs de données d'emplacements réservés peuvent être utilisés pour recevoir des modifications dans l'ensemble de données, par ex. ajout, ou suppression d'un champ de donnée volatil. Chaque champ de données d'emplacement réservé comprend un hit de validité. La valeur du bit de validité indique si le champ de données d'emplacement réservé contient une valeur de donnée. Par exemple, dans une structure DSR contenant cinq champs de données d'emplacements réservés, s'il y a une insertion d'un champ de donnée volatil dans l'ensemble de données, alors un des champs de données d'emplacements réservés peut être sélectionné pour recevoir la modification dans la structure DSR, c.-à-d. l'insertion d'un nouveau champ de donnée volatil, et la valeur du bit de validité correspondant changerait de « fausse », indiquant que les champs de données d'emplacements réservés ne sont pas en cours d'utilisation, à « vraie », indiquant que le champ de donnée d'emplacement réservé est en cours d'utilisation est contient une valeur de donnée volatile, tandis que la valeur du bit de validité des champs de données d'emplacements réservés resteraient « fausse ». De plus, en cas de suppression d'un champ de donnée volatil dans une structure DSR où tous les champs de données d'emplacements réservés sont en cours d'utilisation, et leurs bits de validité correspondants sont réglés sur « vrai », la modification dans la structure DSR, c.-à-d. la suppression d'un champ de donnée volatil, peut être reçue par réglage du bit de validité d'un des champs de données d'emplacements réservés sur « faux » indiquant que le champ de donnée d'emplacement réservé n'est pas en cours d'utilisation. De cette manière, il peut être possible de prolonger l'espérance de vie de la structure DSR, tant que les enregistrements contenus dans les ensembles de données mises à jour suivent la même structure de données prédéfinic et le nombre de champs de données volatils ajouté ne dépasse pas le nombre d'emplacements réservés provisionnés. L'ajout de champs de données d'emplacements réservés dans la DRS peut par ailleurs réduire les coûts de transmission des données parce que la structure DSR mise à jour est uniquement transmise lorsque les modifications dépassent le nombre de champs de données d'emplacements réservés. Dans certains cas, seulement un nombre limité d'emplacements réservés peut être requis, par ex. quatre ou cinq, selon le type d'ensemble de données. Chaque fois que les changements dans l'ensemble des données dépassent le nombre de champs de données d'emplacements réservés, la structure DSR stockée, dans les noeuds de calcul de réplication et maître, est remplacée par la structure DSR mise à jour. La structure DSR doit être remplacée chaque fois qu'une modification structurelle dans l'ensemble des données survient, par ex. changement de structure de données prédéfinie. Il faut noter qu'il est possible pour tous les champs de l'ensemble des données d'être définis dans la structure DSR comme champs de données d'emplacements réservés. Selon l'application et l'ensemble de données correspondant, le concepteur, ou développeur, de l'application peut décider a) du nombre « d'emplacements réservés vides », avec le bit de validité réglé sur « faux ») désirés pour recevoir de futures insertions, h) les champs qui devraient être des « emplacements réservés complets », avec le bit de validité réglé sur « vrai », si l'un d'entre eux doit être supprimé pour recevoir les suppressions de champs de données dans la structure DSR. [0026] Selon un deuxième aspect de la présente invention, un moteur d'accélération de cohérence peut être fourni pour maintenir la cohérence des données entre les ensembles de données stockés dans une base de données maître d'un noeud de calcul maître et une base de données de réplication d'au moins un noeud de calcul de réplication d'une architecture informatique distribuée, dans lequel à chaque fois qu'une version mise à jour d'un ensemble de données stocké est reçue, le noeud de calcul maître est configuré pour mettre à jour un ensemble de données correspondant stocké dans une base de données maître et transmettre les données de réplication concernant la version de l'ensemble de données mise à jour audit au moins un noeud de calcul de réplication pour réplication, chaque ensemble de données comprenant une pluralité de champs de données agencés selon une disposition définie selon la structure de représentation de l'ensemble de données (DSR) correspondante, qui est stockée avec l'ensemble de données correspondant dans les bases de données maître et de réplication, le procédé comprenant : un module de traitement maître configuré pour traiter au niveau du noeud de calcul maître un ensemble de données stocké, le module de traitement maître comprenant : 11 un moteur de réception de données configuré pour traiter la version mise à jour d'un ensemble de données pour générer sa structure DSR mise à jour associée ; le traitement de la version de l'ensemble de données mise à jour au moyen d'un moteur de traitement pour générer la structure DSR mise à jour ; un moteur d'analyse configuré pour analyser la structure DSR mise à jour pour extraire les champs de données de la version de l'ensemble de données mise à jour ; un moteur de classification configuré pour classer les champs de données extraits dans des champs de données stables, comprenant des valeurs de données qui modifient un premier taux de fréquence, et des chants de données volatils, comprenant des valeurs de données qui modifient un deuxième taux de fréquence, qui est plus élevé que le premier taux de fréquence, un moteur de vecteur binaire pour générer un vecteur binaire stockant les valeurs de données extraites des champs de données volatils ; un moteur de préparation de données configuré pour préparer les données à répliquer, les données de réplication comprenant le vecteur binaire généré ; et un moteur de transmission de données configuré pour transmettre les données de réplication audit au moins un noeud de calcul de réplication ; et un module de réplication configuré pour répliquer au niveau dudit au moins un noeud de calcul de réplication les données de réplication, l'étape de réplication comprenant : un moteur de réception de données de réplication pour recevoir les données de réplication ; un moteur de traitement de réplication configuré pour traiter les données de réplication pour extraire les valeurs de données à répliquer ; un moteur de sélection de DSR configuré pour sélectionner une structure DSR de réplication correspondant aux données de réplication ; et un moteur de réplication configuré pour répliquer, sur la base de la structure DSR de réplication sélectionnée, les valeurs de données extraites dans l'ensemble de données de réplication correspondant stocké dans une base de données de réplication. [0027] Selon des modes de réalisation du deuxième aspect, le vecteur binaire est généré par concaténation des valeurs de données des champs de données volatils. [0028] Selon des modes de réalisation du deuxième aspect, chaque champ de données volatil stocke une valeur de donnée d'une taille de donnée prédéterminée représentée par un certain nombre de bits. [0029] Selon des modes de réalisation du deuxième aspect, la structure DSR comprend la taille des données de chaque champ de données volatil. [0030] Selon des modes de réalisation du deuxième aspect, le vecteur binaire est configuré pour stocker en séries les bits représentant la valeur de donnée de chaque champ de donnée volatil. 12 [0031] Selon des modes de réalisation du deuxième aspect, le vecteur binaire est configuré pour stocker les valeurs de données des champs de données volatils dans l'ordre défini dans la structure DSR pour l'ensemble des données correspondantes. [0032] Selon des modes de réalisation du deuxième aspect, le moteur de compression est configuré pour compresser les données de réplication avant qu'elles soient transmises audit au moins un noeud de calcul de réplication, où elles sont décompressées par un moteur de décompression du moteur de réception des données. [0033] Selon des modes de réalisation du deuxième aspect, le moteur de compression est configuré pour sélectionner un procédé de compression dans une hase de données de compression, le procédé dc compression appliqué aux données de réplication est encodé et transmis audit au moins un noeud de réplication, où elles sont utilisées par le moteur de décompression pour sélectionner un procédé de décompression correspondant dans une hase dc données de décompression pour décompresser les données de réplication. De cette manière, le moteur de compression peut sélectionner le meilleur procédé de compression pour réduire la taille des données de réplication, réduisant ainsi le coût dc transmission du réseau. [0034] Selon des modes de réalisation du deuxième aspect, le moteur de compression compresse les données à transmettre avec un algorithme de compression de codage de longueur d'exécution (RLE). [0035] Selon des modes de réalisation du deuxième aspect, les données de réplication sont constituées du vecteur binaire, ou du vecteur binaire et de la structure DSR. [0036] Selon des modes de réalisation du deuxième aspect, le moteur de vecteur binaire est configuré pour encoder le vecteur binaire généré en tant que différence provenant d'une version antérieure du vecteur binaire pour l'ensemble de données stocké dans la base de données maître. [0037] Selon des modes de réalisation du deuxième aspect, le moteur de vecteur binaire est configuré pour générer le vecteur binaire en comparant la structure DSR mise à jour avec la structure DSR de l'ensemble des données stocké dans la base de données maître pour identifier des différences de disposition des champs de données dans l'ensemble de données mis à jour, et dans lequel lorsqu'une différence de disposition de l'ensemble des données est détectée l'intégralité de la structure DSR mise à jour et/ l'intégralité de l'ensemble des données mis à jour est incluse dans les données de réplication. [0038] Selon des modes de réalisation du deuxième aspect, dans lesquels le moteur de sélection de DRS est configuré pour sélectionner la structure DSR de réplication correspondante en déterminant si les données de réplication comprennent une structure DSR mise à jour, dans laquelle lorsqu'une structure DSR mise à jour est transmise elle est ensuite sélectionnée en tant que structure DSR de réplication, autrement la structure 13 DSR de l'ensemble des données de réplication stocké est sélectionnée en tant que structure DSR de réplication. [0039] Selon des modes de réalisation du deuxième aspect, dans lesquels le moteur de transmission de données est configure pour diviser les données de réplication en paquets de données, qui sont indépendamment transmis audit au moins un noeud de calcul de réplication où ils sont collectés et traités par un moteur de reconstruction des données du moteur de réception des données pour reconstruire les données de réplication. [0040] Selon des modes de réalisation du deuxième aspect, la première valeur de données de chaque paquet de données définit une valeur de décalage associé à la position des paquets de données dans les données de réplication. [0041] Selon des modes de réalisation du deuxième aspect, la valeur de décalage est in- dicative du nombre de bits séparant le premier bit du vecteur binaire du premier bit de chaque paquet de données. [0042] Selon des modes de réalisation du deuxième aspect, le moteur de traitement est configuré pour générer une structure DSR générée pour chaque ensemble de données correspondant comprenant au moins un champ de donnée d'emplacement réservé pour recevoir des modification de la structure DSR, le champ de donnée d'emplacement réservé comprend un bit de validité, la valeur du bit de validité indique si le champ de donnée d'emplacement réservé contient une valeur de donnée, laquelle valeur de donnée est classée comme une valeur de donnée volatile. [0043] Les dessins suivants sont fournis à titre d'exemple pour décrire et expliquer de façon détaillée divers aspects de l'invention. [0044] [fig.1] montre un exemple de système de stockage de données distribué selon des modes de réalisation de la présente invention. [0045] [fig.2] montre un exemple d'un noeud de calcul maître selon des modes de réalisation de la présente invention. [0046] [fig.3] montre un exemple d'un noeud de traitement maître selon des modes de réa- lisation de la présente invention. [0047] [fig.4] montre un exemple d'un noeud de calcul de réplication selon des modes de réalisation de la présente invention. [0048] [fig.5] montre un exemple d'un module de réplication selon des modes de réalisation de la présente invention. [0049] [fig.6] montre un exemple de structure de représentation d'ensemble de données (DSR) selon des modes de réalisation de la présente invention. [0050] [fig.7] montre un exemple d'un vecteur binaire stockant des valeurs de données extraites des champs de données volatils de la structure DSR présentée à la figure 6, selon des modes de réalisation de la présente invention. 14 [0051] [fig.8] montre un exemple d'une structure DSR contenant des bits de validité et leur représentation correspondante dans le vecteur binaire selon des modes de réalisation de la présente invention. [0052] [fig.9] montre un exemple de création de paquets de données avec une valeur de décalage d'un ensemble de données selon des modes de réalisation de la présente invention. [0053] [fig.10] montre des résultats de simulation en comparant les performances de l'approche proposéc aux solutions existantes. [0054] [fig.11] montre d'autres résultats de simulation en comparant les performances de l'approche proposéc aux solutions existantes. [0055] La présente invention sera illustrée en utilisant les modes de réalisation exemplaires présentés aux figures 1 à 11, qui seront décrites de façon plus détaillée ci-dessous. Il faut noter que toutes les références faites aux dimensions sont seulement indicatives et ne limitent l'invention d'aucune façon. Alors que l'invention a été montrée et décrite en faisant référence à certains modes de réalisation illustrés dans la présente, les hommes de métier comprendront que diverses modifications de formes et de détails peuvent y être apportées sans pour autant s'éloigner du champ d'application de l'invention couvert par les revendications en annexe. Par ailleurs, alors que l'invention a été décrite en faisant référence à un système et/ou à un procédé particulier pour maintenir la cohérence des données entre les ensembles de données stockées dans une base de données maître d'un noeud de calcul maître et les ensembles de données correspondants stockés dans une base de données de réplication d'au moins un noeud de calcul de réplication, les hommes de métier comprendront que des modifications de formes et de détails peuvent être apportées pour faciliter d'autres types de procédés et/ ou systèmes sans s'éloigner du champ d'application de l'invention englobé par les revendications jointes. [0056] La Figure 1 montre un exemple de système de stockage de données distribué selon des modes de réalisation de la présente invention. Le système de stockage distribué peut être fourni avec un noeud de calcul maître 300 configuré pour manipuler et stocker des données reçues d'une pluralité de sources de données 100 sur un premier réseau de communication 200. Le noeud de calcul maître 300 peut être mis en oeuvre par un certain nombre de serveurs informatiques d'un premier centre de données. Chaque source de données 100 peut être configurée pour communiquer au noeud de calcul maître 300 un type spécifique de données structurées dans un format de données prédéterminé. Par exemple, chaque source de données 100 peut représenter un système de compagnie aérienne différent, chacune communiquant au noeud de calcul maître 300 au moins un ensemble de données contenant des informations sur le plan de vol de la compagnie aérienne, les disponibilités, les itinéraires, les types d'aéronefs, les aéroports, le réseau de compagnies aériennes affiliées et autres informations similaires. Les ensembles de données communiqués par chaque source de données 100 peuvent être valides uniquement pour une période spécifique de type, et peut ainsi contenir un délai limite d'expiration. Le noeud de calcul maître 300 peut être configure pour communiquer les ensembles de données reçus des sources de données 100 aux noeuds de calcul de réplication 500 sur un deuxième réseau de communication 400, où les ensembles de données sont traités et stockés. Chaque noeud de calcul de réplication 500 peut être mis en oeuvre par un certain nombre de serveurs informatiques d'un centre de données, qui peut être situé à un emplacement géographique différent d'un noeud de calcul maître 300 et des autres noeuds de calcul de réplication 500. Par exemple, le noeud de calcul maître 300 peut être mis en oeuvre dans un centre de données situé en Europe, un des noeuds de calcul de réplication 500 peut être mis en oeuvre dans un centre de données situées en Amérique du Nord, tandis qu'un autre noeud de calcul de réplication 500 peut être mis en oeuvre dans un centre de données situé en Asie. Une pluralité de clients peut accéder aux données stockées au niveau de chaque noeud de calcul de réplication 500. L'emplacement de chaque noeud de calcul de réplication 500 peut être décidé selon la vitesse à laquelle les clients peuvent accéder aux données pertinentes. Par exemple, pour un Agent de voyages situés en Amérique du Nord, il serait plus rapide d'accéder aux données qui sont stockées dans un noeud de calcul de réplication 500 situé dans la même région géographique, plutôt que d'accéder aux données qui sont stockées au niveau d'un noeud de calcul de réplication 500 situé en Europe ou en Asie. Par conséquent, il est important que les données stockées dans chaque noeud de calcul de réplication 500 soient rafraîchies régulièrement pour refléter précisément les dernières mises à jour des données reçues au niveau du noeud de calcul maître 300 provenant des différentes sources de données 100. Par exemple, dans l'industrie du voyage, il est important que la disponibilité des sièges d'un vol spécifique soit reflétée précisément sur tous les noeuds de calcul de réplication 500. Autrement, il existe un risque qu'une réservation invalide soit faite sur un vol déjà entièrement réservé, ce qui ne serait découvert qu' à un stade ultérieur. Actuellement, la principale approche pour maintenir la fraîcheur et la cohérence des données, entre les ensembles de données stockées dans un noeud de calculs maître 500 et des ensembles de données correspondants stocké dans un noeud de calcul de réplication 300 consiste à transmettre périodiquement pour la réplication l'intégralité des ensembles de données provenant d'un noeud de calcul maître 300 à tous les noeuds de calcul de ré- plication 500. Bien que l'approche existante garantisse la fraîcheur et la cohérence des données à travers différents noeuds de calcul, le coût de communication du réseau associé est élevé, en raison du gros volume de données devant être transmises sur le réseau. Cependant, lors de la mise à jour des ensembles de données stockés, il n'est pas 16 toujours nécessaire de transmettre l'intégralité des ensembles de données mis à jour aux noeuds de calcul de réplication. Dans la plupart des cas, chaque ensemble de données contiendrait des champs de données stockant des valeurs de données qui sont hautement volatiles et sont liés à une modification à une vitesse plus élevée que les valeurs de données stockées dans d'autres champs de données du même ensemble de données. Par conséquent, dans la plupart des cas, il est suffisant de transmettre uniquement les valeurs de données des ensembles de données qui ont changé par rapport aux versions précédentes, et de transmettre uniquement I l'intégralité des ensembles de données mis à jour lorsqu'il y a une différence fondamentale, par ex. dans la structure de données, les types de données, et similaires. Le fait de transmettre les valeurs de données qui ont été changées plutôt que l'intégralité des ensembles de données mis à jour a montré une réduction considérable des exigences de bande passante de communication pour maintenir la fraîcheur et la cohérence des données stockées dans différents noeuds de calcul dans le temps. Par conséquent, en raison de la diminution des exigences de bande passante de communication, il y aurait une réduction associée du coût de communication du réseau. Ceci est obtenu en fournissant un moteur d'accélération de cohérence et un procédé associé pour maintenir la cohérence des données dans différents noeuds de calcul. [0057] La Figure 2 montre un exemple d'un noeud de calcul maître 300 selon des modes de réalisation de la présente invention. Le noeud de calcul maître 300 fournit avec un stockage maître 310 configuré pour stocker les ensembles de données reçus des différentes sources de données 100 sur un certain nombre de bases de données maîtres, ainsi que leur structure de Représentation d'ensemble de données (DSR) correspondante, qui définit pour chaque ensemble de données la disposition et/la structure de leurs champs de données représentatifs. Le noeud de calcul maître 300 peut être fourni avec un module de traitement maître qui fait partie du moteur d'accélération de cohérence. Le module de traitement maître 320 est configuré pour traiter chaque ensemble de données mis à jour reçu des différentes sources de données 100 pour déterminer les modifications effectuées sur les valeurs de données et la structure des champs de données par rapport aux versions précédentes correspondantes de chaque ensemble de données stockées dans le stockage maître 310, qui sont communiquées audit au moins un noeud le calcul de réplication 500 pour réplication. Le module de traitement maître 320 met à jour les ensembles de données stockées avec les mises à jour des données correspondantes. [0058] La Figure 3 montre une architecture exemplaire du module de traitement maître 310. Comme présenté, un moteur de réception de données 321 peut être fourni pour recevoir les ensembles de données mis à jour des différentes sources de données 100 et pour identifier l'ensemble de données stockées correspondant dans les bases de données de 17 stockage maîtres 310. Chaque ensemble de données mis à jour est alors transmis à un moteur de traitement 322, où il est traité pour générer sa structure de Représentation d'ensemble de données (DSR) mise à jour. Chaque structure DSR mise à jour est ensuite analysée par un moteur d'analyse 323 pour extraire les champs de données de la version d'ensemble de données mise à jour correspondante. Les champs de données extraits sont ensuite classés au moyen d'un moteur de classification 324 dans des champs de données stables, comprenant des valeurs de données qui changent à un premier taux de fréquence, et des champs de données volatils, comprenant des valeurs de données qui changent à un deuxième taux de fréquence, qui est plus élevé que le premier taux de fréquence. Le moteur de classification 324 peut utiliser une gamme de techniques de traitement de données, par ex. l'Apprentissage automatique, associées à des données historiques pour déterminer la vitesse à laquelle les valeurs de données de chaque champ de données dans l'ensemble de données changent dans le temps, et par conséquent classer les champs dc données dans des champs de données volatils ou stables. Une fois que les champs de données ont été classés, un moteur de vecteur binaire 325 est utilisée pour extraire les valeurs dc données des champs de données volatils de chaque ensemble de données mis à jour et pour générer en conséquence un vecteur binaire correspondant stockant les valeurs dc données volatiles extraites. Pour chaque ensemble de données, le vecteur binaire peut être généré par concaténation des valeurs de données des champs de données volatils dc l'ensemble des données mis à jour. Dans le vecteur binaire, les bits de données représentant les valeurs de données de chaque ensemble de données volatil sont stockés en série, c.-à-d. un bit de données après l'autre. Les valeurs de données peuvent être ordonnées dans le vecteur binaire selon l'ordre dans lequel les champs de données volatils sont présentés dans la structure DSR correspondant à chaque ensemble des données traité, mis à jour. Le vecteur binaire généré peut être stocké avec l'ensemble de données mis à jour correspondant dans le stockage maître 310. Le vecteur binaire généré peut être encodé en tant que différence provenant d'un vecteur binaire généré pour une version antérieure de l'ensemble de données correspondant. Une fois que le vecteur binaire a été créé pour un ensemble de données mis à jour, un moteur de préparation de données 326 peut être utilisé pour préparer les données à répliquer au niveau dudit au moins un noeud de calcul de réplication 500. Les données de réplication peuvent contenir au moins le vecteur binaire généré ainsi que les autres informations. Le moteur de vecteur binaire 325 peut être configuré pour comparer la structure DSR générée de l'ensemble des données mis à jour avec la structure DSR de l'ensemble des données correspondant stocké dans la base de données maître pour identifier les différences dans la structure de données. Dans le cas où des différences sont détectées dans la structure de données, par ex. ajout ou suppression de champs de données, alors le moteur de préparation de 18 données 326 est configure pour inclure, en plus du vecteur binaire, dans les données de réplication la structure DSR mise à jour et/ou l'intégralité de l'ensemble des données mises à jour, pour réplication vers ledit au moins un noeud de calcul de réplication. La version précédente du vecteur binaire peut être stockée dans le stockage maître 310 avec la version antérieure correspondante de l'ensemble des données et/ou de la structure DSR. Une fois que les données de réplication sont prêtes, elles sont transmises à un moteur de transmission de données 327 qui est configure pour transmettre via un réseau de communication 400 les données de réplication audit au moins un de calcul de réplication 500. Les données de réplication peuvent être compressées au moyen d'un moteur de compression, qui peut faire partie du moteur de transmission de données avant d'être transmises audit au moins un noeud de calcul de réplication, où elles sont décompressées par un moteur de décompression du moteur de réception des données. Tout algorithme de compression de données connu peut être utilisé pour la compression des données de réplication. Par exemple, l'algorithme de compression de codage de longueur d'exécution (RLE) peut être utilisé, lequel est configure pour encoder une séquence de bits identiques dans le vecteur binaire en tant que nombre représentant la longueur de la séquence. Dans certains cas, un symbole prédéterminé généré par l'algorithme RLE peut être utilisé pour dénoter un bit qui peut être sauté ou qui n'a pas changé. L'utilisation des symboles et la représentation en nombre de la longueur de la séquence de bits dans le vecteur binaire peut augmenter l'efficacité de l'algorithme de compression. D'autres algorithmes de compression tels que Bzip2, Gzip, ZLIB, des algorithmes de compression de dictionnaire dans la bande et hors bande peuvent être utilisés. La compression classique, par ex. gzip, bzip2 fonctionne en construisant un dictionnaire des sous-chaînes les plus communes dans le fichier compressé, puis en encodant chacune avec le nombre minimum de bits. Les données du dictionnaire sont à l'intérieur du fichier compressé ; ainsi, lors d'un déplacement sur le réseau, le dictionnaire de données est désigné comme étant « dans la bande ». D'un autre côté, la compression de dictionnaire hors bande consiste à : [0059] traiter de nombreuses données de référence pour extraire le dictionnaire de données (statistiquement meilleur) [0060] geler le dictionnaire (avec un identifiant/date) et l'envoyer à toutes les parties (codeurs et décodeurs) « une fois et pour tous » (ou au moins, ne pas le changer trop souvent...) [0061] Ceci permet d'économiser la bande passante du réseau d'envoi du dictionnaire avec chaque fichier de données. Quelques exemples hors de la bande incluent Zstandard, et RFC 3284 précise VCDIFF, un format de compression (pour les transactions HTTP) qui inclut un « tableau de code » par défaut mais permet l'utilisation de tableaux de codes spécifiques à l'application. 19 [0062] La Figure 4 montre un exemple d'un noeud de calcul de réplication 500 selon des modes de réalisation de la présente invention. Chaque noeud de calcul de ré- plication 500 peut être fourni avec un stockage de réplication 510 pour stocker les ensembles de données de réplication et les structures DSR associées correspondant aux ensembles de données et aux informations associées stockées dans le stockage maître 310. Le stockage de réplication 510 peut être configuré pour stocker sensiblement les mêmes informations que celles stockées dans le stockage maître 310. Le noeud de calcul de réplication 500 est de plus fourni avec un module de réplication 520 configuré pour recevoir et répliquer les données de réplication dans le stockage de réplication 510. [0063] La Figure 5 montre une architecture exemplaire du module de réplication 520. Le module de réplication 520 est fourni avec un moteur de réception de données de réplication 521 configure pour recevoir les données de réplication. Le moteur de réception de données de réplication 521 peut également identifier l'ensemble des données de réplication dans le stockage de réplication 510 correspondant aux données de réplication transmises. Un moteur de traitement de réplication 522 est fourni pour traiter les données de réplication et extraire les valeurs de données à répliquer. Un moteur de sélection de DSR 523 est fourni pour sélectionner la structure DSR de réplication à utiliser dans le mappage des valeurs de données extraites sur les champs de données de l'ensemble des données de réplication correspondant. Le moteur de sélection de DSR est configuré pour déterminer si les données de réplication comprennent une structure DSR mise à jour. Dans le cas, où une structure DSR mise à jour est transmise avec les données de réplication, par ex. lorsque la structure de la DRS stockée a changé ou expiré, alors la DRS mise à jour est sélectionnée en tant que structure DSR de réplication, autrement la structure DSR de l'ensemble des données de réplication stocké correspondant est sélectionné en tant que structure DSR de réplication. Une fois que la DRS de réplication correspondante a été sélectionnée, un moteur de réplication 524 est fourni pour répliquer les valeurs de données extraites des données de réplication dans l'ensemble des données de réplication correspondant. [0064] La Figure 6 montre un exemple de structure DSR générée à partir d'un ensemble de données reçu d'une source de données 100 selon des modes de réalisation de la présente invention. Comme présenté, la structure DSR peut identifier les différents enregistrements de données de niveau, le type de champs de données, par ex. volatil ou stable, la taille des valeurs de données stockées dans au moins les champs de donnée volatils, par ex. exprimés par le nombre de bits, et d'autres informations pertinentes. Par exemple, dans le contexte de l'industrie du voyage, l'ensemble de données peut représenter les différentes recommandations de voyages reçus en réponse à une demande d'une compagnie aérienne. L'enregistrement de données de niveaul peut représenter la recommandation de voyage, l'enregistrement de données de Niveau 2 peut représenter la solution de voyage proposée, enregistrement des données de Niveau 3 peut représenter les différentes options d'itinéraires de vol pour la solution de voyage proposée, et les champs donnés volatils peuvent représenter la disponibilité du siège. La disponibilité des sièges dans cet exemple, devrait changer plus rapidement, étant donné que plus de clients réservent la solution voyagent proposée, par rapport aux options d'itinéraires de vol, qui sont déterminées bien en avance. [0065] La Figure 7 montre un exemple d'un vecteur binaire généré, basé sur une structure DSR selon des modes de réalisation de la présente invention. Le vecteur binaire, également connu sous le nom d'ensemble de bits, carte de bits, ensemble de bits, ou chaîne de bits, est une structure de données de réseau qui stocke des bits de manière compacte. Il peut être utilisé pour mettre en oeuvre une structure de données à ensemble simple. Un vecteur binaire est efficace pour exploiter le parallélisme au niveau des bits dans le matériel pour effectuer des opérations rapidement. Un ensemble de bits offre un stockage dense pour des bits « aléatoires », c'est-à-dire là où chaque bit est également susceptible d'être égal à 0 ou 1, et chaque bit est indépendant. Cependant, la plupart des données ne sont pas aléatoires de sorte qu'il peut être possible de les stocker de manière plus compacte. Par exemple, les données d'une image de fax typique ne sont pas aléatoires et peuvent être compressées. Le codage de longueur d'exécution est couramment utilisé pour compresser ces longs courants. Comme présenté à la figure 7, la valeur de donnée de chaque champ de donnée volatil est représentée dans le vecteur binaire par le nombre de bits indiqués dans la structure DSR. Par exemple, le champ de donnée volatil #1 est représenté par trois bits, tandis que le champ de donnée volatil #2 est représenté par deux bits. Les valeurs de données sont présentées dans le vecteur binaire dans l'ordre identifié par la DRS, ainsi le champ de donnée volatil #1 en premier, puis le champ de donnée volatil #2, et enfin le champ de donnée volatil #2233456. Comme présenté à la figure 8, la structure DSR peut être fournie avec des champs de données supplémentaires 610, dénommés bits de validité, qui sont utilisés pour recevoir les changements dans l'ensemble de données, par ex. l'ajout d'un enregistrement de données. Les bits de données de validité 610 sont considérés comme étant des champs de données volatils et sont inclus dans le vecteur binaire [0066] Selon des modes de réalisation de la présente invention, le vecteur binaire et/ou les intégralités des données de réplication peuvent être divisé(e)s en paquets de données, qui peuvent être d'une taille de données similaire ou différente. La Figure 9 montre un exemple d'un paquet de données de vecteur binaire 640 généré pour la section de donnée cible correspondante 630 d'un ensemble de données 620. Chaque paquet de données 640 peut être indépendamment transmis audit au moins un noeud de calcul de 21 réplication 500 où tous les paquets de données 640 sont collectés et traités par un moteur de reconstruction de données du moteur de réception de données de réplication 521 pour reconstruire les données de réplication. En décomposant les données de réplication en paquets de données 640, il devient possible de transmettre les paquets de données en parallèle, en augmentant ainsi la vitesse à laquelle les données sont transmises du noeud de calcul maître audit au moins un noeud de calcul de réplication. De plus, la décomposition du vecteur binaire et/ou des données de réplication en des paquets de données plus petits peut être nécessaire pour satisfaire la bande passante du réseau de communication de transmission. Par exemple, dans le cas où la taille du vecteur binaire est plus grande que la bande passante acceptable du réseau dc communication. Chaque paquet dc données 640 peut être fourni avec une valeur de décalage, qui peut indiquer le nombre de bits séparant le premier bit du vecteur binaire de données volatil 620 du premier bit de chaque paquet de données 640. La valeur de décalage de chaque paquet dc données 640 désigne l'ordre dans lequel les paquets de données doivent être assemblés afin de reconstruire le vecteur binaire et/ou les données de réplication. [0067] Les Figures 10 et 11 montrent les résultats d'une simulation de comparaison des per- formances entre la présente approche de réplication (étiquetée « ECA » pour Accélérateur éventuel de cohérence) et 2 techniques de réplication de hases de données « classiques ». La première est étiquetée « blocs modifiés ». Elle consiste à transmettre des blocs lorsqu'ils ont été modifiés. Dans cette simulation, la taille des blocs est de 10 000 Octets (ce qui est proche des tailles de blocs par défaut trouvées dans les produits existants). Le deuxième procédé comparé est étiqueté « journal de modification » et consiste à transmettre le journal de modification de base de données. Nous supposons que les seules modifications sont des mises à jour (aucune insertion, aucune suppression). Ici la taille de base de données simulée est de 10 millions d'Octets c.-à-d. 1 000 blocs, mais les résultats peuvent s'appliquer à toutes les tailles. Nous simulons des champs définis par une clé huit octets et un champ de donnée (volatil) d'un bit. Pour les deux procédés comparés, afin d'être juste, le même procédé de compression est appliqué, c.-à-d. le zstd. [0068] À la Figure 10, l'indicateur de performance choisi est « bits envoyés/bits modifiés », le plus petit, le meilleur, qui caractérise la capacité de transmission aussi peu de bits (envoyés) que possible pour répliquer un volume donné de modifications mesurés en bits (modifiés). (Journal de) envoyé/modifié est tracé avec l'axe horizontal représentant (le journal du) pourcentage de bits volatils modifiés. La courbe supérieure (cercles) montre les performances de transmission des blocs modifiés. La cour horizontale (croix) montre les performances de transmission du journal de modification. Ces courbes se rencontrent sur la droite pour 100 % de bits modifiés parce que les deux procédés comparés transmettent ensuite l'intégralité des données (compressées). Il faut également noter que la courbe du journal de modification être horizontale parce que par définition d'un journal de modification, la quantité de données envoyées est proportionnelle à la quantité de changements. La courbe de fond (diamants) montre les performances du procédé proposé (étiqueté « ECA »). Elle montre clairement l'avantage des performances. (Le point en bas à droite existe parce que la simulation suppose que nous transmettons uniquement un octet pour signaler « tous les bits ont été basculés ». En pratique, « tous les bits ont été basculés » n'est pas réaliste pour la plupart des applications. Par exemple, avec une distribution de modification uniforme a quantité asymptomatique (« maximum ») de modifications est de 50% en raison des bits qui ont été basculés un certain nombre de fois et sont par conséquent « non modifiés » par rapport à l'état initial) [0069] La Figure 11 représente pour la même simulation le taux de bits du réseau nécessaire en tant que fonction de la « latence » supposant qu'une base de données subit un taux de modification constant de 1 pour cent des bits volatils par seconde. (Un taux de changement constant ne peut pas être réaliste mais est utile comme nous le verrons à présent). Dans le monde réel, l'opérateur du système est toujours confronté à un compromis : il doit décider du délai d'attente avant de transmettre les mises à jour. Intuitivement, si les données sont transmises plus souvent, le coût du réseau augmente. Avec un taux de changement constant, « souvent » est un délai : c'est le délai jusqu'à ce qu'une certaine quantité ou modification ait été observée. Nous appelons ce délai « latence » puisque c'est le délai minimum que le côté réception doit attendre pour que les données soient mises à jour (le temps de transmission du réseau doit être ajouté, bien entendu). À la figure 11, les points les plus à droite correspondent à une latence d'une minute, les points les plus à gauche à une latence d'une milliseconde. De manière similaire, les performances ECA (ligne de fond, diamants) est clairement supérieure sur toute la gamme de latences. [0070] En général, les routines exécutées pour mettre en oeuvre les modes de réalisation de l'invention, qu'elles soient implémentées dans le cadre d'un système d'exploitation ou d'une application spécifique, d'un composant, d'un programme, d'un objet, d'un module ou d'une séquence d'instructions, ou même un sous-ensemble de ceux-là, peuvent être désignées dans les présentes « code de programme informatique » ou simplement « code de programme ». Un code de programme comporte typiquement des instructions lisibles par ordinateur qui résident à divers moments dans divers dispositifs de mémoire et de stockage dans un ordinateur et qui, lorsqu'elles sont lues et exécutées par un ou plusieurs processeurs dans un ordinateur, amènent l'ordinateur à effectuer des opérations nécessaires à l'exécution d'opérations et/ou d'éléments propres à la mise en oeuvre des divers aspects des modes de réalisation de l'invention. Les instructions 23 d'un programme informatique lisibles par ordinateur pour accomplir les opérations des modes de réalisation de l'invention peuvent être, par exemple, le langage d'assemblage ou un code source ou un code objet, écrit en combinaison avec un ou plusieurs langages de programmation. [0071] Le code de programme mis en oeuvre dans une/un quelconque des applications/ modules décrit(e)s dans les présentes peut être distribué individuellement ou collectivement en tant que produit-programme, sous une variété de formes. En particulier, le code de programme peut être distribué en utilisant un support de stockage lisible par ordinateur ayant en lui-même des instructions de programme lisibles par ordinateur pour amener un processeur à mettre en oeuvre des aspects des modes de réalisation dc l'invention. [0072] Les supports de stockage lisibles par ordinateur, étant intrinsèquement non tran- sitoires, peuvent inclure des supports tangibles volatils et non volatils, amovibles et non amovibles, mis en oeuvre dans tout procédé ou technologie de stockage des informations, telles que des instructions lisibles par ordinateur, des structures dc données, des modules dc programme, ou autres données. Les supports de stockage lisibles par ordinateur peuvent par ailleurs inclure la mémoire vive aléatoire (RAM), la mémoire morte à lecture seule (ROM), la mémoire à lecture seule, programmable et effaçable (EPROM), la mémoire à lecture seule, programmable et effaçable électriquement (EEPROM), une mémoire flash, ou toute technologie de support solide dc mémoire, disque compact portable doté d'une mémoire à lecture seule (CD-ROM), ou autre stockage optique, cassette magnétique, bande d'enregistrement magnétique, mémoire de disque magnétique ou tout autre support pouvant être utilisé pour stocker les informations désirées et apte à être lu par un ordinateur. Un support de stockage lisible pal- ordinateur ne peut être interprété comme étant en soi des signaux transitoires (par exemple, des ondes radio ou autres ondes électromagnétiques se propageant, des ondes électromagnétiques se propageant à travers un support de transmission tel qu'un guide d'ondes, ou des signaux électriques transmis par câble). Les instructions de programme lisibles par ordinateur peuvent être téléchargées sur un ordinateur, un autre type d'appareil de traitement de données programmable ou sur tout autre dispositif de support de stockage lisible par ordinateur, ou un ordinateur externe ou un dispositif de stockage externe 'ia un réseau. [0073] Les instructions de programme lisibles par ordinateur, stockées sur un support lisible par ordinateur, peuvent être utilisées pour instruire un ordinateur, d'autres types d'appareils programmables de traitement ou d'autres dispositifs pour fonctionner d'une façon particulière, de sorte que les instructions stockées sur un support lisible par ordinateur produisent un article de fabrication comprenant les instructions qui mettent en oeuvre les fonctions/actions précisées dans les organigrammes, diagrammes de 24 séquence, et/ou diagrammes blocs. Les instructions de programme informatiques peuvent être fournies à un ou plusieurs processeurs d'un ordinateur à usage général, un ordinateur dédié ou autre appareil programmable de traitement de données pour produire une machine, de sorte que les instructions, lorsqu'elles sont exécutées via ledit un ou plusieurs processeurs, amènent une séries de calculs à exécuter pour mettre en oeuvre les fonctions, actions et/ou les actions précisées dans les organigrammes, diagrammes de séquence et/ou diagrammes blocs. [0074] Dans certains autres modes de réalisation, les fonctions, les actions et/ou des opérations précisées dans les organigrammes, diagrammes de séquence, et/ou les diagrammes blocs peuvent être réorganisées à nouveau, traitées en série et/ou traitées en même temps conformément aux modes de réalisation de l'invention. En outre, un quelconque des organigrammes, diagrammes de séquence, et/ou diagrammes blocs peut inclure plus ou moins de blocs que ceux qui sont illustrés conformément à des modes de réalisation de l'invention. [0075] La terminologie utilisée dans les présentes a pour but de décrire uniquement des modes de réalisation particuliers et n'est pas destinée à limiter les modes de réalisation de l'invention. On comprendra par ailleurs que les termes « comprendre », « comprend » et/ou « comprenant », lorsqu'ils sont utilisés dans cette spécification, précisent la présence de caractéristiques, de nombres entiers, d'étapes, d'opérations, d'éléments, et/ou de composants, mais n'excluent pas la présence ou l'ajout d'une ou de plusieurs caractéristiques, de nombres entiers, d'étapes, d'éléments, de composants et/ou de groupes de ceux-ci. De plus, dans la mesure où les formes verbales « inclut », « ayant », « a », « avec » ou leurs variantes, sont utilisées dans la description détaillée des revendications, ces termes sont censés être inclusifs de façon similaire au verbe « comprendre ». [0076] Bien que l'invention ait été illustrée par une description de modes de réalisation divers et bien que ces modes de réalisation ait été décrits de façon considérablement détaillée, les demandeurs n'ont pas l'intention de restreindre ou de limiter en aucune façon le champ d'application à ces détails. [Revendication I] REVENDICATIONSUn procédé pour maintenir la cohérence des données entre des ensembles de données stockés dans une base de données maître d'un noeud de calcul maître et les ensembles de données correspondants stockés dans une base de données de réplication d'au moins un noeud de calcul de réplication, dans lequel à chaque fois qu'une version mise à jour d'un ensemble de données stocké est reçue, le noeud de calcul maître est configure pour mettre à jour un ensemble de données correspondant stocké dans la base de données maître et transmettre les données de réplication concernant la version de l'ensemble de données mise à jour audit au moins un noeud de calcul de réplication pour réplication, chaque ensemble de données comprenant une pluralité de champs de données agencés selon une disposition prédéterminée définie selon une structure de représentation de l'ensemble de données (DSR), qui est stockée avec chaque ensemble de données dans les bases de données maître et de réplication, le procédé comprenant : le traitement au niveau du noeud de calcul maître au moyen d'un module de traitement maître d'une version mise à jour d'un ensemble de données stocké, l'étape de traitement comprenant : la réception au moyen d'un moteur de réception de données, de la version mise à jour d'un ensemble de données stocké dans la base de données maître ; le traitement de la version de l'ensemble de données mise à jour au moyen d'un moteur de traitement pour générer la structure DSR mise à jour l'analyse de la structure DSR mise à jour au moyen d'un moteur d'analyse pour extraire les champs de données de la version de l'ensemble de données mise à jour ; la classification au moyen d'un moteur de classification des champs de données extraits dans des champs de données stables, comprenant des valeurs de données qui changent à un premier taux de fréquence, et des champs de données volatils, comprenant des valeurs de données qui changent à un deuxième taux de fréquence, qui est plus élevé que le premier taux de fréquence, la génération au moyen d'un moteur de vecteur binaire_ un vecteur binaire stockant les valeurs de données extraites des champs de données volatils ; 26 la préparation au moyen d'un moteur de préparation de données des données à répliquer au niveau dudit au moins un noeud de calcul de réplication, les données de réplication comprenant le vecteur binaire généré ; et la transmission au moyen d'un moteur de transmission de données des données de réplication audit au moins un noeud de calcul de réplication ; et la réplication au niveau dudit au moins un noeud de calcul de réplication au moyen d'un module de réplication des données de réplication, l'étape de réplication comprenant : la réception au moyen d'un moteur de réception de données de réplication des données de réplication ; le traitement au moyen d'un moteur de traitement de réplication des données de réplication pour extraire les valeurs de données à répliquer ; la sélection au moyen d'un moteur de sélection DSR d'une structure DSR de réplication correspondant aux données de réplication ; et la réplication au moyen d'un moteur de réplication, basé sur la structure DSR de réplication sélectionnée, des valeurs de données extraites des données de réplication dans l'ensemble de données de réplication correspondant. [Revendication 2] Le procédé selon la revendication 1, dans lequel le vecteur binaire est généré par concaténation des valeurs de données des champs de données volatils. [Revendication 3] Le procédé selon la revendication 1 ou 2, dans lequel chaque champ de données volatil stocke une valeur de donnée d'une taille de données prédéterminée représentée dans un format binaire. [Revendication 4] Le procédé selon la revendication 3, dans lequel la taille des données de chaque champ de données volatil est identifiée dans la structure DSR. [Revendication 5] Le procédé selon la revendication 3 ou 4, dans lequel le vecteur binaire est configuré pour stocker en séries les bits représentant la valeur de donnée de chaque champ de donnée volatil. [Revendication 6] Le procédé selon l'une quelconque des revendications précédentes, dans lequel le vecteur binaire est configuré pour stocker les valeurs de données des champs de données volatils dans l'ordre défini dans la structure DSR pour l'ensemble des données correspondantes. [Revendication 7] Le procédé selon l'une quelconque des revendications précédentes, dans lequel les données de réplication sont compressées au moyen d'un moteur de compression du moteur de transmission de données avant 27 [Revendication 8] [Revendication 9] [Revendication 10] [Revendication 11] [Revendication 12] [Revendication 13] d'être transmises audit au moins un noeud de calcul de réplication, où elles sont décompressées par un moteur de décompression du moteur de réception des données. Le procédé selon la revendication 7, dans lequel le moteur de compression est configure pour sélectionner un procédé de compression dans une hase de données de compression, le procédé de compression appliqué aux données de réplication est encodé et transmis audit au moins un noeud de réplication, où elles sont utilisées par le moteur de décompression pour sélectionner un procédé de décompression correspondant dans une hase de données de décompression pour décompresser les données de réplication. Le procédé selon l'une quelconque des revendications précédentes, dans lequel les données de réplication sont constitués du vecteur binaire, ou le vecteur binaire et la structure DSR. Le procédé selon l'une quelconque des revendications précédentes, dans lequel le vecteur binaire généré est encodé en tant que différence provenant d'un vecteur binaire généré pour une version précédente de l'ensemble de données correspondant. Le procédé selon l'une quelconque des revendication précédentes, dans lequel l'étape de génération d'un vecteur binaire comprend la comparaison de la structure DSR mise à jour avec la structure DSR de l'ensemble des données stocké dans la base de données maître pour identifier des différences dans la disposition des champs de données dans l'ensemble de données mis à jour, et dans lequel lorsqu'une différence dans la disposition de l'ensemble des données est détectée l'intégralité de la structure DSR mise à jour et/ou l'intégralité de l'ensemble des données mis à jour est incluse dans les données de réplication. Le procédé selon la revendication 11, dans lequel l'étape de sélection de la structure DSR de réplication au niveau dudit au moins un noeud de calcul de réplication comprend le fait de déterminer si les données de réplication comprennent une structure DSR mise à jour, dans laquelle lorsqu'une structure DSR mise à jour est transmise elle est ensuite sélectionnée en tant que structure DSR de réplication, autrement la structure DSR de l'ensemble des données de réplication stocké est sélectionnée en tant que structure DSR de réplication. Le procédé selon l'une quelconque des revendications précédentes, dans lequel l'étape de transmission comprend la division des données de ré- 28 [Revendication 14] [Revendication 15] [Revendication 16] [Revendication 17] plication en paquets de données, qui sont indépendamment transmis audit au moins un noeud de calcul de réplication où elles sont collectées et traitées par un moteur de reconstruction de données du moteur de réception de données pour reconstruire les données de réplication. Le procédé selon la revendication 13, dans lequel la première valeur de données de chaque paquet de données définit une valeur de décalage associée à l'ordre de séquence des paquets de données dans les données de réplication. Le procédé selon la revendication 14, dans lequel la valeur de décalage indique le nombre de bits séparant le premier hit des données de réplication du premier bit de chaque paquet de données. Le procédé selon l'une quelconque des revendication précédentes, dans lequel la structure DSR générée pour chaque ensemble de données correspondant comprend au moins un champ de donnée d'emplacement réservé pour recevoir des changements dans la structure DSR, le champ de donnée d'emplacement réservé comprend un hit de validité, la valeur du bit de validité indique si le champ de donnée d'emplacement réservé contient une valeur de donnée, laquelle valeur de donnée est classée comme valeur de donnée volatile. Un moteur d'accélération de cohérence pour maintenir la cohérence des données entre les ensembles de données stockés dans une base de données maître d'un noeud de calcul maître et une base de données de réplication d'au moins un noeud de calcul de réplication d'une architecture informatique distribuée, où à chaque fois qu'une version mise à jour d'un ensemble de données stocké est reçue, le noeud de calcul maître est configuré pour mettre à jour un ensemble de données correspondant stocké dans une base de données maître et transmettre des données de réplication concernant la version de l'ensemble de données mise à jour audit au moins un noeud de calcul de réplication pour réplication, chaque ensemble de données comprenant une pluralité de champs de données agencés selon une disposition définie selon la structure de représentation de l'ensemble des données (DSR) correspondant, qui est stockée avec chaque ensemble de données dans les bases de données maître et de réplication, le moteur d'accélération de cohérence comprenant : un module de traitement maître configuré pour traiter un niveau d'un noeud de calcul maître un ensemble de données stocké, le module de traitement maître comprenant : 29 un moteur de réception de données configuré pour recevoir une version mise à jour d'un ensemble de données stocké correspondant dans un ensemble de données stocké dans la base de données maître ; un moteur de traitement configuré pour traiter la version de l'ensemble de données mise à jour pour générer sa structure DSR mise à jour ; un moteur d'analyse configuré pour analyser la structure DSR mise à jour pour extraire les champs de données de la version de l'ensemble de données mise à jour ; un moteur de classification configuré pour classer les champs de données extraits dans des champs de données stables, comprenant des valeurs de données qui changent à un premier taux de fréquence, et des champs de données volatils, comprenant des valeurs de données qui changent à un deuxième taux de fréquence, qui est plus élevé que le premier taux de fréquence, un moteur un vecteur binaire configuré pour générer un vecteur binaire stockant les valeurs de données extraites des champs de données volatils ; un moteur de préparation de données configuré pour préparer les données à répliquer, les données de réplication comprenant le vecteur binaire généré ; et un moteur de transmission de données configuré pour transmettre les données de réplication audit au moins un noeud de calcul de réplication ; et un module de réplication configuré pour répliquer au niveau dudit au moins un noeud de calcul de réplication les données de réplication, l'étape de réplication comprenant : un moteur de réception de données de réplication configuré pour recevoir les données de réplication ; un moteur de traitement de réplication configuré pour traiter les données de réplication pour extraire les valeurs de données à répliquer ; un moteur de sélection de DSR configuré pour sélectionner une structure de DSR de réplication correspondant aux données de réplication ; et un moteur de réplication configuré pour répliquer, sur la base de la structure DSR de réplication sélectionnée, les valeurs de données de réplication extraites dans l'ensemble de données de réplication correspondant stockées dans une base de données de réplication.