FR3081238A1 - Mise en memoire cache de base de donnees - Google Patents

Mise en memoire cache de base de donnees Download PDF

Info

Publication number
FR3081238A1
FR3081238A1 FR1854120A FR1854120A FR3081238A1 FR 3081238 A1 FR3081238 A1 FR 3081238A1 FR 1854120 A FR1854120 A FR 1854120A FR 1854120 A FR1854120 A FR 1854120A FR 3081238 A1 FR3081238 A1 FR 3081238A1
Authority
FR
France
Prior art keywords
database
cache memory
result
results
representation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
FR1854120A
Other languages
English (en)
Inventor
Michel Demazeau
Celine Soubra
Jean-Philippe Perret
Marco Salibba
Jacques Bonaud
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amadeus SAS
Original Assignee
Amadeus SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amadeus SAS filed Critical Amadeus SAS
Priority to FR1854120A priority Critical patent/FR3081238A1/fr
Priority to US16/409,318 priority patent/US11157501B2/en
Priority to ES19174827T priority patent/ES2882923T3/es
Priority to EP19174827.6A priority patent/EP3570184B1/fr
Priority to CN201910414308.3A priority patent/CN110502534B/zh
Publication of FR3081238A1 publication Critical patent/FR3081238A1/fr
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Un procédé, une mémoire cache, un système de base de données et un programme informatique pour traiter les requêtes de base de données et récupérer les résultats d'un calcul de données d'un système de base de données dans une mémoire cache. La mémoire cache stocke une représentation d'un espace de données d'une ou de plusieurs bases de données du système de base de données, incluant un ou plusieurs résultat(s) pour toute requête de bases de données pour laquelle l'espace des données est en mesure de délivrer un résultat. En réponse à la réception d'une requête base de données d'un client, la mémoire cache détermine en utilisant la représentation stockée, si l'espace de données est en mesure de délivrer un ou plusieurs résultats pour la requête de base de données. Dans l'affirmative, un ou plusieurs résultat(s) supplémentaire(s) est/sont renvoyé(s) au client à partir de la représentation de la mémoire cache. Autrement, la mémoire cache renvoie une notification d'invalidité.

Description

