FR 3099613 A1 20210205 FR 1908659 A 20190730 Description Titre de l'invention : SYSTÈMES D'APPRENTISSAGE AUTO- MATIQUES ET PROCÉDÉS POUR LE PLACEMENT DE DONNÉES DANS LE STOCKAGE DISTRIBUÉ [0001] La présente invention concerne le stockage de données distribué et des systèmes de récupération, tels que des systèmes de stockage dématérialisés. Plus particulièrement, des modes de réalisation de l'invention concernent des systèmes et procédés améliorés pour localiser les données dans de tels systèmes. [0002] Les systèmes d'information distribués, par ex. le stockage dématérialisé et l'informatique dématérialisée, deviennent de plus en plus communs pour héberger les données et les applications. Les systèmes de stockage dématérialisés sont déployés globalement, les utilisateurs de ces systèmes sont également situés dans de vastes régions géographiques. La nature physiquement dispersée de l'infrastructure dématérialisée créait de nouveaux problèmes pour assurer une faible latence dans l'accès aux données. La proximité géographique entre les utilisateurs finaux demandant des données et les centres de données dans lesquels elles sont stockées, est essentielle pour minimiser la latence dans des applications haute performance. [0003] Une approche conventionnelle pour assurer la proximité et réduire la latence, est la réplication de bases de données. Cela signifie que de multiples copies des données détenues dans un système sans distribuer à de multiples centres de données régionaux de sorte qu'il y ait toujours une copie disponible à partir d'une source relativement locale lorsqu'elles sont demandées où que ce soit dans le monde. Cependant, la réplication comporte de nombreux inconvénients. Il y a les coûts associés à la conservation de multiples copies, incluant le capital et les frais de fonctionnement du stockage, ainsi que les frais de fonctionnement de transfert de larges volumes de données entre les centres à une échelle globale. De plus, la réplication crée le problème supplémentaire de gestion de la cohérence des copies, c.-à-d. le fait de s'assurer que des données ajoutées aux mises à jour sont propagées de manière opportune et fiable vers tous les emplacements de réplication. [0004] Dans de nombreuses applications, les exigences d'accès aux données ne sont cependant pas géographiquement uniformes. Dans le cas des systèmes d'e-commerce globaux, certains produits peuvent être plus populaires dans certaines régions, de sorte que les demandes d'information sur ces produits sont plus communes dans ces régions, et rares dans d'autres régions. Par exemple, les demandes liées à des livres, des films ou de la musique dans une langue particulière sont susceptibles d'être plus courantes dans des lieux où cette langue est principalement parlée et rares dans des lieux où très 2 peu de personnes parlent la langue. Des considérations similaires s'appliquent aux produits et services, tels que des denrées périssables ou des services de voyage, là où, pour des raisons pratiques et logistiques, il y a une forte association entre l'emplacement géographique et la demande. [0005] Dans de tels cas, il peut être avantageux de stocker les données de préférence dans des emplacements proches du lieu où elles sont plus susceptibles d'être demandées. En général, cependant, il n'est pas facile de faire ainsi. Le fait de prédire là où les données peuvent être requises peut être une tâche complexe, impliquant de nombreux variables et considérations. Une approche qui a été explorée dans la technique antérieure se base sur les niveaux de trafic, c.-à-d. de préférence le stockage de données dans des emplacements qui servent de plus grand volume de demandes. Cependant, tandis que cette approche peut améliorer les performances moyennes du système pour servir des demandes de données, simplement parce que plus de données sont disponibles dans un emplacement qui sert un plus grand volume de demandes, elle ne tient pas compte de la spécificité géographique des exigences des données qui peuvent donner lieu à des faibles performances dans des emplacements à faible trafic. De plus, les modèles de demande d'information peuvent varier dans le temps, de sorte que l'emplacement préféré pour stocker des données particulières peut changer, indépendamment de toute variation de la distribution globale du trafic. [0006] Par conséquent, il serait bénéfique de fournir de nouveaux systèmes et procédés de placement des données dans les systèmes d'information distribués qui sont basés sur les dépendances géographiques d'utilisation des données et qui sont capables de répondre aux variations de ces dépendances dans le temps. Des modes de réalisation de la présente invention concernent la réalisation de cet objectif. [0007] Un aspect de l'invention fournit un procédé, mis en oeuvre par ordinateur, de déter- mination d'un emplacement de stockage principal pour un enregistrement de données dans un système distribué qui comprend une pluralité de banques de données, dans lequel chaque banque de données est physiquement située dans un emplacement géographique correspondant, le procédé comprenant les étapes : d'initialisation d'un modèle de mappage d'apprentissage automatique en utilisant les informations de topologie du système distribué ; de détermination d'un ensemble de vecteurs de caractéristique d'apprentissage, les vecteurs de caractéristique d'apprentissage étant dérivés de valeurs de métadonnées associées à une pluralité de demandes de localisation antérieures ; de formation du modèle de mappage d'apprentissage automatique en utilisant l'ensemble des vecteurs de caractéristique d'apprentissage et un ensemble correspondant d'emplacements de stockage principaux cibles ; de réception d'une demande de localisation associée à un enregistrement de données, 3 la demande de localisation incluant une pluralité de valeurs de métadonnécs ; de traitement des valeurs de métadonnécs pour déterminer un vecteur de caractéristique de prédiction comprenant une pluralité de valeurs de caractéristique de prédiction ; et d'exécution du modèle de mappage d'apprentissage automatique en utilisant le vecteur de caractéristique de prédiction pour identifier un banque de données de la pluralité de banques de données comme emplacement de stockage principal pour l'enregistrement de données associé à la demande de localisation. [0008] Avantageusement, des modes de réalisation de l'invention sont ainsi capables de dé- terminer le placement des données, pour stockage et récupération des données dans un système distribué, basé sur les caractéristiques des données et de la demande associée. De telles caractéristiques sont définies par les valeurs de métadonnées, qui peuvent comprendre des éléments sélectionnés des données elles-mêmes et/ou des informations supplémentaires associées aux données ou à la demande, tel(le)s que leur origine. Les valeurs de métadonnées sont utilisées pour calculer les valeurs de caractéristiques, qui sont agrégées dans les vecteurs de caractéristique qui sont utilisées pour la formation et l'exécution d'un modèle d'apprentissage automatique. En particulier, les vecteurs de caractéristique d'apprentissage sont déterminés à partir de données antérieures et de performances de carte, et utilisées pour former le modèle de mappage d'apprentissage automatique. De plus, les vecteurs de caractéristique de prédiction sont déterminés à partir des demandes entrantes et utilisés comme entrée lors de l'exécution du modèle de mappage d'apprentissage automatique formé pour identifier un emplacement de stockage prédit correspondant. Le modèle d'apprentissage automatique comprend ainsi une « carte » qui peut être utilisée pour localiser des données basées sur des modèles de consommation de données, plutôt que sur des indications secondaires telles que les volumes de trafic qui ne peuvent pas être représentatifs des exigences géographiques pour des données particulières. [0009] Si la demande de localisation est associée à une demande d'écriture, le procédé peut par ailleurs comprendre l'écriture de l'enregistrement de données sur l'emplacement de stockage principal identifié par l'exécution du modèle de mappage d'apprentissage automatique. [0010] Là où la demande de localisation est associée à une demande de lecture, le procédé peut par ailleurs comprendre la tentative de lecture de l'enregistrement de données provenant de l'emplacement de stockage principal identifié par l'exécution du modèle de mappage d'apprentissage automatique. Dans le cas où l'enregistrement de données n'est pas trouvé dans l'emplacement de stockage principal, le procédé peut par ailleurs comprendre la tentative de lecture de l'enregistrement de données à partir d'un ou de plusieurs emplacements de stockage alternatifs sélectionnés dans la pluralité de magasins de données dans le système distribué [0011] Dans des modes de réalisation, l'emplacement de stockage principal identifié par l'exécution du modèle de mappage d'apprentissage automatique peut être une banque de données du système distribué qui est relativement éloignée d'une origine de la demande de lecture, la pluralité de magasins de données peut inclure une banque de données préféré qui est relativement locale par rapport à l'origine de la demande de lecture, et le procédé peut par ailleurs comprendre l'enregistrement de détails de la demande de localisation conjointement à des détails de la banque de données préférée tels qu'un emplacement de stockage principal cible, pour une utilisation dans la mise à jour du modèle de mappage d'apprentissage automatique. [0012] La mise à jour du modèle peut comprendre, dans certains modes de réalisation, la transmission des détails enregistrés d'une ou de plusieurs demandes de localisation et des emplacements de stockage principaux cibles correspondants à un serveur de cartographie du système distribué, dans lequel le serveur de cartographie est configure pour mettre à jour le modèle de mappage d'apprentissage automatique. Un modèle de mappage d'apprentissage automatique mis à jour peut ensuite être reçu du serveur de cartographie. [0013] Avantageusement, dans de tels modes de réalisation, le modèle de mappage peut être mis à jour en réponse aux performances d'une carte actuelle. En particulier, chaque exécution du modèle peut donner lieu à une « réussite », dans laquelle les données requises se trouvent dans une banque de données relativement locale par rapport à l'origine de la demande associée, ou un « échec », dans lequel les données requises se trouvent dans une banque de données relativement éloignée de l'origine de la demande. L'occurrence d'un nombre excessif d'« échecs », soit en termes absolus soit par rapport au nombre de « réussites » sur une période donnée, peut être utilisée pour déclencher une mise à jour de la carte. Un seuil peut être déterminé pour ce déclenchement de sorte que, d'une part, les mises à jour de cartes ne se produisent pas trop fréquemment - ce qui peut donner lieu à une utilisation excessive des ressources de traitement dans la formation du modèle de mappage, et à l'instabilité du système tandis que, d'autre part, les mises à jour se produisent assez fréquemment pour améliorer le placement de données basé sur l'expérience, et poursuivre tout changement en cours des modèles d'utilisation de données. [0014] Dans des modes de réalisation, le procédé peut par ailleurs comprendre la transmission d'une copie du modèle de mappage d'apprentissage automatique à un ou plusieurs serveurs de mappage du système distribué, dans lequel les serveurs de mappage sont configurés pour exécuter le modèle de mappage d'apprentissage automatique pour déterminer les emplacements de stockage principaux pour les enregistrements de données basés sur les demandes de localisation reçues. [0015] Le procédé peut par ailleurs comprendre : la réception, par un serveur de cartographie provenant d'un ou de plusieurs serveurs de mappage, des détails d'une ou plusieurs demandes de localisation et les emplacements de stockage principaux cibles correspondants pour lesquels, dans chaque cas, un emplacement de stockage principal identifié par l'exécution de la copie transmise du modèle de mappage d'apprentissage automatique est différent de l'emplacement de stockage principal cible ; la mise à jour, par le serveur de cartographie, de l'ensemble des vecteurs de caractéristique d'apprentissage basés sur les détails reçus des demandes de localisation ;et la formation, par le serveur de cartographie, du modèle de mappage d'apprentissage automatique en utilisant l'ensemble mis à jour de vecteurs de caractéristique d'apprentissage et un ensemble correspondant d'emplacements de stockage principaux cibles. [0016] Dans des modes de réalisation, l'étape de formation du modèle de mappage d'apprentissage automatique est exécutée une fois qu'un seuil est atteint dans un certain nombre de détails reçus d'une ou de plusieurs demandes de localisation et les emplacements de stockage principaux cibles correspondants pour lesquels, dans chaque cas, un emplacement de stockage principal identifié par l'exécution de la copie transmise du modèle de mappage d'apprentissage automatique est différent de l'emplacement de stockage principal cible. Avantageusement, le seuil peut être fixé de sorte que, comme il a été noté ci-dessus, la fréquence des mises à jour de cartes perturbe un équilibre entre l'utilisation des ressources de traitement dans la formation du modèle de mappage ainsi que la stabilité du système, et l'obtention d'améliorations en cours en termes de placement de données basé sur l'expérience ainsi que le suivi des changements en cours dans les modèles d'utilisation de données. [0017] Avantageusement, le serveur de cartographie peut associer une heure d'activation au modèle de mappage d'apprentissage automatique mis à jour, et les serveurs de mappage peuvent être configurés pour exécuter le modèle de mappage d'apprentissage automatique mis à jour pour déterminer les emplacements de stockage principaux pour les enregistrements de données basés sur les demandes de localisation reçues suite à l'heure d'activation. De cette manière, l'activation et l'utilisation des cartes mises à jour peuvent être synchronisées dans le système. [0018] Dans un exemple de mode de réalisation, les magasins de données contiennent des informations ayant une signification géographique, et les vecteurs de caractéristique de prédiction et d'apprentissage comprennent des éléments géographiques. Plus particulièrement, les informations ayant une signification géographique peuvent comprendre des informations de voyage, et un ou plusieurs des éléments géographiques peuvent être sélectionnés dans le groupe comprenant : un identifiant du bureau demandeur ; un 6 identifiant d'emplacement du bureau demandeur ; un identifiant d'emplacement d'origine de voyage ; un identifiant d'emplacement de destination de voyage ; un identifiant de prestataire de services de voyage ;un identifiant de jour de semaine de service ; un identifiant d'emplacement d'embarquement de service ; et un identifiant d'emplacement de débarquement de service. Avantageusement, l'utilisation de tels éléments de caractéristique géographique peuvent exploiter une synergie entre la distribution géographique du système lui-même, et les données stockées, le modèle de mappage d'apprentissage automatique étant capable d'exécuter des moteurs basés sur des règles classiques pour le placement de données. [0019] Dans un autre aspect, l'invention fournit un système distribué comprenant : une pluralité de magasins de données, dans laquelle chaque banque de données se situe physiquement dans un emplacement géographique correspondant ; une pluralité de serveurs de [nappage ; et au moins un serveur de cartographie, dans lequel la banque de données, les serveurs de mappage et le serveur de car- tographie sont connectés pour pouvoir communiquer via un réseau de données distribué, dans lequel le serveur de cartographie est configuré pour générer un modèle de mappage d'apprentissage automatique en : initialisant le modèle de mappage d'apprentissage automatique en utilisant les informations de topologie du réseau de données distribué ; déterminant un ensemble de vecteurs de caractéristique d'apprentissage, les vecteurs de caractéristique d'apprentissage étant dérivées des valeurs de métadonnées associées à une pluralité de demandes de localisation antérieures ; formant le modèle de mappage d'apprentissage automatique en utilisant l'ensemble des vecteurs de caractéristique d'apprentissage et les emplacements associés à la pluralité de magasins de données ; et en transmettant les copies du modèle de mappage d'apprentissage automatique à la pluralité de serveurs de mappage ; dans lequel chacun de la pluralité des serveurs de mappage est configuré pour déterminer un emplacement de stockage principal pour un enregistrement de données, à partir de la pluralité de magasins de données, en : recevant une demande de localisation associée à l'enregistrement de données, la demande de localisation incluant une pluralité de valeurs de métadonnées ; traitant les valeurs de métadonnées pour déterminer un vecteur de caractéristique comprenant une pluralité de valeurs de caractéristique ; et exécutant le modèle de mappage d'apprentissage automatique en utilisant le vecteur de caractéristique pour identifier une banque de données de la pluralité de magasins de 7 données comme l'emplacement de stockage principal pour l'enregistrement de données associé à la demande de localisation. [0020] Dans un autre aspect, l'invention fournit un procédé, mis en oeuvre par ordinateur,de détermination d'un emplacement de stockage principal pour un enregistrement de données dans un système distribué qui comprend une pluralité de magasins de données, dans lequel chaque banque de données est physiquement située dans un emplacement géographique correspondant, le procédé comprenant les étapes : de réception d'une demande de localisation associée à l'enregistrement de données, la demande de localisation incluant une pluralité de valeurs de métadonnées ; de traitement des valeurs de métadonnées pour déterminer un vecteur de caractéristique comprenant une pluralité de valeurs de caractéristique ; et d'exécution d'un modèle de mappage d'apprentissage automatique en utilisant le vecteur de caractéristiques pour identifier une banque de données de la pluralité de magasins de données comme l'emplacement de stockage principal pour l'enregistrement de données associé à la demande de localisation, le modèle de mappage ayant été initialisé en utilisant les informations de topologie du système distribué et formé en utilisant un ensemble de vecteurs de caractéristique d'apprentissage et les emplacements de stockage principaux cibles associés, les vecteurs de caractéristique d'apprentissage étant dérivés des valeurs de métadonnées associées à une pluralité de demandes de localisation antérieures. [0021] Dans un autre aspect, l'invention fournit un procédé, mis en oeuvre par ordinateur, de génération d'un modèle de mappage d'apprentissage automatique configuré pour déterminer un emplacement de stockage principal d'un enregistrement de données dans un système distribué qui comprend une pluralité de magasins de données, dans lequel chaque banque de données est physiquement située dans un emplacement géographique correspondant, le procédé comprenant les étapes : d'initialisation du modèle de mappage d'apprentissage automatique en utilisant les informations de topologie du système distribué ; de détermination d'un ensemble de vecteurs de caractéristique d'apprentissage, les vecteurs de caractéristique d'apprentissage étant dérivés des valeurs de métadonnées associées à une pluralité de demandes de localisation antérieures; et la formation du modèle de mappage d'apprentissage automatique en utilisant l'ensemble des vecteurs de caractéristique d'apprentissage et un ensemble correspondant d'emplacements de stockage principaux cibles. [0022] A partir de la description qui suit, divers modes de réalisation, d'autres aspects, avantages et caractéristiques des modes de réalisation de l'invention seront apparents aux hommes de métier spécialisés dans les domaines pertinents. On notera cependant, 8 que l'invention n'est pas limitée aux modes de réalisation décrits qui sont fournis à titre d'illustration des principes de l'invention et pour assister les hommes de métier à mettre en pratique ces principes. [0023] Des modes de réalisation de l'invention seront maintenant décrits par rapport aux dessins qui suivent dans lesquels des numéros référentiels font référence à des caractéristiques similaires et dans lesquels : [0024] [fig.1] est un diagramme schématique d'un système distribué de récupération et de stockage des données dématérialisé mettant en oeuvre l'invention. [0025] [fig.2] est un diagramme bloc illustrant une architecture de haut niveau du système de la Figure 1. [0026] [fig.3] est un diagramme bloc d'une architecture de serveur de cartographie mettant en oeuvre l'invention. [0027] [fig.4] est un diagramme bloc d'une architecture de serveur de cartographie mettant en oeuvre l'invention. [0028] [fig.5] est un diagramme bloc d'une architecture de serveur de cartographie mettant en oeuvre l'invention. [0029] [fig.6À] est un organigramme illustrant un procédé exemplaire de stockage de données exécuté par le serveur de mappage de la Figure 4. [0030] [fig.6B] est un organigramme illustrant un procédé exemplaire de stockage de données exécuté par le serveur de mappage de la Figure 4. [0031] [fig.7A] est un organigramme illustrant un procédé exemplaire de récupération de données exécuté par le serveur de mappage de la Figure 4. [0032] [fig.7B] est un organigramme illustrant un procédé exemplaire de récupération de données exécuté par le serveur de mappage de la Figure 4. [0033] [fig.7C] est un organigramme illustrant un procédé exemplaire de récupération de données exécuté par le serveur de mappage de la Figure 4. [0034] [fig.7D] est un organigramme illustrant un procédé exemplaire de récupération de données exécuté par le serveur de mappage de la Figure 4. [0035] [fig.8] est un organigramme illustrant un procédé exemplaire de mise à jour de carte exécuté par le serveur de cartographie de la Figure 3. [0036] La Figure 1 est un diagramme bloc illustrant un premier système en réseau exemplaire comprenant un système distribué de récupération et de stockage des données 100 incluant un serveur de cartographie 102 et un serveur de mappage 104 mettant en oeuvre l'invention. Une unité de stockage des données, c.-à-d. la base de données 106, est associé au serveur de mappage 104. Le système 100 inclut par ailleurs des noeuds distribués géographiquement, par ex. 108, chacun pouvant comprendre au moins un serveur de mappage similaire au serveur 104 associé de manière fonctionnelle à une ou plusieurs unités de stockage de données similaires à la base de 9 données 106, tel que décrit plus en détail ci-dessous en référence à la Figure 2. [0037] Le serveur de cartographie 102 comprend un système basé sur un apprentissage au- tomatique (ML) configuré pour générer et distribuer des modèles formés - également appelés « cartes » dans la présente description - configurés pour déterminer le placement préféré des données dans le système distribué 100. Spécifiquement, les cartes générées par le serveur de cartographie sont distribuées à une pluralité de serveurs de mappagc, tels que le serveur de mappagc 104 présenté à la Figure 1. Les serveurs de mappagc exécutent les cartes distribuées pour déterminer le placement préféré des données en réponse à des demandes reçues des acteurs, tels que des utilisateurs du système de stockage distribué 100 comme représentés par le terminal utilisateur 110. [0038] Le système 100 peut être distribué sur une zone géographique très vaste, et en par- ticulier, il peut s'agir d'un système global interconnecté via Internet. Dans un tel système, le placement de données peut avoir un impact significatif sur les performances et les coûts de fonctionnement. Par exemple, un terminal 110 qui demandent une récupération de données recevra typiquement une réponse plus rapide, si les données demandées sont situées dans une base de données 106 connectée à une partie relativement locale par rapport à Internet 112, par rapport au temps de réponse si les données sont situées dans une hase de données associée à un noeud 108 qui est connecté à une partie relativement éloignée d'Tnternet 114. De plus, si les données sont de préférence stockées dans des bases de données, par ex. 106, qui sont relativement locales par rapport aux utilisateurs, par exemple du terminal 110, qui sont plus susceptibles de demander ces données, les frais de fonctionnement du système 100 peuvent être réduits, en minimisant le besoin de transférer les données entre les emplacements de stockage 106, 108 et/ou pour conserver les répliques distribuées de données. [0039] Le serveur de cartographie 102 peut comprendre un système informatique ayant une architecture conventionnelle. En particulier, le serveur de cartographie 102, tel qu'il est illustré, comprend un processeur 116. Le processeur 116 est associé de façon fonctionnelle à un dispositif de stockage/mémoire non volatile 118, par ex. via un ou plusieurs bus de données/adresses 120 tel qu'illustré. Le stockage non volatile 118 peut être un disque dur et/ou peut inclure une mémoire non volatile à état défini, telle qu'une mémoire morte à lecture seule ROM, une mémoire flash, un disque dur électronique (SSD) ou similaire. Le processeur 116 sert aussi d'interface au stockage volatile 122 tel que la RAM qui contient des instructions de programme et des données temporaires relatives au fonctionnement du serveur de cartographie 102. [0040] Dans une configuration conventionnelle, le dispositif de stockage 118 maintient un programme connu et un contenu de données pertinent pour le fonctionnement normal du serveur de cartographie 102. Par exemple, le dispositif de stockage 1 1 8 peut contenir des programmes de système d'exploitation et des données ainsi que d'autres logiciels d'application exécutables nécessaires pour les fonctions voulues du serveur de cartographie 102. Le dispositif de stockage 1 1 8 contient aussi des instructions de programme qui, lorsqu'elles sont exécutées par le processeur 116, amènent le serveur de cartographie 102 à effectuer des opérations relatives à un mode de réalisation de la présente invention, lesquelles sont décrites plus en détail ci-dessous en référence aux Figures 2,3 et 8 en particulier. En pratique, les instructions et les données stockées sur le dispositif de stockage 1 1 8 sont transférées à la mémoire volatile 122 pour une exécution à la demande. [0041] Le processeur 116 est aussi associé fonctionnellement à une interface de commu- nication 124 d'une manière conventionnelle. L'interface de communication 124 facilite l'accès à un réseau étendu de communications de données, tel qu'internet 114. [0042] Dans la pratique, le stockage volatile 122 contient un corps d'instructions de programme correspondant 126 transféré à partir du dispositif de stockage 118 et qui est configuré pour effectuer le traitement et d'autres opérations afin de mettre en oeuvre les caractéristiques de la présente invention. Les instructions de programme 126 comprennent une contribution à l'état de la technique développé et configuré spécifiquement pour mettre en oeuvre un mode de réalisation de l'invention qui va au delà de l'activité conventionnelle, de routine et bien comprise en rapport avec le stockage de données distribué, tel que décrit ci-dessous, particulièrement en référence aux Figures 2, 3 et 8. [0043] De manière similaire, le serveur de mappage 104 - qui est représentatif d'une pluralité de serveurs de mappage présents dans un mode de réalisation pratique de l'invention - peut également comprendre un système informatique ayant une architecture conventionnelle. En particulier, le serveur de mappage 104 comprend un processeur 128, qui est associé de manière fonctionnelle à un dispositif de stockage/ mémoire non volatile 130, par ex. via un ou plusieurs bus de données/adresses 132 tel qu'illustré. Le processeur 128 sert aussi d'interface au stockage volatile 134 qui contient les instructions de programme et les données transitoires liées au fonctionnement du serveur de mappage 104. [0044] Le dispositif de stockage 130 conserve le programme connu et un contenu de données connu pertinents pour le fonctionnement normal du serveur de mappage 104, tel que les programmes de système d'exploitation et les données, ainsi que d'autres logiciels d'application exécutables nécessaires pour les fonctions visées du serveur de mappage 104. Le dispositif de stockage 130 contient aussi des instructions de programme qui, lorsqu'elles sont exécutées par le processeur 128, amènent le serveur de mappage 104 à effectuer des opérations relatives à un mode de réalisation de la 11 présente invention, lesquelles sont décrites plus en détail ci-dessous en référence aux Figures 2 et 4 à 7. En fonctionnement, les instructions et les données stockées sur le dispositif de stockage 130 sont transférées à la mémoire volatile 134 pour une exécution à la demande. [0045] Le processeur 128 est également associé de manière fonctionnelle à une interface de communication 136 qui facilite l'accès à un réseau étendu de communication de données, tel qu'Internes 112. [0046] Lors de l'utilisation, le stockage volatile 134 contient un corps d'instructions de programme correspondant 138 transféré à partir du dispositif de stockage 130 et qui est configuré pour effectuer le traitement et d'autres opérations mettant en oeuvre les caractéristiques de la présente invention. Les instructions de programme 138 comprennent une contribution à l'état de la technique développé et configuré spécifiquement pour mettre en oeuvre un mode de réalisation de l'invention qui va au delà de l'activité conventionnelle de routine et bien comprise en rapport avec le stockage de données distribué, tel que décrit plus amplement ci-dessous, particulièrement en référence aux Figures 2 et 4 à 7. [0047] Concernant l'aperçu global précédent des serveurs de cartographie et de mappage 102, 104, et d'autres systèmes et dispositifs de traitement décrits dans cette spécification, les termes tels que 'processeurs', 'ordinateur' et ainsi de suite, sauf si le contexte l'exige autrement, doivent être interprétés comme faisant référence à une gamme de mise en oeuvre possibles des dispositifs, appareils et systèmes comprenant une combinaison de logiciels et de matériel. Cela inclut des dispositifs à processeur unique et à processeurs multiples et un appareil, incluant les dispositifs portables, les ordinateurs de bureau et divers types de systèmes de serveur, incluant du matériel collaboratif et des plateformes logicielles qui peuvent cohabiter ou être distribuées. Les processeurs physiques peuvent inclure des unités centrales de traitement (CPUs), usage général, des processeurs de signaux numériques, des unités de traitement graphique (GPUs) et/ou d'autres dispositifs matériels appropriés pour une exécution efficace des programmes et des algorithmes nécessaires. [0048] Les systèmes informatiques peuvent inclure des architectures conventionnelles d'ordinateur personnel ou d'autres platefonnes matérielles à usage général. Les logiciels peuvent inclure des logiciels de sources libres et/ou des logiciels de systèmes d'exploitation vendus sur le marché en combinaison avec diverses applications et programmes de services. Autrement, les plateformes de traitement ou de calcul peuvent comprendre du matériel et/ou des architectures de logiciel sur mesure. Pour une extensibilité améliorée, les systèmes de traitement et de calcul peuvent comprendre des plateformes d'informatique dématérialisées permettant aux ressources matérielles physiques d'être allouées de façon dynamique en réponse aux demandes de services. 12 Tandis que toutes ces variations sont comprises dans la portée de la présente invention, pour faciliter l'explication et la compréhension, des modes de réalisation exemplaires sont décrits dans les présentes avec une référence, à titre illustratif, à des plateformes informatiques à usage général à processeur unique, à des plateformes de système d'exploitation couramment disponibles et/ou à des produits de consommateurs largement disponibles, tels que des dispositifs informatiques de classe serveur, des ordinateurs de bureau (PCs), des ordinateurs compact ou ordinateurs portables (PCs), des smartphones, des tablettes informatiques et ainsi de suite. [0049] En particulier, les termes « unité de traitement » et « module » sont utilisé dans cette spécification pour faire référence à toute combinaison appropriée de matériel et de logiciels configurés pour effectuer une tâche particulière définie, telle que le stockage et la récupération des données, le traitement de données, le calcul de caractéristiques d'entrée d'un ou de plusieurs modèles d'apprentissage automatique, l'exécution de la formation et/ou d'autres étapes de configuration d'un ou de plusieurs modèles d'apprentissage automatique, ou l'exécution de modèles d'apprentissage automatique pour déterminer les emplacements préférés de stockage/placement des données. De telles unités ou modules de traitement peuvent comprendre un code exécutable qui s'exécute à un emplacement unique sur un dispositif de traitement unique, ou qui peuvent comprendre des modules collaboratifs de code exécutable qui s'exécutent à de multiples emplacements et/ou sur de multiples dispositifs de traitement. Par exemple, dans certains modes de réalisation de l'invention, les opérations du serveur de cartographie 102 peuvent être mises en oeuvre entièrement par un code en exécution sur un seul système, tandis que dans d'autres modes de réalisation le traitement correspondant peut être mis en oeuvre d'une manière distribuée sur une pluralité de systèmes. [0050] Les composants logiciels, par ex. les instructions de programme 126, 138, mettant en oeuvre les caractéristiques de l'invention peuvent être développés en utilisant tout langage de programmation approprié, environnement de développement ou combinaisons de langage et d'environnements de développement qui seront familiers aux hommes de métier spécialisés dans l'ingénierie logicielle. Par exemple, des logiciels appropriés peuvent être développés en utilisant le langage de programmation C, le langage de programmation Java, le langage de programmation Scala, le langage de programmation C++, le langage de programmation Go, le langage de programmation Python, le langage de programmation R et/ou d'autres langages appropriés pour la mise en oeuvre de l'apprentissage automatique et d'autres algorithmes. Le développement de modèles d'apprentissage automatique mettant en oeuvre l'invention peut être assisté par l'utilisation de bibliothèques de codes d'apprentissage automatique telles que les bibliothèques TensorFlow, PyTorch, Keras, CatBoost, H20, et XGBoost 13 Les hommes de métier comprendront cependant que les modes de réalisation de l'invention impliquent la mise en oeuvres de structures logicielles et de code qui ne sont ni bien compris, ni routiniers ou conventionnels dans l'art des systèmes d'apprentissage automatique et que, même si des bibliothèques existantes peuvent aider à la mise en oeuvre, elles nécessitent une configuration spécifique et une augmentation substantielle (c.-à-d. le développement de code supplémentaire) afin de réaliser les divers bénéfices et avantages de l'invention et d'implémenter les structures spécifiques, le traitement, les calculs et les algorithmes décrits ci-dessous particulièrement en référence aux Figures 2 à 8. [0051] Les exemples suivants de langages, d'environnements, et de bibliothèques de code ne sont pas censés être limitatifs et on comprendra que tout langage, bibliothèque et système de développement appropriés peut être utilisé(c) conformément aux exigences du système. Les descriptions, diagrammes bloc, organigrammes et autres qui sont présentés dans cette spécification sont fournis à titre d'exemple pour permettre aux hommes de métier spécialisés dans l'ingénierie logicielle et l'apprentissage automatique de comprendre et d'apprécier les caractéristiques, la nature et la portée de l'invention, et pour mettre un ou plusieurs modes de réalisation de l'invention en pratique par la mise en oeuvre de code logiciel adapté en utilisant tout langage, structure, bibliothèque et système de développement conformément à cette divulgation sans avoir à y apporter une ingéniosité inventive supplémentaire. [0052] 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 comme un produit de 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, disposant en lui même d'instructions de programme lisibles par ordinateur, permettant à un processeur de mettre en oeuvre des aspects des modes de réalisation de l'invention. [0053] Les supports de stockage de données lisibles par ordinateur peuvent inclure des médias tangibles volatiles et non volatiles, amovibles et non amovibles, mis en oeuvre dans tout procédé ou technologie de stockage des informations, tels que des instructions de programme lisibles par ordinateur, des structures de donnée, des modules de programme, ou autres données. Les supports de stockage lisibles par ordinateur peuvent aussi comprendre une mémoire à accès aléatoire (RAM), une mémoire à lecture seule (ROM), une mémoire à lecture exclusivement, programmable et effaçable (EPROM), une mémoire à lecture exclusivement, programmable et effaçable électriquement (EEPROM), une mémoire flash, ou toute technologie de support de mémoire à état défini, un disque compact portable doté d'une mémoire à lecture seule (CD-ROM), ou tout autre stockage optique, des cassettes magnétiques, une bande 14 d'enregistrement magnétique, un disque de stockage magnétique ou d'autres dispositifs de stockage magnétique, ou tout autre support pouvant être utilisé pour stocker les informationssouhaitées et pouvant être lu par un ordinateur. Bien qu'un support de stockage lisible par ordinateur ne puisse pas comprendre de signaux transitoires en soi (par ex. des ondes radio ou d'autres ondes électromagnétiques se propageant, les ondes électromagnétiques se propageant via un support de transmission tel qu'un guide d'ondes, ou des signaux électriques transmis par un fil), les instructions de programme lisibles par ordinateur peuvent être téléchargées via de tels signaux transitoires sur un ordinateur, un autre type d'appareil de traitement de données programmable ou un autre dispositif à partir du support de stockage lisible par ordinateur ou vers un ordinateur externe ou un dispositif de stockage externe via un réseau. [0054] Les instructions de programme lisibles par ordinateur, stockées dans un support lisible par ordinateur, peuvent être utilisées pour amener un ordinateur, d'autres types d'appareils programmables de traitement, ou d'autres dispositifs, à 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, les actions et/ou les opérations spécifiées dans les organigrammes, diagrammes de séquence, et/ou diagrammes blocs. Les instructions de programme informatique peuvent être fournies par un ou plusieurs processeurs sur un ordinateur à usage général, un ordinateur à usage spécial, ou tout autre appareil programmable de traitement de données pour produire une machine telle que les instructions qui sont exécutées par l'intermédiaire d'un ou de plusieurs processeurs provoquent une série de calculs devant être effectués pour mettre en oeuvre les fonctions, actions et/ou opérations précisées dans les organigrammes, diagrammes séquentiels et/ou diagrammes blocs. [0055] Faisons maintenant référence à la Figure 2, un diagramme bloc illustrant une ar- chitecture de haut niveau 200 qui est un exemple du système 100 de la Figure 1 est représenté. Dans l'exemple 200, un serveur de cartographie unique 102 communique avec trois serveurs de mappage distribués géographiquement 104a, 104b, 104c. Une base de données correspondante, relativement locale 106a, 106b, 106c est associée à chaque serveur de mappage. Chaque serveur de mappage fournit la demande de stockage et de récupération pour le compte d'un ou plusieurs utilisateurs relativement locaux 110a, 110b, 110c du système 200. Conformément aux modes de réalisation de l'invention, le serveur de cartographie 102 génère et distribue des modèles d'apprentissage automatique formés, c.-à-d. des cartes, aux serveurs de mappage 104a, 104b, 104c. Les cartes sont configurées pour fournir en sortie un emplacement préféré de stockage des données basées sur les caractéristiques d'entrée dérivées des caractéristiques des données à stocker. Ces caractéristiques qui peuvent comprendre des éléments sélectionnés des données elles-mêmes et/ou des informations supplémentaires associées aux données ou à la demande, tel(le)s que leur origine, sont appelées « métadonnées » dans la présente description. [0056] En bref, par conséquent, les cartes générées et distribuées par le serveur de car- tographie 102 aux serveurs de mappage 104a, 104b, 104e sont configurées pour effectuer une translation des métadonnées vers un emplacement de stockage préféré des bases de données disponibles 106a, 106b, 106e dans le système 200. Les serveurs de mappage 104a, 104b, 104e utilisent ces cartes pour déterminer où stocker les données de sorte qu'en fonctionnement, elles seront situées de préférence à l'emplacement (ou aux emplacements) de stockage Ic(s) plus proche(s) de celui/ceux où elles seront le plus fréquemment demandées. Par exemple, les données qui sont les plus susceptibles d'être demandées par un utilisateur 110a devraient ainsi de préférence être stockées dans une base de données 106a, les données qui sont les plus susceptibles d'être demandées par un utilisateur 110b devraient de préférence être stockées dans une hase de données 106b, les données qui sont les plus susceptibles d'être demandées par un utilisateur 110e devraient de préférence être stockées dans une hase de données 106c. [0057] Pour faciliter la génération des cartes, le serveur de cartographie reçoit une entrée externe sous la forme d'informations de topologie 202 du système distribué 200. Les informations de topologie 202 peuvent inclure des données décrivant les emplacements relatifs et/ou absolus 206, 208, 210 des serveurs de mappage 104a, 104b, et 104e et les bases de données 106a, 106b, 106e dans le système 200 ainsi que d'autres caractéristiques du système, telles que la capacité de stockage et les coûts associés de chaque base de données. Le logiciel s'exécutant sur le serveur de cartographie est par conséquent capable de déterminer quels emplacements sont relativement locaux les uns par rapport aux autres ou éloignés les uns des autres, et également de calculer les coûts et avantages des stratégies de stockage disponibles, en termes de coût et de disponibilité de transfert et de stockage des données dans le système 200. [0058] Le serveur de cartographie reçoit également une entrée externe 204 liée aux données stockées dans le système 200. L'entrée 204 peut comprendre un modèle de données qui identifie, par exemple, des éléments et des caractéristiques des données qui sont considérées comme étant des métadonnées pertinentes pour déterminer les emplacements de stockage des données préférés. Avantageusement, le logiciel s'exécutant sur le serveur de cartographie est par conséquent capable d'éviter le traitement non nécessaire de données qui ne sont pas pertinentes pour son emplacement de stockage préféré. L'entrée 204 peut par ailleurs comprendre les données d'apprentissage pour les utiliser lors de la génération de cartes, c.-à-d. un ou plusieurs ensembles de données basés sur des modèles et/ou une simulation d'utilisation de données antérieures qui 16 peuvent être utilisés pour prédire les emplacements de stockage de données préférés. [0059] Le système 200 comprend par ailleurs des canaux de communication logiques 212, 214 entre le serveur de cartographie 102 et les serveurs de mappagc 104a, 104b, 104e. Le canal de communication 212 est dirigé du serveur de cartographie 102 vers les serveurs de mappagc 104a, 104h, 104e et est utilisé pour transmettre des cartes mises à jour. Le canal de communication 214 est dirigé des serveurs de mappage 104a, 104h, 104e vers le serveur de cartographie 102, et est utilisé pour transmettre les données liées aux performances des cartes distribuées. En particulier, chacun des serveurs de mappagc 104a, 104h, 104e collecte les données dans la mesure où les cartes actuelles réussissent à produire des placements de données locaux souhaitables. Ces données peuvent être agrégées, et retransmises périodiquement au serveur de cartographie 102 via le canal de communication 214 pour être utilisées lors de la génération de cartes mises à jour. Dans la présente description, de telles données de performance sont appelées « indicateur clé de performance » ou « KPT ». [0060] Un autre canal de communication logique 216 reliant les serveurs de mappage 104a, 104b est présenté de manière schématique, et est un exemple de la capacité des serveurs de mappagc à communiquer entre eux, par ex. afin d'interroger, de récupérer ou stocker des données détenues dans des hases de données éloignées, par ex. 106h, 106a. [0061] On notera que tandis qu'un seul serveur de mappage (c.-à-d. l'un des serveurs 104a, 104b, 104e) et une seule base de données associée (c.-à-d. l'une des bases de données 106a, 106b, 106e) est présenté à chaque emplacement 206,208, 210 à la Figure 2, en pratique de multiples serveurs de mappage et/ou base de données peuvent être fournis à chaque emplacement. En particulier, il peut être avantageux dans des modes de réalisation de l'invention d'associer de multiples serveurs de mappage chaque base de données. Des serveurs de mappage supplémentaires peuvent être employés pour fournir une redondance en cas de défaillance d'un serveur de mappage, et/ou peuvent fonctionner en parallèle pour servir des demandes de stockage et de récupération de données de sorte que le système 200 a une évolutivité améliorée en présence d'une charge de trafic accrue. [0062] Plus de détails sur le fonctionnement du serveur de cartographie 102, les serveurs de mappage 104a, 104b, 104e, et les communications entre ceux -ci, seront à présent donnés en référence aux diagrammes blocs d'architecture présentés aux Figures 3 et 4, et aux organigrammes présentés aux Figures 5 à 8. [0063] La Figure 3 est un diagramme bloc 300 d'une architecture de serveur de car- tographie 102 comprenant le logiciel 126 spécifiquement développé et configuré pour mettre en oeuvre l'invention. Le serveur de cartographie 102 comprend un module de communication entre serveurs 302, qui est responsable de la gestion des cornmu- 17 nications entre le serveur de cartographie 102 et les serveurs de mappage 104. En particulier, le module de communication entre serveurs 302 gère la transmission des cartes aux serveurs de mappage 104 via le canal de communication logique sortant 210, et la réception de données KPI provenant des serveurs de [nappage 104 via le canal de communication logique entrant 212. Le module de communication entre serveurs 302 est configuré spécifiquement pour mettre en oeuvre tout protocole requis, incluant les protocoles de sécurité tels que le cryptage et/ou la signature de données, pour communiquer avec les serveurs de mappage 104, et pour gérer les associations entre les données de cartes, les données KPI, le modèle de données, et la topologie. [0064] Les données KPI entrantes sont transférées par le module de communication entre serveurs 302 à un module gestionnaire de KPI 304 qui est responsable de l'agrégation et du traitement des données KPI reçues des serveurs de mappage. En particulier, les données KPI entrantes incluent les informations concernant les « réussites » (c.-à-d. des exemples de données disponibles dans une hase de données locale lorsqu'elles sont demandées) et les « échecs » (c.-à-d. des exemples de données indisponibles dans une hase de données locale, et nécessitant une récupération à distance, lorsqu'elles sont demandées). Le gestionnaire de KPI 304 traite ces données KPI sous une forme dans laquelle des métadonnécs associées à des réussites et des échecs sont mises en correspondance avec les emplacements de stockage préférés correspondants, de sorte qu'elles sont appropriées pour être utilisées dans des mises à jour de cartes ultérieures. [0065] Un module d'apprentissage automatique 306 reçoit des données KPI traitées du ges- tionnaire de KPI 306, ainsi que des données de topologie du système 308, et d'autres entrées externes (discutées plus en détail ci-dessous), et il emploie ces entrées pour former des modèles d'apprentissage automatique qui sont configurés pour effectuer une translation à partir de métadonnées vers un emplacement de stockage préféré. Les modèles formés comprennent les cartes qui sont distribuées aux serveurs de mappage via le module de communication entre serveurs 302. [0066] À tout moment donné, le serveur de cartographie peut retenir un nombre de cartes 310, incluant une carte actuellement active (par ex., « Carte 1 »), et zéro ou plus de cartes antérieures qui ont été précédemment générées et distribuées. Le stockage et la récupération de ces cartes, comme demandé, est géré par un module de gestion de cartes 312. Le module de gestion de cartes 312 est également responsable de la suppression des cartes quand elles ne sont plus demandées. Les cartes peuvent être stockées par date, par exemple, et supprimées lorsqu'elles atteignent un âge prédéterminé. De plus ou autrement, les cartes plus anciennes peuvent être supprimées une fois qu'un nombre prédéterminé de cartes stockées est atteint. [0067] Un module de communication externe 314 est configuré pour recevoir des données externes supplémentaires 204. Comme discuté ci-dessus, en référence à la Figure 2, les 18 données externes 204 peuvent inclure un modèle de données définissant des métadonnées pour les informations stockées dans le système distribué 200, et peuvent par ailleurs inclure un ou plusieurs ensembles de données d'apprentissage pour être utilisés par le module d'apprentissage automatique 306. Le module de communication externe 314 formate les données externes 204, et les transfère au module d'apprentissage automatique 306 pour les utiliser lors de la formation de modèles d'apprentissage automatique ultérieurs. [0068] Enfin, un module de noyau de cartographie 316 est responsable de la coordination globale des opérations des autres modules dans le serveur de cartographie 102. Les fonctions du module de noyau de cartographie incluent : la réception des données de topologie 202 et la mises à jour de la banque de données de topologie interne 308 ; le déclenchement de la génération de cartes mises à jour par le module d'apprentissage automatique 306 ; et le déclenchement de la distribution de cartes mises à jour par le module de communication entre serveurs 302. Des cartes peuvent être mises à jour en réponse à un nombre d'« échecs » traités par le gestionnaire de KPI 304 dépassant un seuil précisé, auquel cas le gestionnaire de KPI peut générer un événement correspondant qui est capturé par le module de noyau de cartographie 316. En réponse, le module de noyau de cartographie 316 peut le signaler au module d'apprentissage automatique 306 pour commencer la génération d'une carte mise à jour, basé sur les dernières données KPI traitées fournies par le gestionnaire de KPI 304, la topologie actuelle 308, et les données d'apprentissage supplémentaires reçues via le module de communication externe 314. [0069] Le module de noyau de cartographie 316 peut par ailleurs être configuré pour tenir compte de facteurs supplémentaires lors du déclenchement de la génération et de la distribution de cartes mises à jour. Par exemple, il n'est pas souhaitable de distribuer des cartes mises à jour trop fréquemment, parce que lorsqu'une carte est mise à jour il y a des données dans le système 200 qui sont stockées conformément à carte précédemment active. La carte de mise à jour générera ainsi initialement des échecs de demande de données si l'emplacement de stockage préféré est différent entre la carte mise à jour et la carte précédente, jusqu'à ce que les données stockées dans le système 200 aient été rafraîchies. En pratique, par conséquent, il est souhaitable que le délai minimum entre les mises à jour de cartes soit un peu plus long que la période moyenne pendant laquelle les données stockées sont rafraîchies. Dans des modes de réalisation de l'invention particuliers, il a été trouvé qu'une période de mise à jour de cartes minimum d'au moins deux fois et demie environ la période de rafraîchissement des données est appropriée. Les modules de noyau de cartographie 316 peut ainsi être configuré pour mettre en oeuvre cette période de mise à jour minimum. [0070] La Figure 4 est un diagramme bloc 400 d'une architecture de serveur de 19 mappagc 104 comprenant le logiciel 138 spécifiquement développé et configuré pour mettre en oeuvre l'invention. Le serveur de mappage 104 comprend un module de communication entre serveurs 402, qui est responsable de la gestion des communications entre le serveur de mappagc 104, le serveur de cartographie 102 et les serveurs de mappagc éloignés 104'. En particulier, le module de communication entre serveurs 402 gère la réception des cartes du serveur de cartographie 102 via le canal de communication logique entrant 210, et la transmission de données KPI au serveur de cartographie 102 via le canal de communication logique sortant 212. Le module de communication entre serveurs 402 est configuré spécifiquement pour mettre en oeuvre tout protocole requis, incluant les protocoles de sécurité tels que le cryptagc et/ou la signature de données, pour communiquer avec le serveur de cartographie 102, et les serveurs de mappagc éloignés 104'. [0071] Un module de noyau de mappage 404 est responsable de la fonctionnalité de hase du serveur de mappagc 104. Cette fonctionnalité de hase inclut : la mise à jour de carte en utilisant des cartes reçues via le module de communication entre serveurs 402 (décrit ci-dessous en référence à la Figure 5) ; le stockage de données (décrit ci-dessous en référence aux Figures 6A et 6B) ; et la recherche et la récupération de données (décrites ci-dessous en références aux Figures 7A, 7B, 7C et 7D). [0072] À tout moment donné, le serveur de mappagc peut retenir un nombre de cartes 406, incluant une carte actuellement active (par ex., « Carte 1 »), et zéro ou plus de cartes antérieures qui ont été précédemment générées et distribuées. Le stockage et la récupération de ces cartes, comme demandé, est géré par un module de gestion de cartes 408. Conserver de multipes cartes permet au serveur de mappage 104, et plus spécifiquement au module de noyau de mappage 404, de rechercher des emplacements antérieurs de données suite à des mises à jour de cartes, comme décrit plus en détail ci-dessous en référence à la Figure 7C. Le module de gestion de cartes 408 est également responsable de la suppression des cartes quand elles ne sont plus demandées. Les cartes peuvent être stockées par date, par exemple, et supprimées lorsqu'elles atteignent un âge prédéterminé. De plus ou autrement, les cartes plus anciennes peuvent être supprimées une fois qu'un nombre prédéterminé de cartes stockées est atteint. [0073] Un module de communication externe 410 est responsable du traitement des messages reçus de clients de bases de données, tels que les terminaux 110, incluant des demandes de recherche/récupération de données et de stockage de données. Les demandes sont transférées au noyau de mappage 404 pour traitement, et tout résultat est renvoyé au demandeur 110. [0074] Le stockage de, la recherche de et la récupération dans la base de données locale 106 sont gérés par un module de couche d'abstraction de stockage de données 412. La fonction de ce module est d'effectuer une translation entre une API interne présentée au noyau de mappage 404, et une interface spécifique à la base de données particulière 106 avec laquelle le serveur de mappage est connecté de manière fonctionnelle. Cela facilite le fonctionnement du serveur de mappage 104 avec différentes architectures de hase de données, en fournissant un module de couche d'abstraction approprié 412 pour chaque architecture supportée. [0075] Un module gestionnaire de KPT 414 est responsable de l'aggrégation des résultats « réussite » et « échec » générés par le noyau de mappage 404. Les données KPT agrégées sont transmises au serveur de cartographie 102 via le module de communication entre serveurs 402. La synchronisation de ces transmissions est contrôlée par un module de synchronisation 416 qui génère des signaux au gestionnaire de KPI 414 à des intervalles de temps appropriés pour fournir les mises à jour de KPI au serveur de cartographie 102. [0076] Comme présenté à la Figure 4, le module de synchronisation 416 génère également des signaux vers le gestionnaire de cartes 408. Ces signaux sont utilisés pour activer des cartes mises à jour, tel que décrit plus en détail en référence à la Figure 5, qui présente un organigramme 500 illustrant un procédé exemplaire de remplacement de carte mis en oeuvre dans le logiciel 138 spécifiquement développé et configuré pour mettre en oeuvre l'invention et exécuté par le serveur de mappage 104. [0077] En particulier, à l'étape 502, le serveur de mappage 104 récupère une carte mise à jour dans le serveur de cartographie 102. La carte, qui est notée Mi, est reçue via le module de communication entre serveurs 402, et est initialement traitée par le noyau de mappage 404. La carte Mi a une heure d'activation associée ti, qui est fixé par le serveur de cartographie 102 pour s'assurer que les mises à jour de cartes sont synchronisées parmi la pluralité de serveurs de mappage 104. À l'étape 504, le noyau de mappage transfère la carte mise à jour au gestionnaire de cartes 408 pour stockage dans la liste de cartes 406. À cette étape, cependant, la carte n'est pas encore activée, le serveur de mappage 104 continue à fonctionner en utilisant la carte alors active. À l'étape 506, l'heure d'activation associée ti est enregistrée avec le module de synchronisation 416. [0078] Lorsque l'heure actuelle atteint l'heure d'activation enregistrée ti, le module de syn- chronisation 416 génère un signal qui est capté par le gestionnaire de cartes 408 à l'étape 508. Cela déclenche gestionnaire de cartes 408 pour activer la carte mise à jour Mi à l'étape 510. À ce stade, la carte active précédemment devient une carte antérieure, et le serveur de mappage commence à fonctionner en utilisant la carte mise à jour Mi. L'utilisation de cartes antérieures dans la recherche et la récupération de données est décrite plus en détail ci-dessous en référence à la Figure 7 et à la Figure 7C en particulier. [0079] Les Figures 6A et 6B présentent les organigrammes 600, 618 qui illustrent collec- 21 tivement un procédé exemplaire de stockage de données mis en oeuvre dans le logiciel 138 spécifiquement développé et configuré pour mettre en oeuvre l'invention et exécuté par le serveur de mappage 104. [0080] En particulier, comme présenté à la Figure 6A, à l'étape 602, une demande de stockage de données est reçue d'un demandeur 110 via le module de communication externe 410, et est transférée au module de noyau de mappage 404 pour traitement. Le noyau de mappage extrait les métadonnées pertinentes de la demande de stockage, et utilise ces métadonnées pour dériver un vecteur de caractéristique de prédiction correspondant qui comprend une pluralité de valeurs de caractéristique de prédiction conformément au modèle de données associé aux cartes stockées 406. À l'étape 604, ce vecteur de caractéristique de prédiction est utilisé comme entrée pour exécuter la carte actuellement active, qui délivre l'emplacement de stockage maître préféré prédit, qui devient l'emplacement de stockage actuel initial. [0081] À l'étape 606, l'existence de l'emplacement de stockage actuel est vérifiée. Particu- lièrement, en fonctionnement normal, l'emplacement de stockage actuel initial, généré par l'exécution de la carte active actuelle, devrait toujours exister, et cette vérification est principalement destinée à s'assurer que le processus 600 se termine 608 une fois que les données ont été stockées à tous les emplacements requis, incluant toute réplique. [0082] À l'étape 610, l'emplacement de stockage actuel est vérifié pour déterminer s'il est local, ou éloigné (c.-à-d. associé à un autre serveur de mappage géographiquement distant). S'il est local, le contrôle passe à l'étape 612, pendant laquelle les données sont stockées dans la base de données locale 106 via le module de couche d'abstraction de stockage de données 412. En cas de stockage éloigné, le contrôle passe à l'étape 614, pendant laquelle une demande de stockage est envoyée via le module de communication entre serveurs 402 au serveur de mappage éloigné pertinent 104'. [0083] À l'étape 616, l'emplacement de tout stockage de réplique requis pour les données est déterminé. La réplication est une caractéristique commune des systèmes de bases de données distribués, et peut être employée afin de fournir des sources de donnée locales alternatives et/ou de la redondance en cas de panne de communication, de serveur ou de base de données. Dans un autre emplacement de réplique existe, les étapes de stockage sont répétées jusqu'à ce que plus aucune autre réplique n'existe, moment auquel le processus 600 se termine 608. [0084] La Figure 6B illustre le processus 618 mis en oeuvre au niveau d'un serveur de mappage éloigné 104' à la réception 620 d'une demande de stockage provenant du serveur de mappage d'origine 104 via le module de communication entre serveurs, par exemple à partir de l'étape 614 décrite ci-dessus. Comme présenté, lorsqu'une demande provient d'une source interne au système 200, plutôt que d'un demandeur externe 110, les données sont simplement stockées 622 dans la base de données locale. C'est-à-dire que le processus 600 de détermination de l'emplacement de stockage maître préféré, et/ou l'emplacement de tout stockage ou réplique éloigné(c), n'est pas dupliqué en cas d'une demande de stockage éloignée. [0085] Les Figures 7A, 7B et7C présentent les organigrammes 700, 724, 734, 744 qui illustrent collectivement un procédé exemplaire de récupération de données mis en oeuvre dans le logiciel 138 spécifiquement développé et configuré pour mettre en oeuvre l'invention et exécuté par le serveur de mappage 104. [0086] En particulier, comme présenté à la Figure 7A, à l'étape 702, une demande de stockage de données est reçue d'un demandeur 110 via le module de communication externe 410, et est transféré au module de noyau de mappage 404 pour traitement. Le noyau de mappage extrait les métadonnées pertinentes de la demande de récupération, et utilise ces métadonnécs pour dériver un vecteur de caractéristique de prédiction correspondant qui comprend une pluralité de valeurs de caractéristique de prédiction conformément au modèle de données associé aux cartes stockées 406. À l'étape 704, ce vecteur de caractéristiques de prédiction est utilisé comme entrée pour exécuter la carte actuellement active, qui délivre l'emplacement de stockage prédit des données demandées. [0087] À l'étape 706, l'emplacement de stockage prédit est vérifié pour déterminer s'il est local, ou éloigné (c.-à-d. associé à un autre serveur de mappage géographiquement distant). S'il est local, le contrôle passe à l'étape 708, pendant laquelle un KPI réussi » est envoyé au gestionnaire de KPI 414, indiquant que la carte actuelle a prédit avec succès l'emplacement de stockage local approprié pour la demande actuelle. Les données demandées sont ensuite récupérées 710 dans la base de données locale 106 via le module de couche d'abstraction de stockage de données 412. Cependant, si l'emplacement de stockage prédit est éloigné, ensuite les données ne sont pas encore trouvées et ne sont pas présentes dans l'emplacement de stockage local approprié pour la demande actuelle. Par conséquent, à l'étape 712 un KPI d'« échec » est envoyé au gestionnaire de KPI 414. [0088] À l'étape 414 une vérification est effectuée pour déterminer si les données demandées ont été trouvées. Si tel est le cas, une réponse est ensuite envoyée 716 au demandeur 110 contenant les données récupérées avec succès. Autrement, le contrôle passe à l'étape 718, pendant laquelle le module de noyau de mappage 404 tente d'identifier un emplacement de réplique éloigné pour les données demandées. Si un emplacement potentiel existe, le processus 724 décrit ci-dessous en référence à la Figure 7B est exécuté. [0089] 11 est cependant possible que des données puissent exister dans le système 200, mais ne soient pas trouvées, suite à une mise à jour de carte récente. Dans le cas où les em- 23 placements de réplique/préférés des données changent en raison de la mise à jour de cartes, et où les données n'ont pas encore été rafraîchies, elles peuvent être stockées conformément à une carte antérieure. Par conséquent, à l'étape 720 une vérification est effectuée pour déterminer s'il existe une carte antérieure pouvant fournir un emplacement pour les données demandées. Si tel est le cas, le processus 734 décrit ci-dessous en référence à la Figure 7C est ensuite exécuté. [0090] Dans le cas où les données demandées ne sont pas trouvées localement, dans un em- placement éloigné ou de réplique, ou dans un emplacement déterminé en utilisant toute carte antérieure disponible, une réponse est envoyée 722 au demandeur 110 indiquant que les données n'ont pas été trouvées. [0091] Le processus 724 illustré à la Figure 7B est exécuté pour chercher un emplacement éloigné ou de réplique après l'étape 718. À l'étape 726, un prochain emplacement potentiel à chercher est déterminé. À l'étape 728, une vérification est effectuée sur une liste d'emplacements qui ont déjà été explorés, et si le nouvel emplacement est déjà sur la liste, le contrôle revient à l'étape 718. Autrement, à l'étape 730 le module de noyau de mappage 404 extrait les informations de topologie et ajoute le nouvel emplacement à la liste des emplacements explorés, avant de demander la récupération des données dans le serveur de mappage éloigné correspondant à l'étape 732. Le résultat, qui peut comprendre les données demandées, ou une indication « non trouvée », est ensuite ramené à l'étape 714. [0092] Le processus 734 illustrés à la Figure 7C est exécuté pour chercher les données demandées en utilisant une carte antérieure provenant de la liste de cartes 406 après l'étape 720. À l'étape 736 module de noyau de mappage 404 donne l'ordre au module de gestionnaire de cartes 408 de changer la carte active actuellement par la carte antérieure disponible suivante. La carte est ensuite utilisée pour déterminer l'emplacement de stockage préféré antérieur correspondant des données demandées. À l'étape 738 une vérification est effectuée sur la liste des emplacements qui ont déjà été explorés, et si le nouvel emplacement est déjà sur la liste, le contrôle revient à l'étape 720. Autrement, à l'étape 740 le module de noyau de mappage 404 extrait les informations de topologie et ajoute le nouvel emplacement à la liste des emplacements explorés, avant de demander la récupération des données dans le serveur de mappage éloigné correspondant à l'étape 742. Le résultat, qui peut comprendre les données demandées, ou une indication «non trouvée », est ensuite ramené à l'étape 714. [0093] La Figure 7D illustre le processus 744 mis en oeuvre au niveau d'un serveur de mappage éloigné 104' à la réception 746 d'une demande de récupération provenant du serveur de mappage d'origine 104 via le module de communication entre serveurs, par exemple à partir des étapes 732 ou 742 décrites ci-dessus. Comme présenté, lorsqu'une demande provient d'une source interne au système 200, plutôt que d'un demandeur 24 externe 110, une tentative est faite simplement pour récupérer les données 748 dans la base de données locale, et le résultat (qui peut être une indication « non trouvées ») est renvoyé à l'étape 750. C'est-à-dire que le processus 700 de détermination de l'emplacement de stockage maître préféré, l'emplacement de tout stockage ou réplique éloigné(c) et/ou, une recherche en utilisant des cartes antérieures, n'est pas dupliqué en cas d'une demande de récupération éloignée. [0094] La Figure 8 est un organigramme 800 illustrant un procédé exemplaire de mise à jour de carte mis en oeuvre dans le logiciel 126 spécifiquement développé et configuré pour mettre en oeuvre l'invention et exécuté par le serveur de cartographie 102. [0095] En particulier, à l'étape 802 le module d'apprentissage automatique 306 reçoit un évènement de mise à jour. Cet évènement est généré par le module gestionnaire de KPT 304 lorsqu'il détermine que les performances de la carte actuellement active sont inadéquates. Cela peut avoir lieu lorsque le nombre de KPI d'« échec » reçu des serveurs de mappage dans le système 200 dépasse une valeur seuil, soit en termes absolus, et/ou relative au nombre de KPI « réussis ». À l'étape 804, le module d'apprentissage automatique 306 reçoit les données du module gestionnaire de KPT 304, ainsi que toute donnée d'apprentissage externe 204, et applique le modèle de données pour extraire les métadonnes pertinentes correspondant aux demandes de récupération et calcule les vecteurs de caractéristique d'apprentissage correspondants, chacun d'entre eux est associé à un emplacement de stockage préféré connu. En cas de données d'apprentissage externes 204, l'emplacement de stockage préféré peut être fourni dans les données, tandis qu'en cas de données reçues du module gestionnaire de KPI 304 l'emplacement de stockage préféré est déterminé à partir des informations de succès » et d'« échec » agrégées par les modules gestionnaires de KPI 414 des serveurs de mappage 104. Cette procédure donne lieu à un ensemble de données d'apprentissage étiqueté 806, comprenant une pluralité d'échantillons d'apprentissage, dont chacun consiste en un vecteur de caractéristiques d'apprentissage dérivé des métadonnées de demande et d'une valeur catégorielle correspondante représentant l'emplacement de stockage préféré associé. [0096] À l'étape 808, un algorithme d'apprentissage supervisé est appliqué pour former un modèle d'apprentissage automatique et prédire les emplacements de stockage préférés basés sur des caractéristiques d'apprentissage correspondant dérivés des métadonnées de demande. Conformément à des modes de réalisation de l'invention, cela représente un problème de classification multinomiale, le nombre de classes étant égal au nombre d'emplacements de stockage. Par voie d'un exemple spécifique, pour le système 200 présenté à la Figure 2 il existe trois classes correspondant aux trois emplacements 206, 208, 210. Un nombre d'algorithmes d'apprentissage automatique disponibles qui peuvent être adaptés à la génération de modèles de classification multinomiaux prédictifs, et un exemple particulier employant une mise en oeuvre de forêt aléatoire distribuée est décrit plus en détail ci-dessous. Cependant, cet exemple ne devrait pas être considéré comme limitant l'étendue de l'invention à cette mise en oeuvre spécifique. [0097] À l'étape 810, le module d'apprentissage automatique 306 génère une mise à jour de cartes, qui comprend le modèle formé. Une heure d'activation est associée à la mise à jour de cartes, pour permettre la distribution 812 de la nouvelle carte à tous les serveurs de mappage dans le système 200 avant l'activation, ce qui a été décrit ci-dessus en référence à la Figure. De cette manière, le serveur de cartographie contrôle synchroniser mis à jour de cartes dans tout le système 200. [0098] Tandis que la description technique précédente, et les principes de l'invention, peuvent être appliqués à une gamme d'applications de récupération et de stockage des données distribuées, un exemple spécifique sera à présent fourni, à des fins d'illustration supplémentaire uniquement, qui concerne l'industrie du voyage. Cependant, on notera que cet exemple est destiné à faciliter la compréhension de l'invention, et la manière dont elle peut être mise en oeuvre mais il ne faut pas la considérer comme limitant de quelque manière que ce soit l'étendue de l'invention à ce champ d'application particulier. On notera que dans l'industrie du voyage les agents de voyage et autres acteurs génèrent de larges volumes de demandes de recherche et de réservation en continu à partir d'emplacements dans le monde entier. Les hases de données qui traitent de telles demandes stockent des informations de voyage, telles que les calendriers de compagnies aériennes et la disponibilité des sièges, ce qui est conventionnellement répliqué dans de multiples emplacements pour s'assurer que chaque demande puisse être servie à partir d'un emplacement qui est relativement local par rapport au demandeur afin de satisfaire aux exigences de temps de réponse rapides. En pratique cependant, les demandes ont tendance à être corrélées avec l'emplacement, mais de manière complexe. Par exemple, un agent situé en Amérique du Nord, et agissant typiquement pour le compte de voyageurs nord américains, est bien plus susceptible d'effectuer des demandes de recherche ou de réservation de vol et d'itinéraires provenant et/ou se terminant en Amérique du Nord que de vols et d'itinéraires provenant et se terminant en Asie du Sud-Est. Par conséquent, il s'agit d'une application dans laquelle on a anticipé qu'il peut être avantageux de placer des données dans la base de données globalement distribuée conformément à l'utilisation prédite. [0099] Le tableau ci-dessous illustre les métadonnées associées aux demandes de recherche de voyage, conformément à un modèle de données exemplaire. [0100] 26 [Tall 'eaux 1] Élément de mé- tadonnées Type Exemple Explication HcureDcRejet DateHeure 25/01/2019 Date et heure de rejet 00:00:25 Bureau Catégoriel BJS1E2RAS Bureau de la demande Origine Catégoriel GOT Départ du voyage (aéroport) Destination Catégoriel SHA Arrivée du voyage (aéroport) Compagnie aérienne Catégoriel QR Compagnie aérienne Date Date 09/02/2019 Date du voyage Embarquement Catégoriel GOT Point d'embarquement du vol. Peut différer de l'origine du voyage en cas de correspondances Débarquement Catégoriel DOH Point de débarquement du vol. Peut différer de la destination du voyage en cas de con-espondances TCC Catégoriel SEL Véritable code de la ville de l'auteur de la demande [0101] Un ensemble particulier de valeurs de métadonnées peut avoir un emplacement de stockage de données préféré. Ainsi, pour chaque exemple de métadonnées spécifique, une étiquette associée peut être déterminée, correspondant à l'emplacement. de stockage préféré. C'est ce qui est illustré dans le tableau ci-dessous, qui présente quatre rangées exemplaires de métadonnées étiquetées : [0102] 27 [Tableaux2] Lign c Heure DeReje t Bureau Origine Destinat ion Co mpa gnie aéri enne Date Embar queme nt Déha TCC Centre de données rque ment 0 25/01/2 SELO CJJ CJU OZ 05/02 CJJ CJU SEL ASIE 019 Z312U /2019 00:00:2 7 1 25/01/2 BJS1E GOT SHA QR 09/02 GOT DOH SHA ASIE 019 2RAS /2019 00:00:2 5 2 25/01/2 BJS1E GOT SHA QR 10/02 DOH PVG SHA ASIE 019 2RAS /2019 00:00:2 5 3 25/01/2 BJS1E HGH HGH NH 16/02 HGH KIX SHA ASIE 019 2RAS /2019 00:00:2 7 [0103] Dans l'exemple de mise en oeuvre, les cdracté istiques sont dérivées des metadonnées ci-dessus en remplaçant l'élément « HeureDeRejet » par deux caracteristiques catégorielles : « HeureDeRejet » (représentant l'heure, 0-23, de rejet) ; et « JourSemaineRejet » (représentant le jour de la semaine, 0-6, de rejet). De plus, la Date de voyage est supprimée, et une caractéristique « JourSemaineVol » (représentant le jour de la semaine, 0-6, du vol) est ajoutée. L'ensemble de caractéristiques en résultant est illustré dans le tableau ci-dessous, dans lequel on notera que toutes les caractéristiques sont à présent catégorielles, et que ces caractéristiques incluent un identifiant de bureau demandeur (« Bureau ») ; un identifiant d'emplacement de bureau demandeur (« TCC ») ;un identifiant d'emplacement d'origine de voyage (« Origine ») ; un identifiant d'emplacement de destination de voyage (« Destination ») ; un identifiant de prestataire de service de voyage (« Compagnie aérienne ») ; un identifiant de jour de semaine de service (« JourSemaineVol ») ; un 28 identifiant d'emplacement d'embarquement de service (« Embarquement ») et un identifiant d'emplacement de débarquement de service (« Débarquement »). [0104] [Tahleaux3] Caractéristique Type Exemple Explication HeureDeRejet Catégoriel 16 Heure de rejet JourSemaineRejet Catégoriel 5 Jour de la semaine du rejet Bureau Catégoriel BJSIE2RAS Bureau de la demande Origine Catégoriel GOT Départ du voyage (aéroport) Destination Catégoriel SHA Arrivée du voyage (aéroport) Compagnie aérienne Catégoriel QR Compagnie aérienne JourSemaineVol Catégoriel 4 Jour de la semaine du vol Embarquement Catégoriel GOT Point d'embarquement du vol. Peut différer de l'origine du voyage en cas de correspondances Débarquement Catégoriel DOH Point de débarquement du vol. Peut différer de la Destination du voyage en cas de correspondances TCC Catégoriel SEL Véritable code de la ville de l'auteur de la demande [0105] Dans l'exemple de mise en oeuvre, un ensemble de données comprenant 4 205 230 échantillons était utilisé, avec trois valeurs possibles pour la cible étiquetée : AMERIQUE DU NORD (2 259 226 échantillons) ; EUROPE (1 303 192 échantillons) ; et ASIE (642 812 échantillons). Un algorithme distribué de forêt aléatoire était utilisé, basé sur la manipulation native de caractéristiques catégorielles fournies par ce type de modèle d'apprentissage automatique. Les données ont été divisées en ensembles d'apprentissage/test 80/20 et suite à une recherche d'hyperparamètres, les hyperparamètres suivants ont été sélectionnés pour apprentissage final : Nombre de plis pour la validation croisée : 4 Pli attribution : stratifié Arrêt métrique : perte de logage Arrêt séries : 3 Arrêt tolérance : 0.001 29 Nombre d'arbres : 500 Mtries: 5 Col échantillon taux par arbre : 0.8 Nombre de paniers : 512 Profondeur max : 30 [0106] Pour cet exemple, l'apprentissage a été effectué à l'aide d'un serveur Linux 24 CPU avec une RAM de 256 GB, qui a eu besoin de moins de 30 minutes pour exécuter cette étape d'apprentissage sur tout l'ensemble de données d'apprentissage et générer un modèle complètement fonctionnel. Les performances en résultant du modèle sur l'ensemble de données d'apprentissage sont résumées par la matrice de confusion suivante. [0107] [Tableaux4] ASIE EUROPE AMÉRIQUE DU NORD En-eur Taux 514326 15 10 0,0000486 25 / 514, 351 2 1042684 13 0,0000144 15 / 1 042 699 1 10 1807300 0,0000061 11 / 1 807 311 514329 1042709 1807323 0,0000152 51 / 3,364,361 [0108] Les performances sur l'ensemble de données d'apprentissage sont ainsi très élevées. Pour démontrer que cela n'est pas dû à un surajustement, la matrice de confusion suivante a résumé les performances sur l'ensemble de données de test conservé. [0109] [Tableaux5] ASIE EUROPE AMÉRIQUE DU NORD Erreur Taux 128456 4 1 0,0000389 5 / 128,461 0 260490 3 0,0000115 3 / 260,493 0 2 451913 0,0000044 2 / 451,915 128456 260496 451917 0,0000119 10 / 840,869 [0110] Les performances sur les donnes de test sont également très élevées, avec seulement 10 échantillons recevant des prédictions au mauvais emplacement de centre de données. Les résultats ci-dessus confirment par conséquent clairement la validité technique de l'utilisation du placement de données basé sur l'apprentissage automatique conformément aux modes de réalisation de l'invention comme moyen d'améliorer les performances, l'efficience, et le coût de fonctionnement des systèmes de récupération et de stockage des données distribués. [0111] Dans un mode de réalisation alternatif, l'ensemble des caractéristiques a encore été réduit en supprimant la caractéristique « Bureau ». Avantageusement, la suppression de cette caractéristique réduit la granularité des données, et permet ainsi la formation du modèle en utilisant un ensemble de données d'apprentissage réduit. Dans cet exemple, un ensemble de données de dix millions d'échantillons a été utilisé, en utilisant encore une division de apprentissage/test de 80/20. Cela a donné lieu à des performances sur l'ensemble de données d'apprentissage qui sont résumées dans la matrice de confusion suivante. [0112] [Tahleaux6] ASIE EUROPE AMÉRIQUE DU NORD Erreur Taux 12006 60 117 0,0145284 177 / 12,183 6 24537 87 0,0037759 93 / 24,630 231 1313 41606 0,0357822 1 544 / 43,150 12243 25910 41810 0,0226855 1 814 / 79,963 [0113] Les performances sur l'ensemble de données de test en utilisant l'ensemble de carac- téristiques réduit est résumé dans la matrice de confusion suivante [0114] [Tahleaux7] ASIE EUROPE AMÉRIQUE DU NORD Erreur Taux 2977 13 34 0,0155423 47 / 3,024 0 6182 21 0,0033855 21 / 6,203 53 363 10394 0,0384829 416 / 10,810 3030 6558 10449 0,0241553 484 / 20,037 [0115] Tandis que les performances ne sont pas aussi élevées que pour l'ensemble de données d'apprentissage plus grand, elles restent néanmoins très bonnes, atteignant un taux d'erreur en-dessous de 2,5 % sur l'ensemble des données test. Cependant, le fait de réduire les échantillons nécessaires pour l'apprentissage réduit également le surdébit de communication et le coût dans le système pour transférer les données d'apprentissage, fournissant ainsi un avantage alternatif. Cet exemple démontre par conséquent que, dans des modes de réalisation de l'invention alternatifs, il est viable de réduire l'ensemble de caractéristiques pour atteindre un compromis satisfaisant entre les performances prédictives du modèle et le volume de données requis pour 31 l'apprentissage. [0116] On notera que bien que des modes de réalisation particuliers et des variations de l'invention ont été décrits dans les présentes, d'autres modifications et alternatives seront apparentes aux hommes de métier spécialisés dans les domaines pertinents. En particulier, les exemples sont offerts dans le but d'illustrer les principes de l'invention et pour fournir des procédés et des arrangements spécifiques pour mettre en oeuvre ces principes. Les modes de réalisation décrits doivent être compris comme étant fournis à titrc d'exemple niais ne doivent pas être interprétés comme limitant la portée de invention. 32 [Revendication I] [Revendication 2] [Revendication 3] REVENDICATIONSUn procédé, mis en oeuvre par ordinateur, de détermination d'un emplacement de stockage principal pour un enregistrement de données dans un système distribué qui comprend une pluralité de magasins de données, dans lequel chaque banque de données est physiquement située dans un emplacement géographique correspondant, le procédé comprenant les étapes : d' initialisation d'un modèle de mappage d'apprentissage automatique en utilisant les informations de topologie du système distribué ; de détermination d'un ensemble de vecteurs de caractéristique d'apprentissage, les vecteurs de caractéristique d'apprentissage étant dérivés de valeurs de métadonnées associées à une pluralité de demandes de localisation antérieures ; de formation du modèle de mappage d'apprentissage automatique en utilisant l'ensemble de vecteurs de caractéristique d'apprentissage et un ensemble correspondant d'emplacements de stockage principaux cibles ; de réception d'une demande de localisation associée à un enregistrement de données, la demande de localisation incluant une pluralité de valeurs de métadonnées ; de traitement des valeurs de métadonnées pour déterminer un vecteur de caractéristique de prédiction comprenant une pluralité de valeurs de caractéristique de prédiction ; et d'exécution du modèle de mappage d'apprentissage automatique en utilisant le vecteur de caractéristique de prédiction comme entrée pour identidier une banque de données de la pluralité de magasins de données comme emplacement de stockage principal pour l'enregistrement de données associé à la demande de localisation. Le procédé selon la revendication 1, dans lequel la demande de localisation est associée à une demande d'écriture, et le procédé comprend par ailleurs l'écriture de l'enregistrement de données sur l'emplacement de stockage principal identifié par l'exécution du modèle de mappage d'apprentissage automatique. Le procédé selon la revendication 1, dans lequel la demande de localisation est associée à une demande de lecture, et le procédé comprend par ailleurs la tentative de lecture de l'enregistrement de données sur l'emplacement de stockage principal identifié par l'exécution du modèle de mappage d'apprentissage automatique 33 [Revendication 4] [Revendication 5] [Revendication 6] [Revendication 7] [Revendication 8] [Revendication 9] Le procédé selon la revendication 3, dans lequel l'enregistrement de données n'est pas trouvé dans l'emplacement de stockage principal, et le procédé comprend par ailleurs la tentative de lecture de l'enregistrement de données à partir d'un ou de plusieurs emplacements de stockage alternatifs sélectionnés dans la pluralité de magasins de données dans le système distribué Le procédé selon la revendication 3 ou la revendication 4, dans lequel : l'emplacement de stockage principal identifié par l'exécution du modèle de mappage d'apprentissage automatique est une banque de données du système distribué qui est relativement éloigné d'une origine de la demande de lecture ; la pluralité de magasins de données inclut une banque de données préféré qui est relativement local par rapport à l'origine de la demande de lecture ; et le procédé comprend par ailleurs l'enregistrement des détails de la demande de localisation ainsi que des détails de la banque de données préféré tels qu'un emplacement de stockage principal cible, pour une utilisation lors de la mise à jour du modèle de mappage d'apprentissage automatique. Le procédé selon la revendication 5 comprend par ailleurs la transmission des détails enregistrés d'une ou de plusieurs demandes de localisation et des emplacements de stockage principaux cibles correspondants à un serveur de cartographie du système distribué, dans lequel le serveur de cartographie est configuré pour mettre à jour le modèle de mappage d'apprentissage automatique Le procédé selon la revendication 6 comprend par ailleurs la réception d'un modèle de mappage d'apprentissage automatique mis à jour du serveur de cartographie. Le procédé selon l'une quelconque des revendications 1 à 7 comprend par ailleurs la transmission d'une copie du modèle de mappage d'apprentissage automatique à un ou plusieurs serveurs de mappage du système distribué, dans lequel les serveurs de mappage sont configurés pour exécuter le modèle de mappage d'apprentissage automatique pour déterminer les emplacements de stockage principaux des enregistrements de données basés sur les demandes de localisation reçues. Le procédé selon la revendication 8 comprend par ailleurs : la réception, par un serveur de cartographie provenant d'un ou de plusieurs serveurs de mappage, des détails d'une ou plusieurs demandes 34 [Revendication 10] [Revendication 11] [Revendication 12] [Revendication 13] de localisation et les emplacements de stockage principaux cibles correspondants pour lesquels, dans chaque cas, un emplacement de stockage principal identifié par l'exécution de la copie transmise du modèle de mappage d'apprentissage automatique est différent de l'emplacement de stockage principal cible ; la mise à jour, par le serveur de cartographie, de l'ensemble des vecteurs de caractéristique d'apprentissage basés sur les détails reçus des demandes de localisation ;et la formation, par le serveur de cartographie, du modèle de mappagc d'apprentissage automatique en utilisant l'ensemble mis à jour de vecteurs de caractéristique d'apprentissage et un ensemble correspondant d'emplacements de stockage principaux cibles. Le procédé selon la revendication 9 dans lequel l'étape de formation du modèle de mappage d'apprentissage automatique est exécutée une fois qu'un seuil est atteint dans un certains nombre de détails reçus d'une ou de plusieurs demandes de localisation et les emplacements de stockage principaux cibles correspondants pour lesquels, dans chaque cas, un emplacement de stockage principal identifié par l'exécution de la copie transmise du modèle de mappagc d'apprentissage automatique est différent de l'emplacement de stockage principal cible. Le procédé selon la revendication 9 ou la revendication 10 dans lequel : le modèle de mappage d'apprentissage automatique formé en utilisant l'ensemble mis à jour de vecteurs de caractéristique d'apprentissage est transmis par le serveur de cartographie aux serveurs de mappage comme un modèle de mappage d'apprentissage automatique mis à jour ; et les serveurs de mappage sont configurés ensuite pour exécuter le modèle de mappage d'apprentissage automatique mis à jour pour déterminer les emplacements de stockage principaux pour les enregistrements de données basés sur les demandes de localisation reçues. Le procédé selon la revendication 11 dans lequel le serveur de cartographie associe une heure d'activation au modèle de mappage d'apprentissage automatique mis à jour, et les serveurs de mappage sont configurés pour exécuter le modèle de mappage d'apprentissage automatique mis à jour pour déterminer les emplacements de stockage principal les enregistrements de données basés sur les demandes de localisation reçues suite à l'heure d'activation. Le procédé selon l'une quelconque des revendications 1 à 12 dans lequel les magasins de données contiennent des informations ayant une 35 [Revendication 14] [Revendication 15] signification géographique, et les vecteurs de caractéristique de prédiction et d'apprentissage comprennent des éléments géographiques. Le procédé selon la revendication 13 dans lequel les informations ayant une signification géographique comprennent des informations de voyage, et dans lequel un ou plusieurs des éléments géographiques sont sélectionnés dans le groupe comprenant : un identifiant du bureau demandeur ; un identifiant de localisation du bureau demandeur ; un identifiant de localisation d'origine de voyage ; un identifiant de localisation de destination de voyage ; un identifiant de prestataire de services de voyage ;un identifiant de jour de semaine de service ; un identifiant de localisation d'embarquement de service ; et un identifiant de localisation de débarquement de service. Un système distribué de détermination d'un emplacement de stockage principal pour un enregistrement de données, le système distribué comprenant : une pluralité de magasins de données, dans lequel chaque banque de données est physiquement située dans un emplacement géographique correspondant ; une pluralité de serveurs de mappage ; et au moins un serveur de cartographie, dans lequel la banque de données, les serveurs de mappage et le serveur de cartographie sont connectés pour pouvoir communiquer via un réseau de données distribué, dans lequel le serveur de cartographie est configuré pour générer un modèle de mappage d'apprentissage automatique en : initialisant le modèle de mappage d'apprentissage automatique en utilisant les informations de topologie du réseau de données distribué ; déterminant un ensemble de vecteurs de caractéristique d'apprentissage, les vecteurs de caractéristique d'apprentissage étant dérivés des valeurs de métadonnées associées à une pluralité de demandes de localisation antérieures ; formant le modèle de mappage d'apprentissage automatique en utilisant l'ensemble des vecteurs de caractéristique d'apprentissage et les emplacements associés à la pluralité de magasins de données ; et en transmettant les copies du modèle de mappage d'apprentissage automatique à la pluralité de serveurs de mappage ; dans lequel chacun de la pluralité des serveurs de mappage est configuré pour déterminer un emplacement de stockage principal pour un enre- 36 [Revendication 16] [Revendication 17] gistrement de données, à partir de la pluralité de magasins de données, en : recevant une copie du modèle de mappage d'apprentissage automatique du serveur de cartographie recevant une demande de localisation associée à l'enregistrement de données, la demande de localisation incluant une pluralité de valeurs de métadonnécs ; traitant les valeurs de métadonnécs pour déterminer un vecteur de caractéristique comprenant une pluralité de valeurs de caractéristique ; et exécutant le modèle de mappage d'apprentissage automatique en utilisant le vecteur de caractéristique comme entrée pour identifier une banque de données de la pluralité de magasins de données comme l'emplacement de stockage principal pour l'enregistrement de données associé à la demande de localisation. Un procédé, mis en oeuvre par ordinateur, de détermination d'un emplacement de stockage principal pour un enregistrement de données dans un système distribué qui comprend une pluralité dc magasins de données, dans lequel chaque banque dc données est physiquement située dans un emplacement géographique correspondant, le procédé comprenant les étapes : de réception d'une demande de localisation associée à l'enregistrement de données, la demande de localisation incluant une pluralité de valeurs de métadonnées ; de traitement des valeurs de métadonnées pour déterminer un vecteur de caractéristique comprenant une pluralité de valeurs de caractéristique ; et d'exécution d'un modèle de mappage d'apprentissage automatique en utilisant le vecteur de caractéristiques comme entrée pour identifier une banque de données de la pluralité de magasins de données comme emplacement de stockage principal pour l'enregistrement de données associé à la demande de localisation, le modèle de mappage ayant été initialisé en utilisant les informations de topologie du système distribué et formé en utilisant un ensemble de vecteurs de caractéristique d'apprentissage et les emplacements de stockage principaux cibles associés, les vecteurs de caractéristique d'apprentissage étant dérivés des valeurs de métadonnées associées à une pluralité de demandes de localisation antérieures. Un procédé, mis en oeuvre par ordinateur, de génération d'un modèle de 37 mappage d'apprentissage automatique configure pour déterminer un emplacement de stockage principal pour un un enregistrement de données dans un système distribué qui comprend une pluralité de magasins de données, dans lequel chaque banque de données est physiquement située dans un emplacement géographique correspondant, le procédé comprenant les étapes : d'initialisation du modèle de mappage d'apprentissage automatique en utilisant les informations de topologie du système distribué ; de détermination d'un ensemble de vecteurs de caractéristique d'apprentissage, les vecteurs de caractéristique d'apprentissage étant dérivés des valeurs de métadonnées associées à une pluralité de demandes de localisation antérieures; et la formation du modèle de mappage d'apprentissage automatique en utilisant l'ensemble des vecteurs de caractéristiques d'apprentissage et un ensemble correspondant d'emplacements de stockage principaux cibles.