MISE EN MEMOIRE CACHE DE BASE DE DONNEES
DOMAINE TECHNIQUE [0001] La présente invention concerne la technologie de base de données. Elle concerne en particulier la mise en mémoire cache de résultats de requête de base de données.
CONTEXTE [0002] La mise en mémoire cache de bases de données stocke une sélection de données qui sont conservées dans un système de bases de données dans une mémoire cache. Une réponse est alors apportée aux requêtes de bases de données à partir de la mémoire cache afin de réduire les temps de réponse. Par exemple, une sélection de données fréquemment demandées à partir de la base de données est stockée dans la mémoire cache. Les demandes de base de données, pour lesquelles aucune donnée n’est stockée dans la mémoire cache, sont traitées au moment de la requête et une réponse est apportée par la suite à partir de la base de données. Les requêtes de bases de données pour lesquelles la base de données n’inclut aucun résultat sont également traitées au moment de la requête à l’aide des ressources de traitement et du temps du système de base de données.
[0003] Une approche générale telle qu’exposée par ex. dans une documentation de la mémoire cache de source ouverte EHCACHE sur http://www.ehcache.Org/documentation/2.8/recipes/cachenull.html consiste à mettre en mémoire cache les valeurs zéro lorsque la base de données ne sort aucun résultat pour une requête donnée.
[0004] La mise en mémoire cache des valeurs zéro ou NULLES est également décrite dans US 2010/0036805 Al qui concerne le maintien de mémoires caches de valeurs d’entrée/de sortie (I/O) pour des requêtes de bases de données. En réponse à la réception d une requête au niveau de la base de données, il est décidé conformément aux critères prédéterminés, qu’une entrée de mémoire cache est créée pour renvoyer un résultat à partir de la mémoire cache dans le cas où la même requête ou une requête similaire est à nouveau reçue par la suite. Si aucune valeur correspondante n’est trouvée en traitant une requête, une valeur NULLE renvoyée et être également incluse dans la mémoire cache.
[0005] Par ailleurs, US2016/0042278 Al concerne un ajustement prédictif de contenu dans un réseau de distribution de contenu pour rafraîchir le contenu stocké dans une ou plusieurs mémoires cache Toutes les données provenant d’une base de données ou de portions de données fréquemment demandées sont stockées dans une mémoire cache, reflétant le contenu de la base de données. En fonction de la taille du contenu et/ou de la mémoire cache, tout le contenu ou les portions du contenu est/sont foumi(es) dans la mémoire cache. La gestion de la mémoire cache détermine si le contenu est périmé et doit être rafraîchi.
RESUME [0006] Un premier aspect concerne un procédé de traitement des demandes de bases de données pour récupérer les résultats d’un calcul de données d’un système de base de données dans une mémoire cache. La mémoire cache stocke une représentation d’un espace de données d’une ou plusieurs bases de données du système de base de données. La représentation inclut un ou plusieurs résultats pour toute requête de base de données pour laquelle l’espace de données d’une ou de plusieurs bases de données du système de base de données est en mesure de délivrer un résultat. Le procédé au niveau de la mémoire cache détermine en utilisant la représentation stockée, en réponse à la réception d’une requête de base de données, si l’espace de données d’une ou de plusieurs bases de données est en mesure de délivrer un ou plusieurs résultats pour la requête de base de données. Dans l’affirmative, un ou plusieurs résultats de la requête de données est/sont renvoyé(e). Autrement une notification d’invalidité est renvoyée.
[0007] Un autre aspect concerne une mémoire cache pour le traitement des requêtes de bases de données agencée pour exécuter le procédé des aspects précédents.
[0008] Un autre aspect concerne un système de base de données incluant une mémoire cache agencée pour exécuter le procédé des aspects précédents.
[0009] Un autre aspect concerne un programme informatique pour traiter les requêtes de bases de données à l’aide d’une mémoire cache conformément aux aspects précédemment mentionnés incluant des instructions de code stockées sur un support de stockage lisible par ordinateur pour exécuter le procédé susmentionné, lorsque ledit programme est exécuté sur un ordinateur.
BRÈVE DESCRIPTION DES DESSINS [0010] Les présents mécanismes seront décrits en faisant référence aux dessins qui les accompagnent. Des numéros de référence similaires indiquent généralement des éléments identiques ou similaires sur le plan fonctionnel.
La FIG. 1 est un aperçu du système de base de données, incluant une mémoire cache et une base de données.
La FIG. 2 représente un exemple de mise en œuvre dans un réseau de communication.
La FIG. 3 représente un diagramme séquentiel illustrant l’initialisation/la mise à jour de la mémoire cache et I’utilisation de la mémoire cache.
La FIG. 4 complète le réseau de communication de la FIG. 2 avec un historique des changements.
La FIG. 5 représente une mémoire cache stockant deux ou plusieurs résultats.
La FIG. 6 illustre une extension du système à la FIG. 1 pour exploiter les notifications d’invalidité.
La FIG. 7 représente un organigramme illustrant la récupération d’un résultat supplémentaire dans l’espace de données.
La FIG. 8 représente trois diagrammes séquentiels illustrant les réponses de la mémoire cache.
La FIG. 9 illustre l’application du système de base de données mettant en œuvre un groupe de répartition de charge.
La FIG. 10 est une vue schématique exemplaire de l’architecture interne d’une machine informatique.
DESCRIPTION DETAILLEE [0011] Un aperçu d’un système de base de données 100 incluant une mémoire cache 101 et une base de données 102 est représenté à titre d’exemple à la FIG. L Le système de base de données 100 inclut une machine informatique 104 incluant un ou plusieurs processeurs pour délivrer un ou plusieurs résultats de traitement de données contenues dans la ou les bases de données 102, et l’espace de données est en mesure de délivrer le ou les résultats. La mémoire cache 101 est agencée pour traiter les requêtes de base de données reçues des clients 103. Les résultats sont prétraités par une machine informatique 104 dans une initialisation et/ou mise à jour de la mémoire cache 101. La mémoire cache 101 stocke une représentation 105 d’un espace de données 106.
[0012] L’espace de données 106 est défini par les données stockées dans la ou les bases de données 102 du système de base de données 100. En d’autres termes, les données stockées par ladite au moins base de données 102 forment l’espace de données 106. La représentation 105 inclut un ou plusieurs résultats pour toute requête de base de données pour laquelle 1 espace de données 106 de la ou des bases de données 102 du système de base de données 100 est en mesure de délivrer un résultat, lorsque la requête de base de données est prétraitée sur la machine informatique 104. Les résultats stockés dans la mémoire cache 101, c.-à-d. la représentation 105 sont une transformation des données de l’espace de données 106, et/ou un sous-ensemble de l’espace de données 106. Des exemples de l’espace de données 106 de ladite au moins base de données 102 et de la représentation 105 sont donnés ci-dessous.
[0013] Dans des modes de réalisation exemplaires, ladite au moins base de données 102 du système de base de données 100 être une base de données relationnelle stockant les données de l’espace de données 106 dans des tableaux. Dans d’autres modes de réalisation exemplaires, la base de données 102 est une base de données noSql (not only Structured Query Language) (pas seulement une langue d'interrogation structurée) stockant les données de l’espace de données 106 dans des documents JSON (Java Script Object Notation) (notation d'objet de script java) semi-structurés, XML (Extensible Markup Language) (langage de balisage extensible) ou autres. Cependant, les modes de réalisation ne sont pas limités aux bases de données exemplaires mentionnées.
[0014] Dans les modes de réalisation exemplaires, les clients 103 sont des utilisateurs de machines telles que des applications, des serveurs et/ou des terminaux.
[0015] Dans un mode de réalisation exemplaire, le système de base de données 100 est agencé pour répondre à toute requête de base de données des clients 103 concernant la disponibilité des routes 201 entre les serveurs 202 dans un réseau de communication 200 représenté à la FIG. 2. La base de données 102 dans ce mode de réalisation exemplaire stocke toutes les routes, qui sont des connexions directes entre deux serveurs sans serveurs intermédiaires entre elles. L’espace de données 106 de la base de données 102 est ainsi donné par la collecte de ces routes directes entre des serveurs voisins et est en mesure de fournir toutes les routes disponibles entre toute paire de serveurs c.-à-d. toutes les permutations des serveurs 202 dans le réseau de communication 200 incluant également les connexions indirectes aux serveurs intermédiaires 202 calculé par concaténation de routes directes.
[0016] La mémoire cache 101 stocke une représentation 105 de l’espace de données 106, a savoir une liste de toutes les paires de serveurs 202 qui sont connectés par une route directe (sans autres serveurs intermédiaires) ou une route indirecte (avec des serveurs intermédiaires). Les paires de serveurs qui ne sont pas connectés par toute route ne font pas partie de la représentation 105 et ils ne sont par conséquent pas stockés dans la mémoire cache. Dans d’autres modes de réalisation, la représentation 105 inclut au moins chaque route pour chaque paire de serveurs interconnectés.
[0017] La mémoire cache 101 peut être initialisée (c.-à-d. complétée par la representation 105 dérivée de l’espace de données 106) de diverses manières. Par exemple, la représentation 105 est dérivée par prétraitement, de manière à diriger des requêtes de bases de données vers la base de données 102, à récupérer pour chaque paire de serveurs, qu’il existe une route entre les deux serveurs respectifs 202. Une ou plusieurs routes 201 pour chaque paire de serveurs interconnectés est/sont prétraitée(s) par la machine informatique 104 du système de base de données 100. Ladite au moins route pour chaque paire de serveurs interconnectes obtenue a partir de l’espace de données 106 par le prétraitement forme la représentation 105 et est stockée dans la mémoire cache 101. Si le prétraitement ne sort pas une route 201 pour une paire de serveurs, cela signifie que les deux serveurs 202 de la paire ne sont pas connectes par toute route et par conséquent, aucun résultat n’est stocké dans la mémoire cache 101.
[0018] Par exemple, pour la paire de serveurs (1, 2), la route « a » est stockée dans la représentation 105 de la mémoire cache 101 suite à une route connectant le serveur 1 et le serveur 2 dans le réseau de communication 200. Dans un autre exemple, pour la paire de serveurs (2, 7), la route « e » est stockée suite à une route connectant le serveur 2 et le serveur 7. Dans un autre exemple, pour la paire de serveurs (2, 7), les routes « e » et « f-g » sont stockées dans la représentation 105 de la mémoire cache 101 suite à des routes connectant le serveur 2et le serveur 7 dans le réseau de communication 200.
[0019] Par conséquent, dans ce mode de réalisation exemplaire, la mémoire cache 101 stocke une route pour toute requête de base de données pour les paires de serveurs 202 dans la représentation 105 sortie sur prétraitement sur la machine informatique 104. Dans d’autres modes de réalisation exemplaires, la mémoire cache 101 stocke un certain nombre de routes ou toutes les routes pour toute paire de serveurs 202 demandée dans la representation 105 sortie sur prétraitement sur la machine informatique 104. Dans d’autres modes de réalisation exemplaires, la mémoire cache 101 stocke toutes les routes dans la représentation 105 de la mémoire cache 101.
[0020] La mémoire cache 101 est agencée pour déterminer, en utilisant la représentation 105 stockée, en réponse à la réception d’une requête de base de données provenant d’un client 103, si l’espace de données 106 de la ou des bases de données 102 est en mesure de délivrer un ou plusieurs résultats pour la requête de base de données. Dans l’affirmative, la mémoire cache 101 renvoie un ou plusieurs résultats pour la requête de base de données stockée dans la représentation 105, autrement, la mémoire cache 101 renvoie une notification d’invalidité, parce que l’espace de données 106 n’est pas en mesure de délivrer un résultat pour cette requête de base de données.
[0021] Dans le mode de réalisation exemplaire à la FIG. 2, en réponse à la réception d’une requête de base de données provenant d’un client 103 pour une route entre le serveur 1 et le serveur 3 dans le réseau de communication 200, la mémoire cache renvoie la route « a-b » suite à la requête de base de données. Dans un autre mode de réalisation exemplaire, la mémoire cache renvoie les routes « a-b », « a-e-h-i-d-c » et « a-f-h-i-d-c » suite à la requête de base de données du client 103. Dans un autre mode de réalisation exemplaire, il existe une déconnexion dans les routes « b » et « i », de sorte que le réseau de communication est divisé en deux sous-réseaux déconnectés. Le premier du sous-réseau inclut les serveurs 1, 2, 6, 7, 8 et le deuxième sous-réseau inclut les serveurs 3, 4, 5. Par conséquent, il n’existe aucune route disponible entre le serveur 1 dans le premier sous-réseau et le serveur 3 dans le deuxième sous-réseau. En réponse à la réception d’une requête de base de données provenant d’un client 103 pour une route entre le serveur 1 et le serveur 3, la mémoire cache 101 renvoie une notification d’invalidité, puisque la représentation 105 de la mémoire cache 101 ne stocke aucune route pour une connexion entre le serveur 1 et le serveur 3, parce que l’espace de données 106 n’est pas en mesure de sortir une route 202 entre le serveur 1 et le serveur 3.
[0022] Dans certains modes de réalisation exemplaires à la FIG. 2, les résultats incluent en plus de la route, les paramètres par ex. les politiques pour la disponibilité du résultat sous certaines conditions. Un résultat d’une route de réseau inclut par exemple un paramètre indiquant que la route ou une ou plusieurs sous-routes du résultat est/sont utilisé(s) uniquement de manière unidirectionnelle, par ex. la route b à la FIG. 2, sert uniquement la communication dans la direction allant du serveur 2 au serveur 3 mais pas l’inverse. Le seul résultat alors disponible pour une connexion entre le serveur 2 et le serveur 3 est la route b elle-même. La route e-h-i-d-c-b est indiquée par le paramètre unidirectionnel de b ne devant pas être disponible parce qu’il est dirigé de c à b, ce qui n’est pas supporté. Les deux routes de résultats b et e-h-i-d-c-b peuvent être stockées dans la mémoire cache 101 mais sont accompagnés par le paramètre indiquant, si la route est disponible dans le résultat correspondant. Dans un autre exemple, une route de réseau est disponible uniquement à des intervalles de temps spécifiques. Par exemple, si les serveurs 3, 4 et 5 appartiennent à un autre groupe de réseaux alors les serveurs 1, 2, 6, 7 et 8 et sont uniquement partagés la nuit pour soutenir le traitement par des ressources supplémentaires, les routes b et i sont limitées à une communication de serveur uniquement de 22h00 à 6h00. Par conséquent, tous les résultats incluant les routes b et/ou i comme une route ou une sous-route incluent paramètres temporels indiquant si le résultat respectif est disponible/non disponible. D’autres paramètres dépendant de l’heure sont par exemple une heure maximum autorisée pour qu’un message soit envoyé d’un serveur d’origine à un serveur de destination et/ou par un délai défini pour traiter un message au niveau d’un serveur intermédiaire sur une route composée, avant qu’il soit envoyé au prochain serveur pour un traitement ultérieur. Dans un troisième exemple, le paramètre d’un résultat indique qui est qualifié pour demander le résultat, de sorte que le résultat est uniquement disponible pour des sources spécifiques de la requêtes ou des utilisateurs. Si une autre source que celle indiquée dans les paramètres d’un résultat tente de demander le résultat provenant de la mémoire cache 101, le résultat n’est pas disponible.
[0023] Les systèmes et procédés dans US 2010/0036805 Al et US2016/0042278 Al traitent une requête de base de données en réponse à la réception de la requête de base de données pour la première fois et utilisent alors une mémoire cache pour répondre à la requête de base de données provenant de la mémoire cache, lorsque la requête est à nouveau reçue. En réponse à la réception d’une requête de base de données pour la première fois, le système n’a aucune information sur la disponibilité d’un résultat pour cette requête de base de données. Par conséquent, une requête de base de données reçue pour une première fois est traitée au moment de la requête de base de données, bien qu’aucun résultat ne soit délivré au final, puisque la requête de base de données était invalide. Si le traitement d’une requête de base de données reçue pour la première fois ne délivre pas de résultat, certains des systèmes connus stockent un NULLE dans la mémoire cache, afin d’empêcher le système de traiter une requête de base de données précédemment traitée et ne délivrant pas de résultats là encore au moment de la requête de base de données. Au contraire, la mémoire cache 101 décrite dans les présentes inclut déjà un ou plusieurs résultats pour toute requête de base de données pour
- laquelle l’espace de données 106 des bases de données 102 du système de base de données 100 est en mesure de délivrer un résultat.
[0024] En outre, la mémoire cache 101 est en mesure de répondre directement à toute requête de base de données sans qu’il soit nécessaire de se référer à la base de données 102 du 5 système de base de données 100. Le fait que le système de base de données 100 économise toute charge du traitement généralement provoquée sur des requêtes de base de données invalides liées à des données non mises en mémoire cache par ex. des recherches impossibles ne délivrant pas de résultats, constitue un avantage.
[0025] Dans certains modes de réalisation, les deux mécanismes suivants représentés à la
FIG. 3 concernent l’initialisation et/ou la mise à jour de la représentation 105 dans la mémoire cache 101 d’une part et l’utilisation de la mémoire cache 101 afin de répondre aux requêtes de bases de données à partir de la mémoire cache 101 d’autre part. Pour initialiser ou mettre à jour 302 de la représentation 105 de la mémoire cache 101, le premier mécanisme par ex. génère toute requête de base de données définie sur la base de données 102 du système de base de données 100 par une machine informatique 104. Plusieurs résultats délivré(s) pour toute requête de base de données est/sont stocké(s) dans la représentation 105 de la mémoire cache 101. Si aucun résultat n’est délivré lors du traitement d’une requête de base de données, rien n’est stocké dans la représentation 105 de la mémoire cache 101 pour cette requête de base de données. Le même processus est répété pour réinitialiser la mémoire cache 101 ou pour effectuer une mise à jour de la mémoire cache 101.
[0026] Dans d’autres modes de réalisation, l’initialisation est effectuée par un processus de transformation donné mettant en correspondance les données de l’espace de données 106 avec les données formant la représentation 105 sans effectuer une permutation des requêtes de bases de données vers la base de données 102.
[0027] Séparées de l’initialisation ou de la mise à jour des résultats 300 sur la machine informatique 104, les requêtes de bases de données font l’objet d’une réponse 301 provenant de la mémoire cache 101. Les requêtes de bases de données 305 des clients 103 sont reçues au niveau de la mémoire cache 101. Si un ou plusieurs résultats pour la requête de base de données est/sont stocké(s) dans la représentation 105 de la mémoire cache 101, la mémoire cache 101 répond 306 à la requête de base de données en renvoyant un ou plusieurs des résultats au client 103. Autrement, la mémoire cache répond 306 en renvoyant une notification d’invalidité.
[0028] Dans certains modes de réalisation, la représentation 105 de la mémoire cache 101 inclut un certain nombre d’enregistrements de données. Chaque enregistrement de données inclut une combinaison clé - valeur. La requête de base de données inclut une clé d’un ou de plusieurs enregistrements de données et le ou les résultats pour la requête de base de données 5 inclut une ou plusieurs valeurs du ou des enregistrements de données.
[0029] Dans certains modes de réalisation, la combinaison clé - valeur représente un chemin de connexion entre un nœud d’origine et un nœud de destination sur un réseau de communication. La clé précise le nœud d’origine et le nœud de destination dans le réseau de communication et la valeur est un ou plusieurs chemins du nœud d’origine ou nœud de 10 destination. Le nœud d’origine est connecté directement ou via un ou plusieurs nœuds intermédiaires au nœud de destination.
[0030] Dans des modes de réalisation exemplaires, un nœud d’origine et/ou de destination ainsi que des nœuds intermédiaires dans le réseau de communication 200 de la FIG. 2 sont des serveurs 202 connectés par un réseau de zone locale (LAN), un réseau de zone locale sans 15 fil W(LAN), et/ou un réseau de zone étendue (WAN). Cependant, le type de connexion sur réseau de communication 200 n’est pas limité aux serveurs ou à des types spécifiques de réseaux. Les serveurs 202 constituent un réseau de communication 200 dans lequel les serveurs 202 travaillent ensuite ou en parallèle sur des tâches communes, échangent des données ou traitent les requêtes de bases de données opérationnelles. Afin de communiquer 20 avec un autre serveur, un interroge le système de base de données 100 pour déterminer s’il existe une route vers l’autre serveur et/ou quelle route est disponible.
[0031] Dans le mode de réalisation exemplaire de la FIG. 2, la représentation 105 de la mémoire cache 101 stocke chaque paire de serveurs dans le réseau de communication 200 une ou plusieurs routes 201 par une paire clé - valeur. La paire clé - valeur inclut en tant que clé la 25 paire de serveurs incluant une permutation d’un serveur de et d’un serveur de destination de tous les serveurs 202 dans le réseau de communication 200, et en tant que valeur une ou plusieurs routes 201 entre le serveur d’origine et de destination 202.
[0032] Par exemple, pour une paire de serveurs (2, 3), les routes disponibles 201 dans le réseau de communication interconnectant le serveur d’origine 2 au serveur de destination 3 30 sont « b », « e-h-i-d-c », « f-g-h-i-d-c ». Il en résulte pour la paire de serveurs (2, 3), qu’une paire clé - valeur < (2, 3), (b) > est par exemple stockée dans la représentation 105 de la mémoire cache 101. Dans un autre exemple, la paire clé - valeur < (2, 3), (b, e-h-i-d-c) > ou < (2, 3), (b, f-g-h-i-d-c) > est stockée, si la mémoire cache 101 est configurée pour stocker deux routes 201, si disponibles pour chaque paire de serveurs. Dans un autre exemple où la mémoire cache 101 est configurée pour stocker toutes les routes disponibles 201 pour toute paire de serveurs, la paire clé - valeur < (2, 3), (b, e-h-i-d-c, f-g-h-i-d-c) > est stockée dans la représentation 105. Dans un exemple où les sous-routes b et i sont interrompues et il n’existe aucune route disponible 201 entre le serveur d’origine 2 et le serveur de destination 3, la mémoire cache 101 ne stocke pas une paire clé - valeur pour la paire de serveurs (2, 3).
[0033] Dans des systèmes de miroitage connus, tels que US2016/0042278 Al qui stocke toutes les portions de données incluses dans la base de données et en outre, reflète le contenu de la base de données, la mémoire cache consomme autant de ressources de stockage que la base de données elle-même. De plus, le temps de traitement pour délivrer un résultat n’est pas économisé dans ces systèmes connus, mais est uniquement décalé du traitement de la requête de base de données au moment de la requête sur la base de données au traitement de la requête de base de données sur la mémoire cache. Cela n’économise aucun temps de réponse pour le client, ni pour des requêtes de base de données valides délivrant un résultat, ni pour des résultats invalides ne délivrant pas de résultat au moment de la requête. La mémoire cache 101 aucun des résultats prétraités pour toute requête de base de données valide tel qu’une paire clé - valeur répond non seulement directement à toute requête de base de données instantanément comme expliqué précédemment, mais stocke également ces résultats de manière plus efficace que les systèmes de miroitage en termes de mémoire et de temps de réponse . De plus, les requêtes invalides font instantanément l’objet d’une réponse par une notification d’invalidité. En outre, toute requête fait directement l’objet d’une réponse à partir de la mémoire cache 101.
[0034] Dans certains modes de réalisation, la représentation 105 stockée dans la mémoire cache 101 inclut pour une ou plusieurs requêtes de bases de données moins de résultats que l’espace de données 106 de la ou des bases de données 102 du système de base de données 100 est en mesure de délivrer. Les résultats moindres forment un sous-espace de résultat. Le sous-espace de résultat est donné sur la base d’une probabilité que les résultats dans la représentation 105 de la mémoire cache 101 restent valides dans le temps. Dans cette mesure, il existe des requêtes de bases de données pour lesquelles l’espace de données 106 de ladite au moins base de données 102 est en mesure de délivrer plus d’un résultat, un sousensemble de ces résultats multiples, mais tous les résultats ne sont pas stockés dans la mémoire cache 101. Si l’espace de données 106 est en mesure de délivrer uniquement un résultat, ce résultat est stocké dans la représentation 105 de la mémoire cache 101. Si aucun résultat n’est délivré, rien n’est stocké dans la représentation 105 de la mémoire cache 101 pour la requête de base de données.
[0035] Le critère de sélection pour choisir un sous-ensemble de moins de résultats que le nombre de résultats qui sont délivrés par les bases de données 106 est la probabilité que les résultats dans la représentation 105 la mémoire cache 101 restent valides dans le temps. Cette probabilité est par exemple obtenue en évaluant un historique des fréquences de changement des résultats dans la représentation 105 de la mémoire cache. Un ou plusieurs résultats est/sont délivré(s) lors du prétraitement de toute requête de base de données sur la base de données 102 du système de base de données 100 incluant l’espace de données 106 dans une initialisation de la mémoire cache 101 ou également lors de la mise à jour de la mémoire cache 101. Des mises à jour de la mémoire cache 101 peuvent être effectuées à intervalles ou lors de la détection des changements en contrôlant l’espace de données 106. Cependant, le processus de mise à jour ne se limite pas à ces exemples. Les mises à jour déclenchent un recalcul des résultats à stocker dans la représentation 105 de la mémoire cache 101. Les résultats sont obtenus en traitant à nouveau les requêtes de bases de données uniques sur la base de données 102 ou sous la forme d’un recalcul complet de toute requête de base de données. Sur la base d’un historique de mise à jour, les probabilités que les résultats dans la représentation 105 de la mémoire cache 101 restent valides dans le temps sont obtenues.
[0036] A la FIG. 4, le réseau de communication 200 de la FIG. 2 est complémentaire d’un historique 400 des changements dus à des interruptions dans les sous-routes du réseau de communication 200 en deux jours. L’historique des changements peut être stocké dans la base de données 102 du système de base de données 100, peut-être agrégé par un contrôle interne et externe, ou être mis en œuvre de toute autre manière appropriée. A partir de l’historique 400 des interruptions, une probabilité qu’une route entre un serveur d’origine O et un serveur de destination D reste inchangé est déterminée en supposant qu’une route 201 qui n’a pas été interrompue par le passé a une plus grande probabilité de rester inchangée et ne sera pas non plus interrompue à l’avenir. Le traitement d’une mise à jour le 6 décembre pour les routes entre le serveur d’origine O et le serveur de destination D sans tenir compte d un historique 400 sort trois routes rl: a-b-c-d, r2: a-e-h-i et r3: a-f-g-h-i.
[0037] En tenant compte d’un historique 401 d’une journée dans le passé xl, l’historique révèle que le 5 décembre la route rl n’avait pas d’interruption, la route r2 avait 2 interruptions, à savoir dans la sous-route e, présentant 2 interruptions le 5 décembre et la route r3 avait 3 interruptions, à savoir dans la sous-route f, présentant 2 interruptions et dans la sous-route g, présentant 1 interruption le 5 décembre. Par conséquent, en tenant compte d’un historique d’un jour 401 dans le passé, la route qui a la probabilité la plus élevée de rester inchangée à l’avenir est la route rl. Par conséquent, la route rl: a-b-c-d est choisie et stockée dans la représentation 105 de la mémoire cache 101.
[0038] Dans un autre exemple, un historique de deux jours 402 dans le passé x2, à savoir le 4 et le 5 décembre est pris en compte. Dans cet exemple, il apparaît que la route r3 à la probabilité 1 plus élevée de rester inchangée à l’avenir. Par conséquent, la route r3 sera choisie et stockée dans la représentation 105 de la mémoire cache 101.
[0039] Cependant, le fait de déterminer la probabilité que les résultats de la représentation 105 de la mémoire cache 101 restent valides dans le temps n’est pas limité au procédé dans cet exemple.
[0040] Contrairement à US2010/0036805A1 où les données stockées dans la mémoire cache sont mises à jour à chaque fois que les données correspondantes dans la base de données changent, l’avantage de choisir les résultats à stocker dans la mémoire cache 101 par la validité des résultats stockés dans la représentation 105 est que la mémoire cache 101 préserve de manière optimale la cohérence du résultat stocké avec les résultats délivrés par l’espace de données 106 de la base de données 102 dans le système de base de données 100. Le nombre de mises à jour diminue par rapport au temps pendant lequel un résultat stocké dans la mémoire cache reste valide. En outre, le nombre de mises à jour de la mémoire cache 101 est minimisé en économisant les ressources système pour de telles mises à jour.
[0041] Dans certains modes de réalisation, la représentation 105 stockée dans la mémoire cache 101 inclut un ou plusieurs résultats pour les requêtes de bases de données qui sont délivrés lors du prétraitement de la requête de base de données sur l’espace de données 106 de la ou des bases de données 102 du système de base de données 100. La délivrance du ou des résultats pour la requête de base de données à partir de la mémoire cache 101 inclut la délivrance d’un ou de plusieurs des deux résultats ou plus ayant l’indicateur indiquant la probabilité la plus élevée de rester valide dans le temps.
[0042] Dans un mode de réalisation exemplaire, les deux résultats ou plus stockés dans la mémoire cache 101 sont délivrés en réponse à la réception d’une requête de base de données pour une requête de base de données de ce type. Dans un autre mode de réalisation exemplaire, tout d’abord le résultat avec la validité la plus élevée est délivré par la mémoire cache 101. Un résultat supplémentaire est délivré, si disponible, lorsqu’une requête de base de données supplémentaire est reçue du client 103, demandant une ou plusieurs alternatives au premier résultat délivré. Dans des modes de réalisation exemplaires, la mémoire cache 101 stocke la probabilité que les résultats dans la représentation 105 de la mémoire cache 101 restent valident dans le temps avec le résultat respectif. En réponse à la réception d’une requête de base de données par un client 103,1a mémoire cache 101 renvoie le résultat avec la probabilité la plus élevée.
[0043] Dans d’autres modes de réalisation exemplaires, la mémoire cache stocke les deux résultats ou plus dans une liste triée, de sorte que la position d’un résultat dans la liste indique la relation de la probabilité dans l'ordre avec la probabilité la plus élevée en premier. Par conséquent, aucune mémoire supplémentaire n’est utilisée pour stocker la probabilité ellemême. En réponse à la réception d’une requête de base de données par un client 103, la mémoire cache 101 renvoie un ou plusieurs des premiers éléments de la liste triée. Par conséquent, les résultats avec la validité la plus élevée sont renvoyés.
[0044] Dans la FIG. 5, les résultats délivrés lors du traitement de toute requête de base de données lors des connexions entre les serveurs 202 pour toutes les paires de serveurs dans le réseau de communication 200 à la FIG. 4 sont représentés dans un tableau 500. Dans ce mode de réalisation exemplaire, la mémoire cache 101 stocke dans la représentation 105 deux des résultats délivrés, si disponibles. Les résultats, stockées dans la mémoire cache 101 sont choisis par la probabilité la plus élevée que les résultats dans la représentation 105 de la mémoire cache 101 restent valides dans le temps, c.-à-d. qu’ils ont la validité la plus élevée de tous les résultats délivrés pour chacune des paires de serveurs. La mémoire cache 101 stocke les routes sorties et choisies 501 pour toute paire de serveurs 502 dans une liste triée 501 dans la représentation 105.
[0045] Dans le mode de réalisation exemplaire de la FIG. 5, la représentation 105 de la mémoire cache 101 stocke pour les paires de serveurs (1, 2) le seul résultat délivré lors du traitement de la requête de base de données pour une connexion entre le serveur 1 et le serveur 2 sur l’espace de données 106, qui est la route « a ». Pour la paire de serveurs (1, 3), l’espace de données 106 sort, lors du traitement, quatre routes possibles si à s4 présentées à la ligne deux, colonne quatre du tableau 500. Le nombre d’interruptions 400 est présenté dans le réseau de communication 200 à la FIG. 4. Pour la paire de serveurs (1, 3) par exemple, le nombre d’interruptions est présenté et déterminé par un historique d’un jour xl et un historique de jours x2 dans le TAB 1.
TABLEAU 1
route nombre d’interruptions par xl nombre d’interruptions par x2
si = a-b 0 0
s2 = a-f-g-e-b 2 (f)+ 1 (g) + 2 (e) = 5 2+0 (f) + 1+0 (g) + 3+2 (e) = 8
s3 = a-e-h-i-d-c 2 (e) + 0 (c) = 2 2+3 (e) + 0+4 (c) = 9
s4= a-f-g-h-i-d-c 2 (f) + 1 (g) + 0 (c) = 3 2+0 (f) + 1+0 (g) + 0+4 (c) =7
[0046] Dans cet exemple, la représentation 105 stocke les deux résultats ayant la validité la plus élevée pour chacune des paires de serveurs. Par conséquent, pour la paire de serveurs (1, 3) avec un historique d’un jour xl, la mémoire cache 101 stocke si comme premier résultat, indiquant que la paire de serveurs (1, 3) la probabilité la plus élevée, et s3 comme deuxième résultat indiquant que la paire de serveurs (1, 3) à une probabilité plus faible que si mais une probabilité plus élevée que tout autre résultat pour la paire de serveurs (1,3) délivré à partir de l’espace de données 106. Avec un historique de deux jours x2, la mémoire cache 101 stocke pour les mêmes raisons si en tant que premier résultat, et s4 en tant que deuxième résultat.
[0047] Cependant, de la même manière également plus de deux routes sorties de l’espace de données 106 sont stockées dans la représentation 105 de la mémoire cache 101, si disponible. Pour la paire de serveurs (1, 2) la représentation 105 de la mémoire cache 101 stocke uniquement la route « a » en tant que premier résultat et aucun deuxième résultat. Si aucun résultat n’est délivré leur du traitement, rien n’est stocké pour la paire de serveurs dans la mémoire cache 101. Par conséquent, la mémoire cache 101 est en mesure de répondre à toute requête de base de données sur la disponibilité des routes 201 entre deux serveurs respectifs 202. De plus, la mémoire cache 101 les modes de réalisation exemplaire est configurée pour délivrer tout résultat alternatif, si disponible, dans l’ordre de validité la plus élevée.
[0048] Dans certains modes de réalisation, en réponse au renvoi d’une notification d’invalidité à une requête de base.de données reçue, le nombre d’occurrences de requêtes de base de données reçues pour lesquelles une notification d’invalidité est renvoyée est accumulé. Le système géré par le système de base de données 100 est alors optimisé par des problèmes identifiés de dépannage ou par la restructuration. Par conséquent, pour le réseau de communication de la FIG. 2, le réseau de communication est optimisé en incluant une nouvelle route, en réponse au fait de déterminer que le nombre d’occurrences de notifications d’invalidité dépasse un seuil prédéfini, si les notifications d’invalidité indiquent une route manquante pour laquelle les requêtes de bases de données sont reçues de plusieurs clients 103.
[0049] Dans un mode de réalisation exemplaire, la requête de base de données est reçue au niveau de la mémoire cache provenant d’un client 103 vers la mémoire cache 101. La représentation de la mémoire cache 105 n’a aucun résultat pour la requête de base de données disponible. Afin d’exploiter les notifications d’invalidité renvoyées en réponse à la requête de base de données reçue, le système de bases de données 100 de la FIG. 1 est étendu par une analyse supplémentaire desdites requêtes de bases de données, comme représenté à la FIG. 6.
En réponse au renvoi d’une notification d’invalidité au client, la requête de base de données reçue pour laquelle aucun résultat n’est disponible dans la représentation 105 de la mémoire cache 105 est stockée 601. Si la même requête base de données est reçue à plusieurs reprises d’un client 103 et une notification d’invalidité est encore renvoyée pour cette requête de base 15 de données, le nombre d’occurrences de cette requête est accumulé. La requête de base de données ainsi que l’accumulation correspondante est par exemple stockée dans une autre mémoire cache 600. Dans d’autres modes de réalisation exemplaires, la requête de base de données avec l’accumulation correspondante est stockée dans la même mémoire cache 101 que la représentation 105. Dans certains modes de réalisation exemplaires, l’accumulation des 20 occurrences de la requête de base de données, pour laquelle une notification d’invalidité est renvoyée, est stockée pour tous les clients 103 en commun. Dans d’autres modes de réalisation exemplaires, l’accumulation de notifications d’invalidité renvoyées à la requête de base de données est stockée pour chaque client 103 séparément. Ces mode de réalisation ne sont cependant pas limités au stockage des requêtes de bases de données et à l’accumulation 25 correspondante de notifications d’invalidité de cette manière.
[0050] Par exemple, la requête de base de données req 003 à la FIG. 6 était déjà reçue au niveau de la mémoire cache 101 une notification d’invalidité était renvoyée avant pour invalide = 5 fois 601. À présent, req 003 est à nouveau reçue. La représentation 105 de la mémoire cache 101 n’a toujours pas de résultat disponible (S/O). Une notification d’invalidité 30 est envoyée au client 103 et l’accumulation stockée 601 des notifications d’invalidité pour req 003 est augmentée de un, produisant req 003 : #Invalide=6.
[0051] Un seuil 602 pour invalide est prédéterminé par un administrateur ou automatiquement par une fonction de seuil. Par ailleurs, le seuil 602 est fixé, dans certains modes de réalisation exemplaires, pour toutes les requêtes de base de données stockées avec leur accumulation correspondante en commun. Dans d’autres modes de réalisation exemplaires, le seuil 602 fixé pour chacune des requêtes de base de données séparément. Dans d autres modes de réalisation exemplaires, le seuil 602 est fixé pour des groupes de 5 requêtes de base de données. La détermination du seuil n’est cependant pas limitée à ces procédés.
[0052] Si le nombre d occurrences invalides pour une ou plusieurs requêtes de bases de données stockée(s) 601 pour lesquelles les notifications d’invalidité ont été renvoyées dépasse le seuil prédéterminé 602, un rapport et/ou une alerte est générée pour ses requêtes et poussé 10 vers un optimiseur 604. L’optimiseur 604 est par exemple un administrateur évaluant les requêtes reçues fréquemment pour lesquelles une notification d’invalidité a été envoyée. Sur la base de l’évaluation, une optimisation du système de base de données 100 est effectuée. Dans un autre exemple, l’administrateur évalue le rapport concernant les problèmes de dépannage de 1 espace de données. Dans un autre exemple, l’optimiseur 604 est un agent 15 logiciel évaluant le rapport et/ou et effectuant automatiquement l’optimisation des ajustements sur le système de base de données 100. Les fonctionnalités et le type d’optimiseur 604 ne sont pas limités à ces exemples.
[0053] Par exemple, concernant le réseau de communication de la FIG. 4, la mémoire cache 101 reçoit à plusieurs reprises une requête de base de données d’un client 103 pour une 20 route de communication provenant du serveur 2 vers le serveur 6, le 5 décembre. La requête de base de données est reçue à plusieurs reprises au moment où les sous-routes e, f et g sont interrompues, de sorte que le serveur 6 n’est pas disponible à partir du serveur 2 au moment de recevoir à plusieurs reprises la requête de base de données. A chaque fois que la requête de base de données est reçue, une notification d’invalidité est envoyée au client 103 et le nombre 25 d’occurrences d’envoi d’une notification d’invalidité pour cette requête de base de données est accumulé dans une mémoire cache séparée 600. Lorsque la requête de base de données est reçue pour la quatrième fois et qu’une notification d’invalidité est envoyée au client 103, le nombre d’occurrences dépasse un seuil prédéterminé, qui était par exemple fixé à trois. Un rapport, incluant au moins la requête de base de données et le nombre d’occurrences, est 30 envoyé sous la forme d’une alerte à un agent logiciel contrôlant le réseau de communication.
En réponse à cette alerte, l’agent logiciel note le problème de non-disponibilité du serveur 6 sur le réseau et fournit des actions de dépannage.
[0054] Dans un autre exemple, la mémoire cache reçoit fréquemment des requêtes de bases de données sur des routes incluant un serveur 9 comme serveur de destination qui n’est actuellement pas disponible dans le réseau de communication 200 à la FIG. 2 jusqu’à maintenant. Le serveur 9 est une destination populaire pour de nombreux clients 103. Puisque le serveur 9 n’est pas connecté au réseau de communication 200, la mémoire cache 101 renvoie les notifications d’invalidité pour toutes les requêtes de bases de données incluant le serveur 9 en tant que destination. Lorsque le nombre d’occurrences de notifications d’invalidité pour ces requêtes de bases de données (qui sont potentiellement différentes mais incluent toutes incluent le serveur 9 en tant que destination) une ou plusieurs alertes et/ou rapports sont délivré(e)s et envoyé(e)s à un outil d’analyse par ex. L’outil d’analyse lors de l’évaluation du ou des rapports résume qu’il existe une exigence de nombreux clients 103 de se connecter au serveur 9 pour être disponibles dans le réseau de communication. Le réseau de communication peut alors être optimisé eu égard aux exigences des clients 103.
[0055] Par conséquent, raccumulation des occurrences de notifications d’invalidité pour les requêtes de bases de données et l’établissement de rapports et/ou l’alerte lorsque le nombre d’occurrences dépasse un seuil prédéterminé, permet une optimisation et/ou le dépannage du système de base de données 100 ou de la configuration du système sous-jacente pour laquelle les résultats sont stockés dans la mémoire cache 101. Cela permet également d’adapter les systèmes de bases de données 100 aux exigences (éventuellement changeantes) des clients 103 à partir desquelles les requêtes de base de données sont reçues.
[0056] Dans certains modes de réalisation, la mémoire cache 101 est agencée pour récupérer un ou plusieurs résultats supplémentaire(s) délivré(s) à partir de l’espace de données 106 de la base de données 102 du système de base de données 100, dans lequel le ou les résultat(s) supplémentaire(s) est/sont envoyé(s) en plus du résultat envoyé à partir de la représentation 105 de la mémoire cache 101.
[0057] Dans un mode de réalisation exemplaire, la mémoire cache 101 en réponse à la réception d’une requête de base de données d’un client 103, récupéré en plus un résultat délivré à partir de l’espace de données 106 de la base de données 102 du système de base de données 100 pour la requête de base de données reçue. Dans le mode de réalisation exemplaire d’utilisation de la mémoire cache 101 dans une application pour un réseau de communication 200 de la FIG. 2, une requête de base de données d’un client 103 est reçue au niveau de la mémoire cache 101, demandant une route disponible pour la paire de serveurs (1,
4). La mémoire cache 101 dans ce mode de réalisation exemplaire stocke un résultat pour toute paire de serveurs, si disponible. Pour la paire de serveurs (1, 4), elle stocke la paire clé valeur < (1, 4), a-b-c>. En réponse à la réception de la requête de base de données du client 103, le mémoire cache 101 récupère un résultat supplémentaire « a-e-h-i-d » délivré à partir de l’espace de données 106 et renvoie les deux paires clé - valeur < (1, 4), a-b-c> et < (1,4), a-e-h-i-d >.
[0058] L’avantage de ce mode de réalisation de la mémoire cache 101, en plus d’éviter une charge pour des requêtes de base de données invalides, est d’une part de répondre à toute requête de bases de données valide à partir de la représentation 105 de mémoire cache 101 d'une manière efficace en termes de stockage, et d’autre part de fournir des résultats alternatifs pour une requête de base de données, le cas échéant, en consommant uniquement le temps de traitement si des résultats alternatifs sont demandés.
[0059] Dans certains modes de réalisation, la représentation 105 de la mémoire cache 101 est mise à jour avec au moins un résultat récupéré en plus.
[0060] Dans un mode de réalisation exemplaire, la mémoire cache 101 récupère un ou plusieurs résultats supplémentaires dans l’espace de données 106 de la base de données 102 conformément à l’organigramme représenté à la FIG. 7. Cela se produit par exemple dans une situation où une requête demande plus de résultats que stockés dans la mémoire cache 101 ou une demande de suivi demande d’autres résultats en plus dudit résultat au moins provenant de la mémoire cache 101 en réponse à une première requête. En réponse à la réception d’une requête de base de données 700, la mémoire cache 101 recherche 701, si un résultat pour la requête de base de données est disponible dans la représentation 105 de la mémoire cache 101. Si c’est faux, parce qu’aucun résultat n’est stocké ou parce qu’il y a un paramètre indiquant que le résultat n’est pas disponible pour la requête actuelle, par ex. comme expliqué pour l’exemple de réseau de la FIG. 2, la mémoire cache 101 renvoie une notification d’invalidité 702. Ce chemin général, comme expliqué ci-dessus, est indiqué par des flèches en pointillés à la FIG. 7 de 701 à 702 à la FIN et de 703 à la FIN. Si un résultat est disponible dans la représentation 105, le résultat est renvoyé 703, comme dans l’exemple général. Dans ce mode de réalisation exemplaire, la mémoire cache 101 évalue, si un résultat supplémentaire 704 provenant de la base de données 102 pour le résultat déjà renvoyé est demandé par la requête actuelle ou une requête de suivi, en réponse à une première requête. Si un ou plusieurs résultat(s) supplémentaire(s) est/sont demandé(s), la mémoire cache 101 tente de récupérer le ou les résultat(s) supplémentaire(s) 704 dans l’espace de données 106 de la base de données 102. L’option pour récupérer un résultat supplémentaire 704 dans la base de données 102 est indiqué par des lignes continues à la FIG. 7.
[0061] Il existe différentes possibilités de récupérer un ou plusieurs résultat(s) supplémentaire(s) 704 dans la base de données 102. Par exemple, en plus du résultat renvoyé 703 provenant de la mémoire cache 101, la requête actuelle ou la requête de suivi demande tous les résultats disponibles dans la base de données 102, par ex. la mémoire cache 101 renvoie le résultat ayant la probabilité la plus élevée de rester inchangé dans le temps, mais la source de la requête décide elle-même des critères divergents, du meilleur critère pour son objectif, et si le résultat déjà délivré ne correspond pas bien à ces critères individuels, la sélection d’un meilleur résultat est décidée selon ses propres critères et par conséquent nécessite tous les résultats. Dans un autre exemple, un ou plusieurs résultats supplémentaires au-delà du résultat déjà délivré 703 provenant de la mémoire cache est/sont demandé(s). Dans un troisième exemple, un ou plusieurs résultat(s) supplémentaire(s) est/sont récupéré(s) 704 dans la base de données 102 pour vérifier la validité des résultats mis en mémoire cache. La récupération des résultats supplémentaires n’est pas limitée à ces exemples. Cependant, la récupération d’un résultat supplémentaire dans la base de données 102 demandée par une requête actuelle ou une requête du suivi inclut l’option d’un rapprochement 705 de la mémoire cache 101, qui conserve, met à jour ou supprime 101 les résultats actuels de la mémoire cache et/ou ses paramètres, par ex. indiquant la disponibilité. Les détails sur ce rapprochement 705 de la mémoire cache 101 sont expliqués plus loin dans la description, lorsqu’il s’agit des mises à jour de la mémoire cache.
[0062] Dans le mode de réalisation exemplaire de mise en œuvre de la mémoire cache 101 pour le réseau de communication 200 de la FIG. 4, une requête de base de données d’un client 103 est reçue au niveau de la mémoire cache 101, le 5 décembre, demandant une route disponible pour la paire de serveurs (1, 5). Le mémoire 101 stocke la route la plus valide sortie, depuis la dernière mise à jour de la mémoire cache 101 en tant que paire clé-valeur < (1, 5), a-e-h-i >. Ayant stocké ce résultat 701, la mémoire cache 101 essaye de récupérer un résultat supplémentaire 703 délivré dans l’espace de données 106. Un résultat supplémentaire est délivré à partir de l’espace de donnée 106. Lors du traitement de la requête de base de données sur la base de données 102, une nouvelle route « a-b-c-d » est sortie, puisque l’espace de données 106 a changé depuis la dernière mise à jour, et la route ayant la probabilité la plus élevée que les résultats dans la représentation 105 de la mémoire cache 101 restent valides dans le temps est à présent associée à la nouvelle route 201, sortie en plus à partir de l’espace ' de données 106. Les probabilités des routes « a-e-h-i » et « a-b-c-d » sont comparées 706, et puisque la nouvelle route « a-b-c-d » à une probabilité plus élevée que les résultats de la représentation 105 de la mémoire cache 101 reste valide dans le temps, la paire clé-valeur < (1, 5), a-e-h-i > précédemment stockée dans le cash 101 est remplacée 608 par la paire clé 5 valeur < (1, 5), a-b-c-d > incluant la nouvelle route en tant que valeur. La paire clé - valeur remplacée est alors renvoyée 607 au client 103.
[0063] L’effet technique de ce mode de réalisation par rapport au système et procédés de US 2010/0036805 et US2016/0042278A est, en outre, que toute charge sur le système de base de données pendant le temps de la requête est évitée pour les requêtes de base de données 10 invalides, puisque les requêtes de base de données invalides font l’objet d’une réponse directement à partir de la mémoire cache 101 par une notification d’invalidité 702. Et d’autre part, pour chaque requête de base de données valide, la mémoire cache est en mesure de délivrer un ou plusieurs résultats. Si les résultats stockés dans la mémoire cache 101 sont délivrés par une transformation de données de l’espace de données 106, une recherche de 15 données sur l’espace de données 106 ou une sélection des résultats transformés et/ou recherchés dans l’espace de données 106. Cependant, les requêtes de base de données valides sont prouvées et partiellement mises à jour en réponse à la réception d’une requête de base de données au niveau de la mémoire cache 101. Par conséquent, les garanties que le résultat renvoyé est le résultat le plus valide au moment de la requête parmi tous les résultats délivrés 20 lors du traitement de la requête de base de données.
[0064] Si l’on résume les modes de réalisation exemplaires susmentionnés, la mémoire cache 101 renvoie les résultats provenant de la représentation 105 conformément à la configuration de la mémoire cache 101. Cependant la configuration de la mémoire cache 101 concernant le renvoi des résultats n’est pas limitée à ces exemples. Conformément à un 25 exemple A à la FIG. 8, en réponse à la réception d’une requête de base de données 800a d’un client 103, la mémoire cache 101 renvoie un résultat 781a, s’il est stocké dans la représentation 105. Autrement, la mémoire cache 101 renvoie une notification d’invalidité.
[0065] Conformément à un exemple B à la FIG. 8a, la représentation 105 de la mémoire cache 101 stocke plus d’un résultat délivré, et une indication d’une probabilité que les 30 résultats dans la représentation 105 de la mémoire cache 101 restent valides dans le temps. En réponse à la réception d’une requête de base de données 800b d’un client 103, la mémoire cache 101 renvoie le résultat 801b le plus valide.
[0066] Conformément à un exemple C, la représentation 105 de la mémoire cache 101 stocke un ou plusieurs résultats) pour toute requête de base de données sortie lors du traitement. En réponse à la réception d’une requête de base de données 800c, la mémoire cache 101 stockant un résultat pour cette requête de base de données dans la représentation 105 récupère un résultat supplémentaire 802 délivré à partir de l’espace de données 106. Les résultats récupérés en plus 803 délivrés à partir de l’espace de données 106 sont utilisés en option pour rapprocher le résultat stocké dans la représentation 105 de la mémoire cache 101 et/ou renvoyer 801c des alternatives, en plus du résultat stocké dans la représentation 105, au client 103. Dans l’un quelconque de ces exemples, la mémoire cache 101 renvoie directement une notification d’invalidité en réponse à la réception d’une requête de base de données, si aucun résultat n’est stocké dans la mémoire cache 101 pour la requête de base de données. En outre, toute charge de traitement utilisée par des requêtes de bases de données invalides sur le système de bases de données 100 est évitée au moment de la requête de base de données, indépendamment de la manière dont la réponse est apportée aux requêtes de base de données valides par la mémoire cache 101.
[0067] Dans certains modes de réalisation, la mémoire cache 101 stocke deux représentations ou plus, dans lesquelles chaque représentation 105 inclut un ou plusieurs résultats pour toute requête de base de données pour laquelle l’espace de données 106 des bases de données 102, différent de l’espace de données 106 des bases de données 102 d’autres représentations, est en mesure de délivrer un résultat.
[0068] Dans un mode de réalisation exemplaire, le système de base de données 100 inclut une pluralité de bases de données 102 provenant de différents locataires: Les locataires utilisent le système de base de données 100 via les requêtes de bases de données provenant de leurs clients respectifs 103. Dans certains modes de réalisation exemplaires, les requêtes de base de données des clients 103, demandant des résultats traités sur les espaces de données 102 de leur locataire respectif. Dans d’autres modes de réalisation exemplaires, les requêtes de base de données des clients 103, demandant des résultats en tant que combinaison de traitement des résultats sur l’espace de données 106 provenant de locataires différents. Par exemple, dans un environnement en nuage, incluant une pluralité de serveurs provenant de différents fournisseurs (locataires) les clients 103 souhaitent utiliser les ressources des serveurs de différents fournisseurs.
[0069] Dans certains modes de réalisation, la représentation 105 de la mémoire cache 101 inclut un ou plusieurs résultats prédits pour toute requête de base de données, prédisant les résultats délivrés lors du traitement de toute requête de base de données en évaluant un historique des résultats.
[0070] Dans un mode de réalisation exemplaire, provenant de l’historique des perturbations 400 dans le réseau de communication 200, un pronostic pour chaque jour du 5 prochain mois sont précalculés. La représentation 105 de la mémoire cache 101 a alors une granularité temporelle présentant pour chaque jour du mois suivant les résultats prédits et une probabilité prédite que les résultats dans la présentation 105 de la mémoire cache 101 restent valides dans le temps. À partir du nombre précis de perturbations, une probabilité que les résultats de la présentation 105 de la mémoire cache 101 restent valides dans le temps, pour 10 chacun des résultats stockés pour chaque jour est calculée. Une requête de base de données reçue au niveau de la mémoire cache 101 inclut alors une date à laquelle le résultat demandé est renvoyé à partir de la présentation 105 de la mémoire cache 101.
[0071] Dans certains modes de réalisation, la mémoire cache 101 est mise à jour sur la base des probabilités que les résultats dans la représentation 105 de la mémoire cache 101 restent 15 valides dans le temps.
[0072] Dans un mode de réalisation exemplaire, le système de base de données 100 est mis en œuvre par un groupe de répartition de charge 900 présenté à la FIG. 9 incluant une mémoire cache 101 stockant dans la représentation 105 pour tout groupe de serveurs 901 un ou plusieurs serveurs 902 disponible(s) pour recevoir des tâches. Pour distribuer les tâches, la 20 mémoire cache 101 reçoit une requête de base de données provenant de répartiteur de charge 900 demandant un groupe de serveurs 901 incluant un serveur 902 auquel une tâche est alors distribuée.
[0073] Le groupe de répartition de charge 900 stocke pour chaque groupe de serveurs 901 l’utilisation 903 des serveurs respectifs 902 inclus dans les groupes de serveurs respectifs 901.
Le groupe de répartition de charge 900 distribue une tâche à un groupe de serveurs 901 et/ou à un serveur respectif 902 de celui-ci, si le groupe de serveurs 901 inclut un serveur 902 présentant une utilisation 903 de 50 % ou moins.
[0074] La mémoire cache 101 est initialisée en déterminant par une machine de traitement 104 sur l’espace de données 106 tous les serveurs 902 dans les groupes de serveurs 30 respectifs 901 qui présentent une utilisation 903 de 50% de ou moins. Les outils de traitement 904 pour le groupe de serveurs A les résultats 4 et 5, pour le groupe de serveurs B le seul résultat 3 pour le groupe de serveurs C les résultats 2,3 et 4. La mémoire cache 101 stocke uniquement un serveur pour tout groupe de serveurs 901 sorti lors du traitement.
[0075] Une probabilité que le serveur 902 dans le groupe de serveurs respectif 901 est disponible pour recevoir des tâches distribuées à partir du groupe de répartition de charge 900 5 dans le temps est plus élevée que la probabilité pour un autre serveur, si l’utilisation du serveur est moins importante que l’utilisation de l’autre serveur. Par exemple, le serveur 5 groupe de serveurs A avec une utilisation de 35 % à une probabilité plus élevée d’être disponible pour recevoir une tâche, puisque la charge de travail du serveur 5 est moins importante que le serveur 4 du groupe A avec une utilisation de 45 %. Le serveur 4 du groupe 10 de serveurs A est proche de passer à une utilisation de 50 % et n’est en outre plus disponible pour recevoir des tâches dans cet exemple.
[0076] Utilisation du serveur 5 peut changer et passer de 35 % à 40 % ou plus. Tant qu’elle ne dépasse pas l’utilisation du serveur 4, la probabilité d’être disponible pour recevoir une tâche est toujours plus élevée que la probabilité d’être disponible pour recevoir une tâche comme 15 pour le serveur 4. En outre, les données stockées dans l’espace de données 106 du groupe de répartition de charge 900 peut changer mais les résultats délivrés pour le groupe de serveurs A qui sont les serveurs 4 et 5 restent. D’autre part, les utilisations peuvent également diminuer sans changer les résultats délivrés et en outre, sans influencer la décision de distribuer une tâche à un serveur respectif 902 dans le groupe de serveurs A. La décision de distribution est 20 prise lors du traitement des résultats, par ex. si le serveur 4 augmente l’utilisation dépassant 50 % sans délivrer de résultat, ou si le serveur 4 diminue l’utilisation en dessous de 35 % et en outre la préférence est donnée au serveur 5 ci-dessus, lorsqu’un résultat est choisi pour être stocke dans la mémoire cache 101. Par conséquent, lors du traitement des résultats sur la machine informatique 104, la mémoire cache 101 stocke le résultat ayant la probabilité la plus 25 elevee que le résultat délivré lors du traitement reste inchangé plutôt que de stocker le résultat ayant la probabilité la plus élevée que les données, sur l’espace de données 106 auquel le résultat est lié, changent.
[0077] Par conséquent, dans l’exemple de la FIG. 9 décrite ci-dessus, la mémoire cache 101 stocke pour le groupe de serveurs A le serveur 4 avec une utilisation de 35 %, pour le groupe 30 de serveurs B le serveur 3 avec une utilisation de 30 % et pour le groupe de serveurs C le serveur 2 avec une utilisation de 25 %.
[0078] La mémoire cache 101 reçoit une requête de base de données provenant du groupe de répartition de charge 900 pour fournir un serveur 902 provenant du groupe de serveurs B qui est disponible pour recevoir une tâche. La mémoire cache 101 renvoie le serveur 3 puisque c’est le serveur qui a la probabilité la plus élevée de rester disponible dans le temps, ayant l’utilisation la plus faible 903. Le groupe de répartition de charge 900 distribue alors la tâche au serveur 3 dans le groupe de serveurs B.
[0079] Dans un autre exemple, chaque groupe de serveurs 901 inclut un groupe de répartition de charge supplémentaire contrôlant la distribution des tâches dans le groupe de serveurs respectif 901. Le groupe de répartition de charge 900 stocke dans l’espace de données 106 l’utilisation 903 pour tous les serveurs 902 dans les groupes de serveurs respectifs 901. Lors de l’initialisation de la mémoire cache 101, la mémoire cache 101 stocke pour chaque groupe de serveurs 901 l’utilisation 903 d’un serveur 902 ayant l’utilisation la plus faible 903 parmi tous les serveurs 902 du groupe de serveurs respectif 903. Dans un autre exemple, la moyenne de toutes les utilisations 903 des serveurs 902 dans chacun des groupes de serveurs 901 est stockée. Par conséquent, la mémoire cache 101 stocke pour le groupe de serveurs A une utilisation moyenne de 59 %, pour le groupe de serveurs B une utilisation moyenne de 61 % et pour le groupe de serveurs C une utilisation moyenne de 54 %.
[0080] La mémoire cache 101 reçoit une requête de base de données provenant du groupe de répartition de charge 900 pour fournir un groupe de serveurs 901 ayant stocké l’utilisation la plus faible 903 parmi toutes les utilisations stockées pour les groupes de serveurs 901. La mémoire cache 101 renvoie le groupe de serveurs C avec une utilisation stockée de 25 % ou le groupe de serveurs C avec une utilisation stockée moyenne de 54 %. Le groupe de répartition de charge 900 distribue alors la tâche au groupe de serveurs C, si le répartiteur de charge inclus en plus dans le groupe de serveurs C distribue par ailleurs la tâche à un ou plusieurs des serveurs 902 du groupe de serveurs C.
[0081] Dans un autre exemple, le groupe de serveurs C est affecté par une panne ou n’est plus connectée au groupe de répartition de charge 900. En réponse à une panne ou une perte de connexion, la mémoire cache 101 effectue une mise à jour. Par conséquent, en raison de cette mise à jour de la mémoire cache 101, aucun résultat n’est stocké dans la mémoire cache 101 pour le groupe de serveurs C. Alternativement, le résultat déjà stocké dans la représentation 105 de la mémoire cache 101 pour le groupe de serveurs C est mis à jour avec un paramètre définissant une connexion au groupe de serveurs C ne devant pas être disponible jusqu’à nouvel ordre ou pendant une période de temps respective. La mémoire cache 101 reçoit une requête de base de données provenant du groupe de répartition de charge 900 pour fournir un serveur 902 du groupe de serveurs C qui est disponible pour recevoir une tâche. La mémoire cache 101 renvoie alors une notification d’invalidité, puisqu’aucune tâche ne peut être distribuée par le groupe de répartition de charge 900 au groupe de serveurs C. Dans un exemple où la mémoire cache reçoit une requête de base de données du groupe de répartition de charge 900 pour fournir un groupe de serveurs 901 ayant stocké l’utilisation la plus faible 903 parmi toutes les utilisations stockées pour les groupes de serveurs 901. La mémoire cache 101 renvoie le groupe de serveurs A si une utilisation moyenne de 59 % est stockée dans la mémoire cache 101 pour le groupe de serveurs A. Ou la mémoire cache 101 renvoie le groupe de serveurs B si une utilisation de 30 % du serveur 902 ayant l’utilisation la plus faible dans le groupe de serveurs 901 a été stockée dans la mémoire cache 101.
[0082] Dans ce mode de réalisation, la mise à jour de la mémoire cache 101 tient compte des résultats délivrés non directement liés aux données de l’espace de données 106 de la base de données 102 mais liée à une agrégation de données dans l’espace de données 106.
[0083] Comme déjà mentionné, une initialisation et/ou une mise à jour de la mémoire cache 300, telle que représentée à la FIG. 3 est un mécanisme, qui est en général séparé du mécanisme de réponse aux requêtes 301. La mise à jour de la mémoire cache peut cependant être effectuée de toute manière appropriée. Par conséquent, le mécanisme de mise à jour n’est pas limité aux modes de réalisation décrits dans les présentes.
[0084] Dans certains modes de réalisation, la mise à jour de la mémoire cache 101 inclut le remplacement d’un premier résultat de la représentation 105 par un deuxième résultat pour la même requête de base de données en réponse à la détermination selon laquelle le deuxième résultat a une probabilité plus élevée de rester valide dans le temps que le premier résultat.
[0085] Dans certains modes de réalisation, la mise à jour de la mémoire cache 101 inclut un remplacement d’une valeur du résultat. Dans certains modes de réalisation, la mise à jour de la mémoire cache 101 inclut la suppression d’un résultat stocké à partir de la représentation 105 de la mémoire cache 101, si la mise à jour de la mémoire cache 101 permet d’obtenir un résultat stocké par la représentation de la mémoire cache qui n’existe plus dans l’espace de données 106 des bases de données 106. Dans certains modes de realisation, la mise à jour de la mémoire cache 101 inclut la mise à jour d’un ou paramètres du résultat, par ex. définissant les conditions de disponibilité du résultat.
[0086] Dans certains modes de réalisation exemplaires, la représentation 105 de la mémoire cache 101 est mise à jour en reconnaissant que l’espace de données 106 de la base de données 102 dans le système de base de données 100 a changé. Alors les résultats et/ou les paramètres dans la représentation 105 de la mémoire cache 101 qui sont affectés par le changement sont recalculés par la machine informatique 104 au moment de reconnaître le changement. Lors de la sortie de plus d’un résultat pour une requête de base de données recalculée, celui ayant la probabilité la plus élevée que les résultats dans la représentation 105 de la mémoire cache 101 restent valides dans le temps est choisi pour être stocké dans la représentation 105 de la mémoire cache 101 lors d’une mise à jour. Si la mémoire cache 101 stocke plus d’un résultat dans la représentation 105, les résultats ayant la probabilité la plus élevée sont là encore choisis.
[0087] Dans certains modes de réalisation, la mémoire cache lOlest mise à jour sur une base planifiée récurrente. En outre, toute requête de base de données, pour laquelle les données dans l’espace de données 106 lié aux résultats pour les requêtes de bases de données ont changé puisque la dernière mise à jour planifiée sont recalculées, afin de déterminer si les résultats délivrés ou leurs paramètres ont également changé. Dans certains autres modes de réalisation exemplaires, le total de toute requête de base de données recalculée pour mettre à jour l’intégralité de la représentation 105 de la mémoire cache 101. Par exemple, un nouveau serveur 9 est introduit dans le réseau de communication 200 de la FIG. 2. La représentation 105 de la mémoire cache 101 stocke pour toute permutation des serveurs 202, c.-à-d. toute paire de serveurs un ou plusieurs résultat(s) délivré(s). Par conséquent, une mise à jour déclenchée en ajoutant un nouveau serveur amène un recalcul complet de la représentation 105 de la mémoire cache 101 en tenant compte de toutes les nouvelles paires de serveurs incluant le serveur 9 nouvellement introduit. Si plus d’un résultat est délivré lors du recalcul des résultats pour toute requête de base de données, un ou plusieurs résultats est/sont choisi(s) pour être stocké(s) dans la mémoire cache 101 afin que la probabilité la plus élevée que les résultats dans la représentation 105 de la mémoire cache 101 restent valides dans le temps.
[0088] Dans d’autres modes de réalisation exemplaires, la représentation 105 de la mémoire cache 101 est mise à jour s’il est demandé de récupérer 704 un ou plusieurs résultats supplémentaires dans la base de données 102 tel que représenté à la FIG. 7. En général, la mémoire cache 101 mise à jour dans un mécanisme 300 séparé par un mécanisme 301 de réponse aux requêtes. Comme déjà mentionné, une réponse à la requête est alors directement et de manière adéquate obtenue, à partir de la mémoire cache 101 par le résultat stocké 703 ou une notification d’invalidité 702 (de manière équivalente à la FIG.3, 306). Si une requête ou une requête de suivi demande un ou plusieurs résultats supplémentaires par rapport au résultat renvoyés à partir de la mémoire cache 101, il existe une option supplémentaire pour un rapprochement 705 de la mémoire cache 101, associant les deux mécanismes 300, 301, en général séparés.
[0089] Comme déjà mentionné, il existe différentes possibilités de récupérer un ou plusieurs résultats) supplémentaire(s) dans la base de données 102 et en outre, il existe différentes possibilités de rapprochement 705 de la mémoire cache, en fonction des résultats supplémentaires récupérés dans la base de données 102. Si la requête actuelle ou requête de suivi demande, en plus du résultat déjà renvoyé à partir de la mémoire cache 101, tous les résultats qui sont actuellement disponibles dans la base de données 102 un rapprochement de la mémoire cache 101 inclut 1 ajout d’au moins un résultat supplémentaires récupérés pour la requête dans la mémoire cache 101 et en outre, l’augmentation des résultats pour la requête stockée dans la représentation 105 et/ou le remplacement des résultats pour la requête stockée dans la représentation 105.
[0090] Pour sélectionner les résultats provenant de tous les résultats supplémentaires qui sont stockés pour une mise à jour de la mémoire cache 101, la probabilité de rester inchangé dans le temps est comparée aux résultats déjà stockés dans la mémoire cache 101. Si la probabilité des résultats supplémentaires est la même ou est plus faible que la probabilité des résultats déjà stockés dans la mémoire cache 101, aucune mise à jour n’est effectuée. Si la probabilité des résultats supplémentaires est plus élevée les résultats déjà stockés dans la mémoire cache 101, les résultats stockés sont remplacés par des résultats supplémentaires ayant une probabilité plus élevée de rester inchangés dans le temps. Si la récupération dans la base de données 102 indique qu il n’existe actuellement aucun résultat disponible pour la requête, par ex. à la FIG. 2, un serveur a été complètement supprimé du réseau et plus aucune route vers ce serveur n’est disponible, la mémoire cache 101 mise à jour supprimant tous les résultats pour la requête provenant de la mémoire cache 101. Dans certains autres exemples, les résultats et la probabilité de rester inchangé dans le temps sont égales à celles des résultats supplémentaires récupérés dans la base de données 102, mais les paramètres ont changé. Les paramètres des résultats sont alors mis à jour. Les résultats supplémentaires récupérés, qu’ils soient ou non ajoutés à la mémoire cache en 705 sont renvoyés 703. Comme déjà expliqué auparavant, le rapprochement de la mémoire cache est uniquement une option supplémentaire lors de la récupération des résultats supplémentaires dans la base de données mais il ne doit pas être effectué uniquement lorsque les résultats supplémentaires sont demandés par une requête actuelle ou de suivi.
[0091] Dans un autre exemple, le requête actuelle ou de suivi demande de récupérer un ou plusieurs résultat(s) supplémentaire(s) dans la base de données 102 au-delà du ou des résultats déjà stockés dans la représentation 105 de la mémoire cache 101. En outre, la mémoire cache 101 récupère dans tout autre cas aucun résultat ou un résultat différent de celui déjà 5 stocké dans la représentation 105. La probabilité de rester inchangé dans le temps pour le résultat différent est alors comparée à la probabilité du résultat déjà stocké dans la mémoire cache. Si la probabilité de résultat supplémentaire est égale plus faible que la probabilité du résultat déjà stocké dans la représentation 105 de la mémoire cache 101, le résultat n’est pas mis à jour. Autrement, le résultat déjà stocké dans la mémoire cache 101 ayant une probabilité 10 plus faible de rester inchangé est remplacé par le résultat supplémentaire ayant une probabilité plus élevée de rester inchangé dans un rapprochement de la mémoire cache 101. Les changements dans les paramètres d’un résultat peuvent également être mis à jour. Si aucun résultat supplémentaire n’est récupéré dans la base de données 102, dans cet exemple, cela signifie uniquement que la base de données ne délivre pas de résultats supplémentaires au15 delà des résultats déjà stockés dans la mémoire cache 101. Puisque la mémoire cache 101 ne peut pas distinguer, s’il n’y a plus aucun résultat pour la requête à récupérer dans la base de données 102, ou s’il n’y a aucun résultat supplémentaire uniquement, cela signifie que la mémoire cache 101 ne peut pas non plus distinguer, si le résultat déjà stocké peut être supprimé par une mise à jour. Par conséquent, dans cet exemple, la mémoire cache 101 20 conserve ou remplace les résultats stockés dans la mémoire cache 101 et/ou les paramètres des résultats mais ne supprime pas les résultats provenant de la mémoire cache 101 dans le rapprochement de la mémoire cache 101.
[0092] Dans un autre exemple, la requête actuelle ou de suivi demande de récupérer un plusieurs résultat(s) supplémentaire(s) 704 pour vérifier la validité du résultat renvoyé 703.
C est par exemple une option dans des situations où la mémoire cache est mise à jour de manière périodique pour déclencher une mise à jour intermédiaire concernant uniquement la requête actuelle. Un rapprochement de la mémoire cache 101 utilisant le ou les résultat(s) supplémentaire(s) récupéré(s) dans la base de données 102 conserve alors le résultat dans la mémoire cache 101, si les résultats supplémentaires ont une probabilité égale ou plus faible de 30 rester inchangés. Le rapprochement met à jour la mémoire cache 101, si la probabilité des résultats supplémentaires est plus élevée. Le rapprochement supprime les résultats stockés dans la mémoire cache 101, si aucun résultat supplémentaire n’est récupéré dans la base de données 102. Le rapprochement met à jour les paramètres des résultats qui ont changé entretemps.
• [0093] La mise à jour de la mémoire cache 101 basée sur la probabilité que les résultats dans la représentation 105 de la mémoire cache 101 restent valides dans le temps indiquent qu’en réponse à la réception d’une requête de base de données d’un client 103 des résultats fiables sont renvoyés au client 103; des résultats qui sont cohérents avec une probabilité élevée avec les résultats délivrés à partir de l’espace de données 106 de la base de données 102 dans le système base de données 100. De plus, cela minimise le nombre de mises à jour de la mémoire cache 101, comme déjà expliqué auparavant.
[0094] La FIG. 10 est une représentation sous forme de diagramme du composant interne d’une machine informatique 104. La machine informatique 104 inclut un ensemble 10 d’instructions pour amener la machine informatique 104 à effectuer l’un quelconque des procédés discutés dans les présentes lorsqu’elles sont exécutées par la machine informatique 104; Le machine informatique 104 inclut un ou plusieurs processeurs 1001, une mémoire principale 1002 et un dispositif d’interface de réseau 1003 qui communiquent les uns avec les autres via un bus 1004. En option, la machine informatique 104 peut par ailleurs inclure une 15 mémoire statique 1005 et une unité de lecteur de disque. Un écran vidéo, un dispositif de saisie alphanumérique et un dispositif de contrôle de pointeur peuvent être fournis comme exemples d’interface d’utilisateur 1006. Le dispositif d’interface de réseau 1003 connecte la machine informatique 104 au moins aux clients 103 ainsi qu’aux bases de données 102 du système de base de données 100.
[0095] Dans des modes de réalisation dans lesquels la machine informatique 104 héberge aussi la mémoire cache 101, la mémoire cache 101 peut être conservée dans la mémoire principale 101. Un ensemble d’instructions exécutables par ordinateur (c.-à-d. un code de programme informatique) réalisant un quelconque ou tous les procédés décrits ci-dessus, réside entièrement, ou au moins partiellement, sur un support lisible par ordinateur, par ex., la 25 mémoire principale 1002 (représentée comme une des entités fonctionnelles de traitement de requête de base de données 1007 incluant la fonctionnalité pour recevoir et traiter les requêtes de base de données incluant l’opération de détermination et la fonctionnalité de mise ajour de mémoire-cache 1008 et/ou dans le ou les processeurs 1001 et/ou dans la mémoire statique 1005. Les instructions peuvent par ailleurs être transmises ou reçues sous forme de 30 signal propagé via Internet par l’intermédiaire du dispositif d’interface de réseau 1003. Le fonctionnement basique de la machine informatique 104 incluant une interface d’utilisateur et un réseau de communication est contrôlé par un système d’exploitation qui est aussi situé dans la mémoire principale 1005, le ou les processeurs) 1001 et/ou la mémoire statique 1005.
. [0096] En général, les routines exécutées pour mettre en œuvre les modes de réalisation de l'invention, qu'elles soient mises en œuvre comme des parties d'un système d'exploitation ou d'une application spécifique, d'un composant, d'un programme, d'un objet, d’un module ou d'une séquence d'instructions, ou même un sous-ensemble de ceux-ci, peuvent être désignées dans les présentes comme « code de programme informatique » ou simplement « code de programme ». Le code de programme comprend typiquement des instructions lisibles par ordinateur qui résident à des moments divers dans des dispositifs divers de mémoire et de stockage dans un ordinateur, et qui lorsqu'il est lu et exécuté par un ou plusieurs processeurs dans un ordinateur, amène cet ordinateur effectuer les opérations nécessaires pour exécuter 10 des opération et/ou éléments propres aux aspects variés des modes de réalisation de l'invention. Les instructions d'un programme, lisibles par ordinateur, pour réaliser les opérations des modes de réalisation de l'invention peuvent être, par exemple, le langage d'assemblage, ou encore un code source ou un code objet écrit en combinaison avec un ou plusieurs langages de programmation.
[0097] Divers codes de programme décrits dans les présentes peuvent être identifiés, selon l’application dans laquelle ils sont mis en œuvre, dans des modes de réalisation spécifiques de l'invention. Cependant, on notera qu’une quelconque nomenclature d'un programme particulier dans les présentes est utilisée uniquement par commodité ; ainsi l'invention ne peut être limitée à un seul usage dans toute application spécifique identifiée et/ou sous-entendue 20 par ladite nomenclature. Par ailleurs, au vu du nombre généralement infini de moyens par lesquels les programmes informatiques peuvent être organisés selon des routines, procédures, procédés, modules, objets, et similaires, ainsi que les façons variées d'affecter les fonctionnalités d'un programme parmi diverses couches de logiciels qui sont hébergés dans un ordinateur typique [par ex., les systèmes d'exploitation, les bibliothèques, les interfaces d'application de programme (API), les applications, les petites applications (applets) etc.], on notera que les modes de réalisation de l'invention ne sont pas limités à l'organisation spécifique et à l'affectation spécifique des fonctionnalités de programme telles qu'elles sont décrites dans les présentes.
[0098] Le code de programme mis en œuvre dans tout(e) application/module décrit(e) dans 30 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 ayant des instructions de programme lisibles par ordinateur pour amener un processeur à réaliser des aspects des modes de réalisation de l'invention.
[0099] Les supports de stockage lisibles par ordinateur, étant intrinsèquement non transitoires, peuvent inclure des supports tangibles, volatiles et non volatiles et amovibles et non amovibles, mis en œuvre dans tout procédé ou technologie pour le stockage d'informations, telles que les instructions 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 inclure 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 autre technologie de support de mémoire à état défini, un disque compact portable doté d une mémoire à lecture seule (CD-ROM), ou autre stockage optique, cassettes magnétiques, bande d’enregistrement magnétique, disque de stockage magnétique ou autres dispositifs de stockage magnétique, ou tout autre support pouvant être utilisé pour stocker 1 information désirée et qui peut à être lu par un ordinateur. Un support de stockage lisible par ordinateur ne peut être interprété comme « signaux transitoires » en soi (par exemple, des ondes radio ou autres ondes électromagnétiques se propageant, ondes électromagnétiques se propageant a travers un support de transmission telle qu'un guide d'ondes, ou des signaux électriques transmis par câble). Les instructions de programme lisibles par ordinateur peuvent être téléchargées sur un ordinateur, un autre type d'appareil de traitement de données programmable ou autre dispositif de support de stockage lisible par ordinateur, ou vers un ordinateur externe ou vers un dispositif de stockage externe via un réseau.
[00100] Les instructions de programme lisibles par ordinateur, stockées sur un support lisible par ordinateur, peuvent être utilisées pour amener un ordinateur, d'autres types d'appareils programmables de traitement de données, ou d’autres dispositifs, à fonctionner d'une façon particulière, de sorte que les instructions stockées sur le support lisible par ordinateur produisent un article de fabrication incluant les instructions qui mettent en œuvre 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 informatiques peuvent être fournies à un ou plusieurs processeurs d'un ordinateur à usage général, un ordinateur dédié ou un autre appareil programmable de traitement de données pour produire une machine, de sorte que les instructions, lorsqu'elles sont exécutées à l'aide du ou des . processeurs, accomplissent une série de calculs pour mettre en œuvre les fonctions, actions, et/ou les opérations spécifiées dans les organigrammes et/ou diagrammes séquentiels.
[00101] La terminologie utilisée dans les présentes a pour but de décrire uniquement des modes de réalisation particuliers et n'est pas destinée à limiter les modes de réalisation de l'invention. On comprendra par ailleurs que les termes «comprendre», «comprend» et/ou «comprenant», lorsqu’ils sont utilisés dans cette spécification, précisent la présence de caractéristiques, de nombres entiers, d’étapes, d’opérations, d’éléments, et/ou de composants, mais n’excluent pas la présence ou l’ajout d’une ou de plusieurs caractéristiques, de nombres entiers, d’étapes, d’éléments, de composants et/ou de groupes, en cela. De plus, dans la mesure où les termes « inclut », « ayant », « a », « avec », « compris de » ou des variantes de ceux-ci, sont utilisés, dans la description détaillée ou les revendications, ces termes sont censés etre inclusifs de façon similaire au terme « comprenant ».
[00102] Bien que l'invention ait été illustrée par une description de divers modes de realisation et bien que ces modes de réalisation aient été décrits de façon considérablement detaillee, il n’y a pas d'intention de restreindre ou de limiter en aucune façon la portée des revendications en annexe à ces détails. Des avantages supplémentaires et des modifications possibles apparaîtront aisément aux hommes de métier. L'invention sous ses aspects plus larges n'est donc pas limitée aux détails spécifiques, aux appareils représentatifs et aux procédés, ainsi qu’aux exemples illustratifs représentés et décrits. Par conséquent, il est possible de s'éloigner de ces détails sans s'éloigner de l'esprit et de la portée du concept inventif général.

Claims (13)

  1. REVENDICATIONS
    1. Un procédé de traitement des requîtes de base de données pour récupérer les résultats d’un calcul de données d’un système de base de données à partir d’une mémoire cache, la mémoire cache stockant une représentation d’un espace de données d’au moins une base de
    5 données d’un système de base de données, la représentation comprenant au moins un résultat pour toute requête de base de données pour laquelle l’espace de données de ladite au moins base de données du système de base de données est en mesure de délivrer un résultat, le procédé comprenant ; au niveau de la mémoire cache :
    en réponse à la réception d’une requête de base de données, la détermination, en
    10 utilisant la représentation stockée, si l’espace de données de ladite au moins base de données est en mesure de délivrer au moins un résultat pour la requête de base de données, dans l’affirmative, le renvoi d’au moins un résultat pour la requête de base de données ;
    autrement, le renvoi d’une notification d’invalidité.
  2. 2. Le procédé selon la revendication 1, dans lequel la représentation comprend un certain nombre d’enregistrements de données, chaque enregistrement de données comprenant une combinaison clé - valeur, dans laquelle la requête base de données comprend une clé d’au moins un enregistrement de données et ledit au moins résultat pour la requête de base de
    20 données comprend au moins une valeur dudit au moins enregistrement de données.
  3. 3. Le procédé selon la revendication 2, dans lequel la combinaison clé - valeur représente un chemin de connexion entre un nœud d’origine et un nœud de destination sur un réseau de communication, dans lequel la clé précise un nœud d’origine et un nœud de destination dans le réseau 25 de communication et la valeur est au moins un chemin du nœud d’origine au nœud de destination, dans lequel le nœud d’origine est connecté directement ou via au moins un nœud intermédiaire au nœud de destination.
  4. 4. Le procédé selon l’une quelconque des revendications 1 à 3, dans lequel la
    30 représentation comprend pour au moins une requête de base de données, moins de résultats que l’espace de données de ladite au moins base de données du système de base de données est en mesure de délivrer, les résultats moindres formant un sous-espace de résultat, dans . lequel le sous-espace de résultat est donné sur la base d'une probabilité que les résultats dans la representation la mémoire cache restent valides dans le temps.
  5. 5. Le procédé selon la revendication 4, dans lequel la représentation comprend au moins deux résultats pour les requêtes de bases de données qui sont délivrés lots du calcul de la
    5 requête de base de données sur l’espace de données de ladite au moins base de données du système de base de données, dans lequel le renvoi dudit au moins résultat pour la requête de base de données provenant de la mémoire cache comprend le renvoi d’au moins l’un desdits deux résultats ayant l’indicateur indiquant la probabilité la plus élevée de rester valide dans le temps.
    10
  6. 6. Le procédé selon l'une quelconque des revendications 1 à 5, comprenant par ailleurs :
    en réponse au renvoi d’une notification d’invalidité à une requête de base de données reçue, l’accumulation d’un certain nombre d’occurrences de la requête de base de données reçue pour laquelle une notification d’invalidité est renvoyée ;
    l’optimisation du réseau de communication, en réponse au fait de déterminer que le
    15 nombre d’occurrences dépasse un seuil prédéfini.
  7. 7. Le procédé selon l'une quelconque des revendications 1 à 6, comprenant par ailleurs :
    la récupération d’un ou de plusieurs résultats supplémentaires provenant de la ou des bases de données du système de données, le renvoi du ou des résultat(s) suppiémentaire(s) en plus du résulta renvoyé à partir de la 20 représentation de la mémoire cache.
  8. 8- Le procédé selon la revendication 7, la mise à jour de la représentation de la mémoire cache avec un ou plusieurs résultat(s) supplémentaire(s) récupéré(s).
  9. 9. Un procédé selon l’une quelconque des revendications 1 à 8, comprenant par ailleurs :
    la mise à jour de la mémoire cache sur la base de la probabilité que les résultats dans la 25 représentation de la mémoire cache restent valides dans le temps.
  10. 10. Le procédé selon la revendication 9, dans lequel a mise à jour de la mémoire cache comprend par ailleurs :
    • le remplacement d’un premier résultat de la représentation par un deuxième résultat pour la même requête de base de données en réponse au fait de déterminer que le deuxième résultat a une probabilité plus élevée de rester valide dans le temps que le premier résultat.
  11. 11. Une mémoire cache pour traiter les requêtes de bases de données agencées pour 5 exécuter le procédé de l’une quelconque des revendications 1 à 10.
  12. 12. Un système de base de données comprenant une mémoire cache agencée pour exécuter le procédé de l’une quelconque des revendications 1 à 10.
  13. 13. Un programme informatique pour traiter les requêtes de base de données à l’aide d’une mémoire cache comprenant des instructions de code stockées sur un support de
    10 stockage lisible par ordinateur pour exécuter le procédé selon l’une quelconque des revendications 1 à 10, lorsque ledit programme est exécuté sur un ordinateur.
FR1854120A 2018-05-17 2018-05-17 Mise en memoire cache de base de donnees Pending FR3081238A1 (fr)

Priority Applications (5)

Application Number Priority Date Filing Date Title
FR1854120A FR3081238A1 (fr) 2018-05-17 2018-05-17 Mise en memoire cache de base de donnees
US16/409,318 US11157501B2 (en) 2018-05-17 2019-05-10 Database caching
ES19174827T ES2882923T3 (es) 2018-05-17 2019-05-16 Almacenamiento de memoria caché de base de datos
EP19174827.6A EP3570184B1 (fr) 2018-05-17 2019-05-16 Mise en cache de base de données
CN201910414308.3A CN110502534B (zh) 2018-05-17 2019-05-17 数据库高速缓存

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1854120 2018-05-17
FR1854120A FR3081238A1 (fr) 2018-05-17 2018-05-17 Mise en memoire cache de base de donnees

Publications (1)

Publication Number Publication Date
FR3081238A1 true FR3081238A1 (fr) 2019-11-22

Family

ID=63557567

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1854120A Pending FR3081238A1 (fr) 2018-05-17 2018-05-17 Mise en memoire cache de base de donnees

Country Status (5)

Country Link
US (1) US11157501B2 (fr)
EP (1) EP3570184B1 (fr)
CN (1) CN110502534B (fr)
ES (1) ES2882923T3 (fr)
FR (1) FR3081238A1 (fr)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858612B (zh) * 2020-07-28 2023-04-18 平安科技(深圳)有限公司 基于图数据库的数据加速访问方法、装置及存储介质
US11995081B2 (en) 2020-09-14 2024-05-28 Oracle International Corporation Predicting future query rewrite patterns for materialized views
US11803485B2 (en) * 2021-03-11 2023-10-31 International Business Machines Corporation Microservice system with global context cache

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560223B2 (en) 2002-08-29 2013-10-15 Mapquest, Inc. Automated route determination
US11048765B1 (en) * 2008-06-25 2021-06-29 Richard Paiz Search engine optimizer
US20100036805A1 (en) 2008-08-05 2010-02-11 International Business Machines Corporation System Maintainable and Reusable I/O Value Caches
WO2011160687A1 (fr) 2010-06-23 2011-12-29 Tomtom International B.V. Système et procédé d'optimisation et de mise à jour dynamique d'informations d'itinéraire
US10430736B2 (en) 2012-05-25 2019-10-01 Conduent Business Services, Llc System and method for estimating a dynamic origin-destination matrix
SG11201501650WA (en) * 2012-09-27 2015-04-29 Amadeus Sas Method and system of storing and retrieving data
TWI526968B (zh) * 2014-02-07 2016-03-21 Data Caching Method with High Transitivity and Correctness
EP2911070B1 (fr) 2014-02-19 2016-10-19 Amadeus S.A.S. Validité à long terme de résultats de demande précalculés
US20160042278A1 (en) * 2014-08-06 2016-02-11 International Business Machines Corporation Predictive adjustment of resource refresh in a content delivery network
CN106484691B (zh) * 2015-08-24 2019-12-10 阿里巴巴集团控股有限公司 移动终端的数据存储方法和装置
US10909118B2 (en) * 2016-02-04 2021-02-02 Salesforce.Com, Inc. Cache optimization for missing data
GB201615748D0 (en) * 2016-09-15 2016-11-02 Gb Gas Holdings Ltd System for importing data into a data repository

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ALEXANDROS LABRINIDIS ET AL: "Caching and Materialization for Web Databases", FOUNDATIONS AND TRENDS IN DATABASES, vol. 2, no. 3, 1 January 2010 (2010-01-01), pages 169 - 266, XP055121212, ISSN: 1931-7883, DOI: 10.1561/1900000005 *
QIONG LUO ET AL: "Middle-tier database caching for e-business", PROCEEDINGS OF THE ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA : JUNE 3 - 6, 2002, MADISON, ASSOCIATION FOR COMPUTING MACHINERY, NEW YORK, NY, US, 3 June 2002 (2002-06-03), pages 600 - 611, XP058266704, ISBN: 978-1-58113-497-1, DOI: 10.1145/564691.564763 *

Also Published As

Publication number Publication date
EP3570184B1 (fr) 2021-04-21
US11157501B2 (en) 2021-10-26
CN110502534A (zh) 2019-11-26
ES2882923T3 (es) 2021-12-03
EP3570184A1 (fr) 2019-11-20
CN110502534B (zh) 2022-07-26
US20190354528A1 (en) 2019-11-21

Similar Documents

Publication Publication Date Title
US10862957B2 (en) Dissemination of node metrics in server clusters
US10628445B2 (en) System, method and computer program product for performing a synchronization of data
US10671975B2 (en) Smart streaming of data between external systems and service providers in an on-demand environment
US20160119244A1 (en) Facilitating workload-aware shuffling and management of message types in message queues in an on-demand services environment
US9208476B2 (en) Counting and resetting broadcast system badge counters
US20180025007A1 (en) Method and system for adaptive processing of resource usage records
US9495411B2 (en) Increased parallelism performance of batch requests
US20180349363A1 (en) Opportunistic gossip-type dissemination of node metrics in server clusters
WO2013039799A2 (fr) Entreprise de distribution de données d&#39;événement d&#39;actualité
US20210096977A1 (en) Handling of workload surges in a software application
US8768963B2 (en) Methods and systems for detecting skewed data in a multitenant database environment
US20180331887A1 (en) Techniques and architectures for recovering from a service disruption in a multi-server environment
US20130067025A1 (en) Target subscription for a notification distribution system
US11714821B2 (en) Adjustable connection pool mechanism
US10936596B2 (en) Dynamic selection of data sources for streaming dynamic data
FR3081238A1 (fr) Mise en memoire cache de base de donnees
US11675758B2 (en) Early detection and warning for system bottlenecks in an on-demand environment
US11068483B2 (en) Dynamic selection and application of rules for processing of queries in an on-demand environment
US11256430B2 (en) Criteria-based cost-efficient routing and deployment of metadata packages in an on-demand environment
US20220006858A1 (en) Connection pool anomaly detection mechanism
US20160085789A1 (en) Error checking database records
US20210089649A1 (en) Machine learning anomaly detection mechanism
US11636067B2 (en) Performance measurement mechanism
US11928090B2 (en) Anomaly detection mechanism
FR3067832A1 (fr) Fourniture de services inter-groupements

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20191122

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4