FR3086424A1 - Traitement d'une sequence d'appels de fonction - Google Patents
Traitement d'une sequence d'appels de fonction Download PDFInfo
- Publication number
- FR3086424A1 FR3086424A1 FR1858499A FR1858499A FR3086424A1 FR 3086424 A1 FR3086424 A1 FR 3086424A1 FR 1858499 A FR1858499 A FR 1858499A FR 1858499 A FR1858499 A FR 1858499A FR 3086424 A1 FR3086424 A1 FR 3086424A1
- Authority
- FR
- France
- Prior art keywords
- processing
- sequence
- function calls
- cost
- function
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Complex Calculations (AREA)
- Mobile Radio Communication Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
Un procédé, un système et un programme d'ordinateur pour traiter une séquence d'entrées d'une pluralité d'appels de fonction sur au moins un processeur. Chaque appel de fonction de la pluralité des appels de fonction est associé à une probabilité d'annulation, la probabilité d'annulation d'un appel de fonction particulier indiquant une probabilité que le traitement de l'appel de fonction particulier cause une annulation du traitement de la séquence d'entrées. Chaque appel de fonction de la pluralité des appels de fonction est associé à un coût de traitement par appel de fonction sur la base d'un nombre d'instructions de processeur de l'appel de fonction respectif et de la probabilité d'annulation de l'appel de fonction respectif. Au moins la partie de la pluralité des appels de fonction selon la séquence d'entrées est traitée jusqu'à l'annulation du traitement de la séquence d'entrées par un appel de fonction particulier, ou que le dernier appel de fonction dans la séquence d'entrées soit traité. La probabilité d'annulation pour au moins la partie de la pluralité des appels de fonction est actualisée au cours du traitement de la pluralité des appels de fonction, en tenant compte du fait que le traitement de l'appel de fonction respectif a causé, ou non, une annulation. Le coût de traitement par appel de fonction pour au moins la partie de la pluralité des appels de fonction est actualisé au cours du traitement de la pluralité des appels de fonction. Une séquence d'entrées actualisée est déterminée en réarrangeant l'ordre des appels de fonction au moins sur la base coût de traitement des appels de fonction.
Description
TRAITEMENT D’UNE SEQUENCE D’APPELS DE FONCTION
DOMAINE TECHNIQUE [0001] La présente invention concerne de façon générale des systèmes et des procédés de traitement de données. En particulier, elle concerne le traitement d’une séquence d’une pluralité d’appels de fonction.
Contexte [0002] Lors de la réception d’une requête, des systèmes de traitement de données à grande échelle téléchargent des milliers d’enregistrements de données d’une ou de plusieurs bases de données, créent des millions ou des milliards de résultats intermédiaires à partir des enregistrements de données téléchargés et au final réduisent le nombre de résultats intermédiaires un nombre de résultats produits qui en général ne dépasse pas un ou deux chiffres. Par conséquent des résultats intermédiaires qui ne contribuent pas à l’ensemble des résultats produits sont invalidés au cours du traitement de données.
[0003] US 7,650,331 B1 concerne le traitement de données à grande échelle. Les données requises sont fournies en récupérant les données d’entrée à partir des fichiers de données. Des valeurs de données intermédiaires sont créées à partir des données d’entrée fournies par un utilisateur par des operations de mappage. Les valeurs de données intermédiaires sont ensuite réduites par des opérations telles que la fusion, la combinaison ou le filtrage des données intermédiaires afin d’obtenir des données produites qui sont ensuite fournies à l’utilisateur.
[0004] EP 2 869 257 AI effectue une configuration itérative de produits en commençant à partir d’un modèle de produit complexe qui est simplifié par la prédéfinition d’un ensemble spécifique de variables de champ à l’intérieur du modèle de produit et qui réduit ainsi la complexité du modèle de produit de façon itérative dans un procédé à deux étapes.
Resume [0005] Un premier aspect vise un procédé pour traiter une séquence d’entrées d’une pluralité d’appel de fonction sur au moins un processeur. Chaque appel de fonction de la pluralité des appels de fonction est associé à une probabilité d’annulation, la probabilité d’annulation d’un appel de fonction particulier indiquant une probabilité que le traitement de l’appel de fonction particulier entraîne une annulation du traitement de la séquence d’entrées. Chaque appel de fonction de la pluralité des appels de fonction est associé à un coût de traitement par appel de fonction sur la base d’un nombre d’instructions de processeur pour l’appel de fonction respectif 5 et/ou la probabilité d’annulation de l’appel de fonction respectif. Au moins un sous-ensemble de la pluralité des appels de fonction est traité selon la séquence d’entrées jusqu’à ce qu’un appel de fonction particulier annule le traitement de la séquence d’entrées. La probabilité d’annulation pour au moins le sous-ensemble de la pluralité des appels de fonction est actualisée au cours du traitement de la pluralité des appels de fonction, compte tenu du fait que le 10 traitement de 1 appel de fonction respectif a, ou non, causé une annulation. Le coût de traitement par appel de fonction pour au moins le sous-ensemble de la pluralité des appels de fonction est actualisé au cours du traitement de la pluralité des appels de fonction. Une séquence d’entrée actualisée est déterminée en réarrangeant l’ordre des appels de fonction au moins sur la base du coût de traitement des appels de fonction.
[0006] Un autre aspect concerne un système pour le traitement d’une séquence d’entrées de la pluralité des appels de fonction sur au moins un processeur. Le système comprend un dispositif de surveillance et un dispositif d’optimisation et au moins un processeur. Le système est agencé pour traiter au moins un sous-ensemble de la pluralité des appels de fonction selon la séquence 20 d’entrées, conformément au procédé du premier aspect.
[0007] Un autre aspect vise un programme d’ordinateur pour traiter une séquence d’entrées d’une pluralité d’appels de fonction sur au moins un processeur, incluant les instructions de code stockées sur un support de stockage lisible par ordinateur pour exécuter le procédé selon 25 le premier aspect.
BRÈVE DESCRIPTION DES DESSINS [0008] 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 illustre un système de traitement de données opérant sur des appels de fonction d’une séquence d’entrées.
La FIG. 2 montre une voie optimisée à travers les étapes de traitement pendant le traitement d’une requête.
La FIG. 3 montre un organigramme pour optimiser de façon adaptative les appels de fonction de la séquence d’entrées.
La FIG. 4 visualise l’optimisation sur la base des probabilités d’annulations indépendantes.
La FIG. 5 montre l’optimisation basée sur des probabilités d’annulations dépendantes.
La FIG. 6 illustre une réduction des appels de fonction durant l’optimisation.
La FIG. 7 présente des résultats de tests pour différentes stratégies d’optimisation.
La FIG. 8 visualise l’effet de l’application d’une séquence d’entrées aux différentes étapes du traitement de données.
La FIG. 9 montre un diagramme de séquence illustrant l’application des séquences d’entrées. La FIG. 10 est une vue schématique exemplaire de l’architecture d’une machine informatique.
DESCRIPTION DÉTAILLÉE [0009] Une vue globale d’un système exemplaire de traitement de données 100 pour traiter une séquence d entrées 106 d appels de fonction 107 est montrée dans la FIG. L Le système de traitement de données 100 inclut une ou plusieurs machines informatiques 101 utilisant un ou plusieurs processeurs 102 pour traiter des requêtes 103 reçues des clients 104. Un client 104 est une machine et/ou une routine logicielle envoyant une requête 103 au système de traitement de données 100 afin d’obtenir un ensemble de résultats produits 105.
[0010] En réponse à la réception d’une requête 103, par ex. une requête de base de données, au système de traitement de données 100, un processus incrémental peut être appliqué pour générer des résultats produits 105 qui sont renvoyés au client 104 afin de répondre à la requête 103. Par exemple, au cours d'un premier stade, des enregistrements de données sont téléchargés d’une ou de plusieurs bases de données du système de traitement de données 100. Le téléchargement des enregistrements de données peut déjà inclure un processus de filtrage en invalidant des enregistrements de données. Au cours d’un deuxième stade, un ensemble de résultats intermédiaires est créé basé sur les enregistrements de données téléchargés par une ou plusieurs opérations de calcul connues telles que la combinaison, l’agrégation ou d’autres opérations. Les résultats intermédiaires sont filtrés, par ex. par une autre série d’invalidations. Au cours d’un troisième stade, les résultats produits 105 sont produits sur la base des résultats intermédiaires. Une autre tournée de filtrage/invalidation de résultats produits inapplicables peut être appliquée aux résultats produits afin de déterminer des résultats produits finaux 105 qui doivent être renvoyés au client 104.
[0011] Les invalidations au cours des trois stades exemplaires de traitement peuvent être implémentées par une pluralité d’appels de fonction 107. Les appels de fonction 107 d’une séquence d’entrées 106 des appels de fonction 107 sont appliqués aux enregistrements de données téléchargés au cours du premier stade, aux résultats intermédiaires au cours du deuxième stade et/ou au cours du troisième stade lors de la réduction d’un ensemble de résultats produits pour obtenir un ensemble de résultats produits finaux 105 devant être renvoyés au client 104. Les appels de fonction 10/ vérifient si les enregistrements de données téléchargés, les résultats intermédiaires et/ou les résultats produits sont invalides.
[0012] Par exemple, dans un système de base de données gérant une architecture cloud avec une centaine de serveurs, une requête 103 est reçue afin de fournir un ensemble approprié de serveurs (résultat produit requis) pour traiter une tâche distribuée. La requête 103 inclut des exigences qui doivent être satisfaites par l’ensemble des serveurs afin de traiter les tâches distribuées, c.-à-d. l’information technique concernant les serveurs, par ex. la disponibilité, les ressources libres et la capacité de traitement. Le système de traitement de données 100 traite cette requête 103 au cours des étapes incrémentales, comme expliqué ci-dessus.
[0013] Au cours du premier stade de téléchargement des enregistrements de base de données, le système de traitement de données 100 télécharge les informations relatives aux serveurs appropriés au regard des exigences. Sur la base des informations de serveur téléchargées, une vérification de la disponibilité du serveur est faite en traitant un appel de fonction de disponibilité. Cet appel de fonction peut, par exemple, évaluer une affectation variable dans le système de traitement de données 100 pour un serveur indiquant si le serveur est disponible, ou non. L’appel de fonction peut aussi impliquer un traitement plus complexe, par ex. en démarrant des sous-appels de fonction afin de vérifier la disponibilité du serveur ou en envoyant un signal au serveur afin d évaluer si le serveur respectif est actuellement disponible. Ensuite, un appel de fonction d’utilisation vérifie l’utilisation actuelle des serveurs pour déterminer les ressources de traitement libres en fonction des exigences de la requête 103. De nouveau cet appel de fonction peut être une simple vérification de variable ou un appel de fonction plus complexe.
Enfin, un appel de fonction de capacité vérifie la capacité de traitement du serveur. Les trois appels de fonction 107 sont appliqués dans cette séquence (- séquence d’entrées 106) à un quelconque des serveurs donné par les informations récupérées du serveur. Chacun des serveurs peut être invalidé par un quelconque des trois appels de fonction 107. Tous les serveurs qui passent avec succès les trois appels de fonction 107, c.-à-d. qui ne sont pas invalidés par un des appels de fonction 107, satisfont les exigences de la requête 103 en termes de disponibilité, d’utilisation et de capacité de traitement. Ces serveurs sont envisagés pour un traitement ultérieur comme étant un enregistrement de données téléchargé valide du premier stade de traitement. Par conséquent, une séquence d’une pluralité des trois appels de fonction 107 est appliquée aux informations de serveur récupérées de la base de données afin d’invalider les serveurs qui ne répondent pas aux exigences de la requête 103. Ces appels de fonction 107 peuvent être d’une complexité différente.
[0012] Au cours du deuxieme stade de traitement de la requête 103, des résultats intermédiaires sont créés par une ou plusieurs opérations basées sur les enregistrements de données téléchargés valides. Dans l’exemple, des combinaisons de serveurs précédemment téléchargées et vérifiées comme étant valides par la première séquence 106 d’appels de fonction 107 sont permutées afin de trouver des combinaisons appropriées de serveurs. Une combinaison de serveurs constitue un résultat intermédiaire. Ces résultats intermédiaires sont à nouveau filtrés/invalidés, par ex. par une vérification des ressources libres globales de la combinaison de serveurs, ainsi que pour leur capacité de traitement globale. Ces vérifications sont effectuées par une deuxième pluralité d’appels de fonction 107 invalidant les combinaisons, c'est-à-dire, les résultats intermédiaires qui ne satisfont pas ou ne répondent pas suffisamment aux exigences de la requête 103 et pour cette raison ne doivent pas être inclus dans l’ensemble des résultats intermédiaires exhibant toutes les combinaisons de serveurs qui contribuent aux exigences de la requête 103. II faut noter que la deuxième séquence 106 d’appels de fonction 107 vérifie ia validité des résultats intermédiaires, mais elle est différente de la séquence d’opérations appliquées précédemment pour créer ces résultats intermédiaires (générant les combinaisons de serveurs, comme mentionné ci-dessus). Par conséquent, la vérification de la validité des résultats intermédiaires et d’élimination des résultats intermédiaires invalides réduit potentiellement le nombre de résultats intermédiaires subséquents qui sont créés. Les résultats produits subséquents sont ensuite calculés seulement sur la base des résultats intermédiaires valides après filtrage/invalidation.
[0013] Finalement, au cours du troisième stade de traitement, l’ensemble des résultats intermédiaires valides peut par ailleurs être traité pour obtenir des résultats produits. Par exemple, les combinaisons restantes de serveurs données par les résultats intermédiaires valides sont apportées dans des ordres particuliers de serveurs pour répondre aux exigences techniques identifiées dans la requête 103. Au cours de ce troisième stade, les résultats produits par des calculs d’ordre correspondants sont à nouveau filtrés/validés, par ex. par des vérifications implémentées par une troisième séquence de pluralité d’appels de fonction 107, prouvant si les combinaisons des serveurs ordonnés satisfont les exigences techniques identifiées par la requête 103. L application de la troisième pluralité d’appels de fonction 107 réduit l’ensemble de résultats produits à un nombre de résultats produits valides 105 devant être renvoyés au client 104, par conséquent un ensemble final de résultats produits 105. À titre d’exemple, pour invalider les résultats produits, une ou plusieurs des combinaisons de serveurs sont inapplicables parce que tous les serveurs sont situés au même endroit et pour cette raison ils ne contribuent pas aux contraintes de redondance géographique dans des environnements informatiques distribués.
[0014] Il faut noter que le type d’appels de fonction 107, par ex. s’ils vérifient les serveurs d’un système distribué ou des millions d’enregistrements de données téléchargés et des résultats intermédiaires dans un environnement de mégadonnées, n’est pas important pour les méthodologies décrites dans les présentes. Au contraire, les méthodologies décrites dans les présentes sont basées sur les caractéristiques techniques des appels de fonction 107 eux-mêmes, par ex. la fréquence à laquelle un appel de fonction invalide des données et la complexité de l’appel de fonction résultant en une utilisation respective des ressources de traitement en termes de cycle d’horloge par instruction (CPI).
[0015] En général, de telles séquences d’appels de fonction 107 pour invalider des données sont appliquées à un ou plusieurs stades de traitement, de sorte que la séquence est dans un ordre donné, fixé ou prédéterminé. Les présents mécanismes fournissent des séquences optimisées de façon adaptative d’appels de fonction 107. Une séquence d’appels de fonction 107 est entrée dans un processus d’optimisation, lorsqu’elle est appliquée dans le but d’invalider des données chargées ou des résultats intermédiaires ou des résultats produits. Les appels de fonction 107 sont traités selon un ordre dans une séquence d’entrées 106 par un ou plusieurs processeurs 102. La séquence d’entrées 106 est un ensemble ordonné d’appels de fonction 107 qui est appliquée à des résultats produits ou à des résultats intermédiaires d’enregistrements particuhers de données chargés. Par exemple, les trois appels de fonction 107 mentionnés ci-dessus, l’appel de fonction de disponibilité, l’appel de fonction d’utilisation, et 1 appel de fonction de capacité de traitement dans cet ordre particulier sont une séquence d’entrées particulières 106 pour le processus d’optimisation. L’application de séquences d’appels de fonction optimisées de façon adaptative 107 à différents stades du traitement d’une requête 103 fournit une voie optimisée 200 à travers les différents stades du traitement en impactant le coût de traitement du processus dans son intégralité comme démontré dans la FIG. 2. Pour invalider un résultat intermédiaire, la séquence d’entrées 106 est appliquée aux résultats intermédiaires créés 202 incluant les appels de fonction 107 par ex. pour prouver une erreur dans le résultat intermédiaire, pour vérifier des affectations de variables différentes ou pour calculer et évaluer une vérification de somme totale. Lorsque le résultat intermédiaire est invalidé par un appel de fonction 107 alors que le résultat intermédiaire est traité selon la séquence d’entrées 106 le traitement ultérieur de la séquence d’entrées 106 est annulé puisque le résultat intermédiaire n’est pas qualifié pour être traité ultérieurement. Une pluralité d’appels de fonction 107, selon une séquence d’entrées 106, peut aussi être appliquée pour invalider des enregistrements de données au stade de chargement des données 201, au stade de création de résultats intermédiaires ou au stade 203 pour obtenir un ensemble de résultats produits finaux 105 ou à tout autre stade approprié pour traiter les données. Les appels de fonction 107 traités conformément à la séquence d’entrées 106 peuvent cependant être différents à des stades différents afin de justifier des critères d’invalidation spécifiques. La voie optimisée 200 à travers les différents stades du traitement de la requête 103 est principalement fournie par deux effets. Le premier effet est que les données chargées et/ou les résultats intermédiaires invalidés à un stade précoce dans le traitement ne sont pas pris en compte dans les étapes ultérieures du traitement. Par conséquent, le nombre d’opérations, par ex. pour créer des résultats intermédiaires, ainsi que le nombre de vérifications d’invalidations par une séquence d’appels de fonction 107 est réduit. Le second effet est que les séquences d’appels de fonction 107 ellesmêmes appliquées ne sont pas fixes, mais sont optimisées de façon adaptative afin d’échouer rapidement et ainsi utiliser un coût de traitement minimal pendant l’invalidation.
[0016] Vu que dans les systèmes de traitement de données à grande échelle 100, une requête 103 génère potentiellement un ensemble de millions ou de milliards, par ex. 4 milliards de résultats intermédiaires 204 à partir de par ex. des milliers d’enregistrements de données chargés 205 qui sont par la suite réduits à un ensemble de résultats produits finaux à deux chiffres 206, par ex. 49, le coût de traitement pour invalider les enregistrements de données, les résultats intermédiaires et les résultats produits est proportionnellement coûteux. En outre, le grand nombre de données et du résultat intermédiaires chargés consomme un volume important de ressources de stockage qui est aussi réduit de façon substantielle en invalidant les données et les résultats intermédiaires chargés à un stade précoce dans le traitement de données.
[0017] Deux facteurs principaux influencent le coût pour déterminer si un enregistrement de données ou un résultat intermédiaire est invalidé par un appel de fonction 107, notamment le coût de calcul du traitement de l’appel de fonction sur un processeur 102 et une probabilité que 1 appel de fonction invalide Γ enregistrement de données, ou un résultat intermédiaire sur la base d’un traitement antérieur de l’appel de fonction.
[0018] Le coût de calcul du traitement d’un appel de fonction est mesuré par ex, par la CPU (l’unité centrale de traitement) le temps ou CPI (cycle d’horloge par instruction). Puisque les appels de fonction 107 peuvent être d’une complexité différente, le traitement des coûts de calcul des appels de fonction 107 diffère d’un appel de fonction à l’autre. Par exemple, un appel de fonction 107 vérifiant une affectation variable peut ne pas utiliser beaucoup de temps de CPU sur ledit un ou plusieurs processeurs 102. Un appel de fonction 107 déterminant une vérification de somme d’un ensemble de variables differentes et évaluant ensuite la vérification de somme en termes de validité d’un résultat intermédiaire, peut commencer un nombre de sous-appels devant être également traités avant que l’appel de fonction 107 unisse tous les sousappels en un résultat de vérification et soit complètement traité. Un tel appel de fonction imbriqué est plus coûteux en termes de calcul par rapport au temps de CPU que, par ex. une vérification d’affectation de variables. Le temps de CPU d’un appel de fonction 107 est dépendant du nombre d’instructions que l’appel de fonction 107 entraîne sur le processeur 102, le cycle d’horloge de la CPU par instruction et le nombre de secondes par cycle d’horloge. Mesurer le coût de traitement par CPI présente l’avantage d’une mesure indépendante au niveau des différents processeurs 102, puisque le nombre de secondes par cycle d’horloge est spécifique au processeur. Le temps de CPU ainsi que le CPI sont mesurés par des dispositifs de surveillance de système conventionnel ou des outils de surveillance tels que par ex. callgrind®.
[0019] La probabilité d’annulation est une mesure statistique basée sur le résultat d’itération de traitement antérieur d’un appel de fonction 107. La probabilité d’annulation dépend des caractéristiques de l’appel de fonction 107 lui-même et aussi des caractéristiques des données devant être traitées sur le système de traitement de données 100. Les appels de fonction 107 peuvent être prédéfinis manuellement ou automatiquement sur des critères prouvés pour décider si un enregistrement de données et/ou un résultat intermédiaire sont invalides. Un 5 enregistrement de données et/un résultat intermédiaire est valide lorsque chaque appel de fonction 107 traité conformément à une séquence d’entrées 106 a prouvé que l’enregistrement de données et/ou le résultat intermédiaire doit être valide au vu des critères vérifiés. Un enregistrement de données et/ou un résultat intermédiaire sont invalides lorsqu’un appel de fonction 107 traité conformément à une séquence d'entrées 106 a prouvé que l’enregistrement 10 de données/résultats intermédiaires doit être invalide au vu des critères vérifiés. En réponse à cette invalidation, aucun autre appel de fonction 107 ne doit être traité pour cet enregistrement de données et/ou ce résultat intermédiaire puisque l’enregistrement de données et/ou le résultat intermédiaire sont exclus de tout traitement ultérieur. Par conséquent, la fréquence avec laquelle un appel de fonction 107 invalide ou n’invalide pas les enregistrements de données, les résultats 15 intermédiaires et/ou les résultats produits, lorsque l’appel de fonction 107 est traité, peut être saisie dans des statistiques fournissant une probabilité d’annulation pour l’appel de fonction. Par ailleurs, les statistiques peuvent aussi fournir une probabilité d’annulation qui dépend de la probabilité d’annulation des appels de fonction 107 ayant été traités précédemment selon une séquence d’entrées 106. Par conséquent, différents appels de fonction 107 développent une 20 probabilité d annulation indépendante et/ou développent une probabilité d’annulation par rapport aux appels de fonction 107 qui ont été précédemment traités selon une séquence d’entrées 106. En outre, les appels de fonction 107 peuvent développer un changement dans leur probabilité d’annulation (indépendante ou dépendante) lorsque les caractéristiques des enregistrements de données et/ou les résultats intermédiaires changent dans le temps, car il est 25 habituel pour les systèmes de traitement de données à large échelle de subir des évolutions et des développements (par ex. des mises à jour de fonctionnalités, des changements de contenus de la base de données) dans le temps.
[0020] Dans certains modes de réalisation, une séquence d’une pluralité d’appels de 30 fonction 107 est exécutée par au moins un processeur 102. La pluralité des appels de fonction 107 est traitée conformément à une séquence d’entrées 106. Un appel de fonction 107 peut vérifier si un enregistrement de données chargé à partir d’une base de données et/ou un résultat intermédiaire créé en traitant l’enregistrement de données est invalide. Cependant, les appels de fonction 107 étant traités selon la séquence d’entrées 106 ne sont pas restreints à cette application.
[0021] Chaque appel de fonction 107 de la pluralité des appels de fonction 107est associé à une probabilité d’annulation. La probabilité d’annulation d’un appel de fonction particulier 107 indique une probabilité que le traitement de l’appel de fonction 107 particulier entraîne une annulation du traitement de la séquence d’entrées 106 comme expliqué ci-dessus. L’annulation du traitement ultérieur de la séquence d’entrées 106 est effectuée lorsque l’appel de fonction 107 invalide un enregistrement de données et/ou un résultat intermédiaire durant le traitement.
[0022] Chaque appel de fonction 107 de la pluralité des appels de fonction 107 est aussi associé à un coût de traitement par appel de fonction 107 sur la base d’un nombre d’instructions de processeur de l’appel de fonction respectif et de la probabilité d’annulation de i’appel de fonction respectif 107. Le coût de traitement d’un appel de fonction peut être obtenu d’une quelconque manière pertinente sur la base du coût de calcul déterminé, de la probabilité d’annulation, ou les deux. La probabilité d’annulation pour au moins un sous-ensemble de la pluralité des appels de fonction 107 est actualisée durant le traitement de la pluralité des appels de fonction 107 jusqu’à ce qu’un appel de fonction particulier 107 annule le traitement de la séquence d’entrées 106 ou que le dernier appel de fonction 107 dans la séquence d’entrées 106 soit traité. Le coût de traitement pour au moins la partie de la pluralité des appels de fonction 107 est mis à jour durant le traitement de la pluralité des appels de fonction 107 jusqu’à l’annulation du traitement de la séquence d’entrées 106 par un appel de fonction particulier 107, ou le traitement du dernier appel de fonction 107 dans la séquence d’entrées 106.
[0023] Une séquence d’entrées actualisée est déterminée en réarrangeant l’ordre des appels de fonction 107 au moins sur la base coût de traitement des appels de fonction 107. Par conséquent, pour optimiser le coût de traitement, les appels de fonction 107 étant affectés avec une forte probabilité d’annulation en combinaison avec un coût de traitement peu élevé peuvent être placés au début de la séquence d’entrées, de sorte que la prochaine itération de la séquence des fonctions entrées soit traitée de façon optimisée, selon les mesures actuelles du coût de traitement. Le traitement des appels de fonction 107 conformément à la séquence d’entrées actualisée 106 est itéré aux 307 sur le prochain enregistrement de données, résultat intermédiaire et/ou résultat produit invalidant ainsi l’enregistrement de données, le résultat intermédiaire et/ou le résultat produit et optimisant simultanément de façon adaptative le traitement des appels de fonction 107 selon leur ordre actualisé dans la séquence d’entrées 106.
[0024] Dans des modes de réalisation exemplaires, le système de traitement de données 100 illustré dans la FIG.l applique une pluralité d’appels de fonction 107 selon une séquence d’entrées 106 pour calculer à partir d’une requête reçue 103 un ensemble de résultats produits 105 devant être renvoyés un client 104. Par souci de simplicité, la pluralité des appels de fonction 107, traités conformément à la séquence d’entrées 106, est appliquée à un ensemble de résultats intermédiaires après le chargement des enregistrements de données à partir des tableaux d’une ou de plusieurs bases de données et après la création de résultats intermédiaires. Néanmoins, la séquence d’entrées 106 peut aussi être appliquée pour invalider les enregistrements de données dans le processus de chargement des enregistrements de données à partir de la base de données et/ou de la création de résultats intermédiaires pour déterminer s’il faut inclure les résultats intermédiaires créés dans un ensemble de résultats intermédiaires pour un traitement ultérieur. Ceci peut aussi être appliqué pour invalider des résultats produits qui sont inapplicables. La séquence d’entrée 106 est appliquée aux résultats intermédiaires afin de vérifier si un résultat intermédiaire particulier est invalide et doit ainsi être retiré de l’ensemble des résultats intermédiaires pour obtenir les résultats produits 105.
[0025] Le premier appel de fonction 107 est traité conformément à la séquence d’entrées 106, comme illustré au 300 dans la FIG. 3. Par exemple, le premier appel de fonction 107, conformément à la séquence d’entrées 106, est une vérification de validité d’une affectation d’une variable dans le résultat intermédiaire qui est effectuée. Pendant le traitement, une probabilité d’annulation de l’appel de fonction 107 est actualisée au 301. Cette probabilité d'annulation est, par exemple, mise à jour par un dispositif de surveillance 109 dans la FIG. 1 qui a déjà effectué un suivi d’une annulation précédente et des événements passés de l’appel de fonction 107 et à partir de là actualise de façon continue la probabilité d’annulation au 301 après chaque itération du traitement de l’appel de fonction 107. De plus, le coût de calcul de l’appel de fonction 107 est aussi continuellement actualisé par le dispositif de surveillance 109 à chaque itération de traitement de l’appel de fonction 107. Le coût de traitement de l’appel de fonction 107 est ensuite également actualisé au 302 sur la base de la probabilité actualisée d’annulation au 301 et du coût de calcul actualisé.
[0026] Si l’appel de fonction 107 invalide le résultat intermédiaire actuellement vérifié au 303 et par conséquent annule le traitement des appels de fonction successeurs 107 selon la séquence d’entrées 106, ou si le dernier appel de fonction 107 conformément à la séquence d’entrées 106 est atteint au 303, plus aucun autre appel de fonction 107 dans cette itération n’est traité. Si le traitement des appels de fonction 107 selon la séquence d’entrées 106 n’est pas annulé ou terminé, le traitement continue au 304 avec le traitement 300 du prochain appel de fonction 107.
[0027] Si aucun autre appel de fonction 107 n’est traité parce qu’une séquence d’entrées 106 a été annulée ou traitée complètement, l’ordre de traitement des appels de fonction 107 10 conformément à la séquence d’entrées 106 est réarrangé au 306. Le rearrangement est traité par un dispositif d’optimisation 108 montrée dans la FIG. 1 en utilisant le coût de traitement pour chacun des appels de fonction 107 fournis par le dispositif de surveillance 109. Il faut noter que le coût de traitement d’au moins un sous-ensemble des appels de fonction 107 (ceux qui ont été traités dans l’itération actuelle de la séquence d’entrées 106) a été actualisé au 302. Lorsque le 15 traitement d’un appel de fonction 107 donne lieu à une annulation du traitement pour d’autres appels de fonction 107 selon la séquence d’entrées 106, la probabilité d’annulation, le coût de calcul et le coût de traitement des autres appels de fonction 107 dans la séquence d’entrées 106 qui ne sont pas traités en raison de l’annulation ne sont pas actualisés. Par conséquent tous les appels de fonction 107 devant être traités selon l’ordre de la séquence d’entrées 106 sont pris 20 en compte par le réarrangement 306 par rapport à leur coût de traitement, que leur coût de traitement ait été actualisé, ou non. Une séquence de coût de traitement peut être déterminée aux 305 pour servir de mesure dans le cadre d’une comparaison entre des ordres d’appels de fonction 107 différents dans une séquence d’entrées 106 qui est élaborée de façon plus détaillée ci-dessous.
[0028] Le réarrangement 306 des appels de fonction 107 dans l’ordre d’une séquence d’entrées 106 donne lieu à une séquence actualisée qui est ensuite fournie au 207 par le dispositif d'optimisation 108 au système de traitement de données 100 afin d’actualiser la séquence d’entrées actuelle 106. Par conséquent lors de la prochaine itération de traitement des 30 appels de fonction 107 selon la séquence d’entrées 106, les appels de fonction 107 sont traités dans l’ordre de la séquence d’entrées actualisée 106 et ainsi dans un ordre optimisé. De plus, l'ordre de la séquence d’entrées 106 est optimisé à chaque itération, c.-à-d. sur chaque enregistrement de données et/ou résultat intermédiaire au vu des probabilités actuelles d’annulation, de coût de calcul et donc de coût de traitement.
[0029] Par contraste avec US 7,650,331 qui utilise un ordre d’opération configuré, mais fixe, pour obtenir un ensemble de résultats produits à partir des résultats intermédiaires (par ex. par filtrage), la méthodologie divulguée dans les présentes utilise une approche adaptative pour invalider des résultats intermédiaires et des résultats produits afin d’obtenir un ensemble final de résultats produits 105 devant être renvoyés au client 104. Ainsi que déjà signalé, l’ordre de la séquence d’entrées 106 est optimisé de façon à ce que la séquence d’entrées actualisée 106 soit ordonnée pour minimiser le coût de traitement, par ex. en plaçant les appels de fonction 107 ayant une forte probabilité d’annulation et un coût de traitement peu élevé au début de la séquence d’entrées actualisée 106. Par conséquent, les résultats intermédiaires calculés en réponse à la réception d’une requête 103 au système de traitement de données 100, sont invalidés en appliquant une séquence d’entrées optimisée de façon adaptative 106 résultant en une invalidation plus rapide avec un coût de traitement peu élevé où les résultats intermédiaires et les résultats produits sont réduits à un ensemble de résultats produits finaux 105 devant être renvoyé au client 104. Ceci permet de réduire un ensemble potentiel de milliards de résultats intermédiaires à un nombre de résultats produits finaux 105 un nombre par exemple d’un à deux chiffres avec un coût de traitement minimum. Lorsque des enregistrements de données sont invalidés au stade de chargement des données par l’application d’une séquence d’entrées optimisée de façon adaptative 106 et/ou par l’application d’une autre séquence d’entrées optimisée de façon adaptative 106 au stade de création de résultats intermédiaires et en évitant d’inclure des résultats intermédiaires invalides dans un ensemble de résultats intermédiaires pour être traités ultérieurement, ceci crée un effet de réduction synergique qui se propage.
[0030] Lorsque des enregistrements de données chargés sont invalidés, ces enregistrements de données sont exclus d'un traitement ultérieur pour créer des résultats intermédiaires. Par conséquent, l’invalidation d’enregistrements de données à ce stade précoce réduit les ressources de stockage pour des enregistrements de données et en plus propage la réduction au stade suivant où moins de résultats intermédiaires sont créés en économisant également des ressources de stockage. De plus, ceci économise un temps de traitement pour les résultats intermédiaires qui ne sont pas créés. Par ailleurs, lorsque des résultats intermédiaires sont invalidés après la création pour éviter des résultats intermédiaires invalides dans l’ensemble de résultats intermédiaires devant être traités ultérieurement, cette réduction se propage au stade où Γensemble de résultats intermédiaires est réduit afin de créer un ensemble de résultats produits. Par conséquent, le nombre de résultats intermédiaires dans l’ensemble des résultats intermédiaires qui sont invalidés, dans le but d’obtenir un ensemble de résultats produits, a été réduit auparavant.
[0031] Dans des modes de réalisation exemplaires, le système de traitement de données 100 est élargi par un système parallèle de traitement de données, qui traite l’actualisation du coût de traitement 302, particulièrement la probabilité d’annulation, parallèlement au système de traitement de données 100. Par conséquent, si un appel de fonction respectif 107 annule le traitement des appels de fonction subséquents 107 dans la séquence d’entrées 106, le système de traitement de données parallèle poursuit le traitement au 304 afin de déterminer également une actualisation de la probabilité d’annulation 301 des appels de fonction subséquents 107. Autrement, la probabilité d’annulation des appels de fonction 107 n’est pas actualisée, reste inchangée jusqu’au prochain traitement de l’appel de fonction respectif faisant ensuite l’objet d’une affectation de probabilité d’annulation non actualisée au cours du dernier traitement. Dans d’autres modes de réalisation exemplaires, les probabilités d’annulation et les coûts de traitement sont généralement fournis par un système parallèle qui détermine les probabilités d’annulation et les coûts de traitement hors-ligne.
[0032] Dans des scénarios de tests, la consommation de ressources CPU mesurée par l’itération complète des requêtes de traitement, c.-à-d. de la réception des requêtes 103 jusqu’à l’apport de résultats finaux produits 105 a été réduite de 10 % à 50 %. De plus, il a été reconnu que la fiabilité du système de traitement de données 100 a augmenté en réduisant le nombre d expirations dans le traitement des résultats intermédiaires parce que les procédés et le système décrit dans les présentes évitent d’inclure des résultats intermédiaires invalides dans l’ensemble de résultats intermédiaires ce qui autrement entraînerait des erreurs ou des retards tout en réduisant l’ensemble des résultats produits à un ensemble de résultats produits finaux 105.
[0033] Par comparaison avec le processus de réduction d’US 7,650,331 qui réduit le nombre de résultats intermédiaires par ex. en filtrant seulement au stade de l’obtention des résultats produits finaux, les méthodologies décrites dans les présentes invalident les enregistrements de données chargés, les résultats intermédiaires et/'les résultats produits à différents stades du traitement de la requête afin de trouver une voie de traitement optimisée 200, réduisant de façon importante le coût de traitement puisque les enregistrements de données invalides et/ou les résultats intermédiaires sont invalidés à un stade précoce du traitement de la requête 103. Les enregistrements de données invalidés et les résultats intermédiaires ne sont plus pris en compte pour des opérations subséquentes et des vérifications de validité. De plus, des ressources de stockage sont aussi économisées puisque les enregistrements de données invalidés et/ou les résultats intermédiaires n’ont pas besoin d’être conservés dans le stockage pour un traitement ultérieur, mais sont éliminés. Par ailleurs, par comparaison avec US 7,650,331 où le processus de réduction est configuré dans un ordre spécifique ou n’est pas limité à un ordre particulier, les méthodologies décrites dans les présentes utilisent des séquences d’entrées 106 pour traiter les appels de fonction 107 dans un ordre optimisé de façon adaptative afin d’invalider des enregistrements de données et/ou des résultats intermédiaires chargés durant le traitement de la requête 103 pour obtenir des résultats produits 105. L’invalidation des enregistrements de données, des résultats intermédiaires et/ou des résultats produits est elle-même optimisée de façon adaptative par l’identification d’un ordre des appels de fonction 107 qui sont est mis en œuvre afin de décider d’une invalidation des enregistrements de données, des résultats intermédiaires et/ou des résultats produits, sur la base de leur coût de traitement et de leur probabilité d’annulation respectifs réduisant ainsi le coût de traitement à un minimum local ou global en fonction de la stratégie d’optimisation. Plutôt que d’utiliser un ordre arbitraire ou prédéfini fixe ainsi que signalé dans US 7,650,331, l’ordre des appels de fonction 107 dans la séquence d’entrées 106 est optimisé de façon adaptative dans un processus itératif qui tient compte de façon continue du coût de calcul actualisé utilisé sur les processeurs 102 du système de traitement de données 100 et une probabilité d’annulation actualisée de façon continue 301 des appels de fonction 107. Par conséquent, l’optimisation s’adapte à l’environnement changeant d’un système de traitement de données évolutif 100.
[0034] Par ailleurs, par comparaison avec EP 2 869 257 Al, le fait de calculer un modèle de données fixe pour réduire les options de choix d’un utilisateur, les méthodologies décrites dans les présentes optimisent de façon adaptative le traitement des appels de fonction 107 selon une séquence d’entrées 106 pour une invalidation rapide des données au cours du traitement des données en tenant compte des mesures de coût de calcul et de probabilités d’annulation des appels de fonction 107.
[0035] Dans d’autres modes de réalisation, un coût de traitement d’une séquence est donné par la somme du coût de traitement par appel de fonction jusqu’à ce que le traitement de la séquence soit annulé et que le coût de traitement de la séquence et de la séquence actualisée soit inférieur au coût du traitement de la séquence d’entrées 106.
[0036] Dans des modes de réalisation exemplaires, le dispositif d’optimisation 108 de la FIG. 1 détermine l’ordre optimal pour le réarrangement 306 de la FIG. 3 en évaluant toutes les permutations possibles pour un ordre afin de traiter les appels de fonction 107 selon la séquence d’entrées 106. Pour chaque permutation de l’ordre de traitement des appels de fonction 107 dans la séquence d’entrées 106, un coût de traitement de séquence est calculé au 305 en additionnant le coût de traitement pour chaque appel de fonction 107 dans la séquence permutée jusqu’à ce qu’un appel de fonction 107annuIe le traitement ultérieur des appels de fonction 107 dans la séquence permutée, par ex. parce que l’appel de fonction 107 résulte en une invalidation du résultat intermédiaire. La permutation suivante est ensuite traitée dans l’ordre de traitement des appels de fonction 107 selon la séquence d’entrées 106 jusqu’à ce que le coût de traitement de séquence soit déterminé au 305 pour chaque permutation. L’ordre de traitement des appels de fonction 107 dans la permutation avec un coût de traitement de séquence minimal est ensuite appliqué pour réarranger au 306 les appels de fonction 107 dans la séquence d’entrées 106 afin de fournir la séquence d’entrées actualisée. La séquence d’entrées actualisée peut être utilisée au 307 pour la prochaine itération sur le prochain enregistrement de données, résultat intermédiaire ou résultat produit devant être invalidé.
[0037] En évaluant toutes les permutations possibles de l’ordre de traitement des appels de fonction 107 selon la séquence d’entrées 106 et en choisissant l’ordre avec un coût minimal de traitement de séquence pour le rearrangement 306 des appels de fonction 107, un optimum total pour le coût de traitement de la pluralité des appels de fonction 107 est déterminé, et avec lui l’invalidation des enregistrements de données, des résultats intermédiaires et/des résultats produits est optimisé par rapport à la probabilité d’annulation et au coût de calcul sur lequel est basé le coût de traitement des appels de fonction 107 et qui s’applique ainsi également au coût de traitement de séquence minimal.
[0038] Dans certains modes de réalisation, le traitement d’une pluralité d’appels de fonction 107 conformément à une séquence d’entrées 106 inclut par ailleurs de déterminer le coût de traitement d’un appel de fonction et la probabilité d’annulation pour toute une pluralité d’itérations de traitement de façon indépendante.
[0039] Le coût de traitement incluant la probabilité d’annulation est généralement déterminé en supposant que le coût de traitement incluant une probabilité d’annulation pour traiter un appel de fonction 107 est indépendant du coût de traitement incluant d’autres probabilités d annulation des appels de fonction 107 traités précédemment. Par conséquent, la probabilité de mise à jour et avec celle-ci le coût de traitement sont déterminés au 302 pour chaque appel de fonction 107, séparément. Par exemple, comme déjà signalé, le dispositif de surveillance 109 actualise la probabilité d’annulation 301 d’un appel de fonction 107 par rapport au résultat de l’itération actuelle de traitement de l’appel de fonction 107. Par ex., dans le cas où l’appel de fonction 107 a une probabilité d’annulation de 0,5 en raison de deux itérations de traitement de l’appel de fonction précédemment, résultant en une annulation (1) et un succès (0), ce qui donne (0+1)/2 = 0,5. Maintenant si l’itération actuelle de traitement de l’appel de fonction 107 annule le traitement ultérieur d’appels de fonction subséquents 107 conformément à la séquence d’entrées 106, la probabilité l’annulation est actualisée au 301 avec l’événement d’annulation (1) ce qui donne (0 +1 +1)/3 = 0,67. Cependant la détermination d’une probabilité d’annulation indépendante pour un appel de fonction 107 n’est pas restreinte à cette manière de l’obtenir. Puisque le coût de traitement pour l’appel de fonction 107 est basé sur une probabilité d annulation de ï appel de fonction 107 ainsi que sur un cout de calcul utilise par l’appel de fonction 107 sur un processeur 102, le coût de traitement est affecté par l’actualisation de la probabilité d’annulation 301, ainsi que par l’actualisation du coût de calcul.
[0040] Dans des modes de réalisation exemplaires, un traitement de coût indépendant a d’un appel de fonction 107 en supposant que la probabilité de l'appel de fonction 107 est déterminé indépendamment des probabilités d’annulation des appels de fonction 107 traités précédemment selon la séquence d’entrées 106, par :
(Equ. 1) dans lequel Cdet représente le coût déterministe indiqué par une mesure physique, par ex. la mesure de temps de CPU ou de CPI, cs!o représente le coût stochastique indiqué par (1- P (ko)) + s/2, où P(ko) et la probabilité d’annulation déterminée de façon statistique d’un appel de fonction 107 et 5 est la déviation standard. Les paramètres a etβ sont des facteurs de pondération qui sont utilisés pour contrôler le foyer d’influence de la fraction déterministe et stochastique du coût de traitement dans toute direction. Par exemple, si seulement le coût de calcul en matière de temps de CPU est pris en compte, a est fixé à I alors queβ est fixé à 0. Où seule la probabilité d’annulation est prise en compte a est fixé à 0 alors que β est fixé à L Pour tenir compte des deux fractions, toute pondération des deux fractions peut être utilisée pour contrôler l’influence des fractions sur le coût de traitement.
[0041] Dans des modes de réalisation exemplaires illustrés dans la FIG. 4. trois appels de fonction 107 fi, fa et fi traités selon une séquence d’entrées 106 sont optimisés en couvrant une structure arborescente 400 incluant toutes les permutations d’un ordre des trois appels de fonction 107 dans la séquence d entrées 106. Chaque nœud représentant un appel de fonction 107 a un coût de traitement 401 a, C2 et c? pour l’appel de fonction respectif 107 conformément à a de l’Equ. 1 incluant une probabilité d’annulation déterminée de façon indépendante. À partir d’un nœud racine R, chaque branche de i5arborescence 400 à partir du nœud R à une feuille représente une permutation de l’ordre des appels de fonction 107 selon la séquence d’entrées 106. Par conséquent, puisque le coût de traitement 401 de chaque appel de fonction 107 inclut une probabilité d’annulation indépendante, le coût de traitement de la séquence pour chaque permutation de l’ordre des appels de fonction 107 dans la séquence d’entrées 106 est déterminé au 305 en additionnant le coût de traitement 401 le long de chaque branche de la racine R à la feuille respective, par ex. Cpemutation = a+ C2 + C3 pour la branche la plus à gauche. Lorsque le traitement d’un appel de fonction 107 annule le traitement d’autres appels de fonction 107 conformément à la séquence dans la permutation, seul le coût de traitement des appels de fonction traités 107 est additionné. Par exemple, le traitement des appels de fonction 107 selon la branche la plus à gauche est annulé parce que l’appel de fonction fs invalide le résultat intermédiaire en cours de vérification, l’appel de fonction fi n’est pas traité et le coût du traitement de la séquence pour ia permutation représentée par la branche la plus à gauche de la structure arborescente est déterminé au 305 par ^permutation ~~ Cl 1” Cg.
[0042] Dans le tableau 1, des mesures exemplaires pour les trois appels de fonction 107 sont montrées avec leur coût c- de traitement respectif 401 selon VEqu.l. Par souci de simplicité, la fraction déterministe et la fraction stochastique des appels de fonction fi, fa et fi sont toutes deux considérées comme étant égales en matière d’influence sur le coût de traitement et avec ceci les facteurs de pondération a et β, sont fixés à 1. Chaque permutation de la séquence d’entrées 106 selon la structure arborescente 400 est maintenant traitée en matière de traitement et de mise à jour conformément aux étapes 300 à 305 dans la FIG. 3. Par exemple, la séquence d’entrées fi - h - fi est traitée en premier, ce qui est représenté dans la branche la plus à gauche de la structure arborescente 400. L'appel de fonction fi est traité en premier. La probabilité d’annulation de fi est actualisée par le dispositif de surveillance 109 de la FIG. 1 produisant P(ko) = 0,237415 conformément à la mise à jour au 301 de la FIG. 3.
temps de CPU | P(ko) | P(ok) | S | a | β | Ci | |
fl | 0,032251 | 0,237415 | 0,762585 | 0,425499 | 1,00 | 1,00 | 0,5037928 |
f2 | 0,012757 | 0 | 1 | 0 | 1,00 | 1,00 | 0,5063785 |
f3 | 0,012757 | 0,991043 | 0,008957 | 0,094218 | 1,00 | 1,00 | 0,0344115 |
proc | fi-f2-f3 | f< - fi - f2 | f2-fi - f3 | f2-fi-ft | fi - f 1 - fi | fi - fi - fl | |
1 | 0,50379275 | 0,50379275 | 0,5063785 | 0,5063785 | 0,0344115 | 0,0344115 | |
2 | 1,01017125 | 0,53820425 | 1,0101713 | 0,54079 | 0,5382043 | 0,54079 | |
1,0445828 | 1,0445828 | 1,0445828 | 1,0445828 | 1,0445828 | 1,0445828 |
Ensuite, le coût de traitement de l’appel de fonction fi est déterminé en mesurant le coût de calcul par le dispositif de surveillance 109 et en déterminant le coût de traitement a conformément à VEqu.l en tenant compte de la probabilité d’annulation et de la fraction de coût déterministe représentée par le temps de CPU produisant ci = 0,5037928. L’appel de fonction fi n’est pas annulé et n’est pas aussi le dernier appel de fonction 107 dans la permutation d’appels de fonction 107 représentée par la branche la plus à gauche de la structure arborescente 400. Par conséquent le traitement et la mise à jour selon les étapes 300 à 303 sont traités pour l’appel de fonction f2 produisant C2 = 0,5063785 et à nouveau pour l’appel de fonction f? produisant c3 = 0,0344115. Ceci est illustré dans la partie supérieure du tableau 1 dans la colonne la plus à droite.
[0043] Le coût de traitement de la séquence pour la permutation des appels de fonction fi - f2 - f3 est déterminé au 305 en additionnant les coûts de traitement cl, c2 et c3 produisant CpenOutation~ 1,0445828. Puisque le coût de traitement 303 pour tous les appels de fonction 107 est déterminé en supposant des probabilités d’annulation indépendantes, le coût de traitement de la séquence est le même pour toutes les permutations des appels de fonction 107, étant donné que le traitement de la permutation n est pas annule jusqu a ce que le dernier appel de fonction 107 dans la permutation soit traité, c.-à-d. l’itération du traitement conformément aux étapes 300 à 303 arrive du nœud racine R à la feuille dans chaque branche de la structure arborescente 400. Ceci peut aussi être constaté dans le dernier rang du Tableau 1.
[0044] Néanmoins, les probabilités d’annulation des appels de fonction 107 dans la séquence d’entrées 106 sont différentes les unes des autres. Par exemple, l’appel de fonction fz a une probabilité d'annulation de 0, signifiant que le traitement de la séquence d’entrées 106 ne sera jamais annulé pendant la mise en œuvre du traitement 300 pour cet appel de fonction 107. Au contraire, 1 appel de fonction f3 a une probabilité d annulation qui est proche de 1, signifiant qu il est fort probable que le traitement de la séquence d’entrées 106 sera annulé pendant la mise en œuvre du traitement 300 pour l’appel de fonction fi. Ainsi que signalé auparavant, lorsque la séquence d’entrées 106 est annulée dans une itération, le coût de traitement de la séquence ne tiendra compte que du coût des appels de fonction 107 qui ont réellement été traités. Par conséquent, le dispositif d’optimisation 108 de la FIG. 1 détermine au 305, pour chaque traitement 300 d’un appel de fonction 107 dans chaque permutation, le coût de traitement de la séquence, si un traitement ultérieur est annulé pendant le traitement de l’appel de fonction respectif 10 / comme on peut le constater dans la partie inférieure du Tableau 1. Par ex. si le traitement de la permutation fi - fa - fi est annulé pendant le traitement de l’appel de fonction fi, le coût de traitement de la séquence de la permutation donne comme résultat Cpermutation (fi - f2 - fi) = c/ ~ 0,50379275. Lorsque le traitement est annulé pendant le traitement de l appel de fonction fa, le coût de traitement de la séquence de la permutation donne comme résultat Cpermutation (fi - fz - fà) = ci + a = 1,01017125 et ainsi de suite. Par conséquent les permutations ayant un coût de traitement de séquence minimal sont préférées afin d’annuler le traitement des appels de fonction 107 dans la séquence d’entrées 106 aussi rapidement que possible. Il se trouve, comme on peut le voir dans la partie inférieure du Tableau 1, qu’en effet les permutations des appels de fonction 107, dans lesquelles fi ayant la plus forte probabilité d’annulation P(ko) = 0,991043, se trouve au début dans l’ordre de traitement (branche droite de la structure arborescente 400), a le coût de traitement le plus bas c3 = 0,0344115 lorsque le traitement des appels de fonction 107 est annulé pendant le traitement au 300 de l’appel de fonction fi d’abord. Même quand le traitement n’est pas annulé pendant le traitement fi, mais au cours du traitement d’un deuxième appel de fonction ou lorsque fi est traité comme un deuxième appel de fonction 107 conformément à l’ordre de la permutation, c.-à-d. fi - fi - f2, fz - fi - fi, fi - fi - f2 et fi - f2 - fi ils représentent un moindre coût de calcul de séquence, quand on annule le traitement du premier ou du deuxième appel de fonction dans l’ordre de la permutation que les séquences d’entrées 106 ayant f3 comme dernier appel de fonction 107 dans l’ordre de la permutation. Finalement, l’ordre de permutation f3 - fi - f2 des appels de fonction 107 est sélectionné pour réarranger au 306 les appels de fonction 107 dans la séquence d’entrées 106 (opération 306 dans la FIG. 3) pour obtenir une séquence actualisée. Cette permutation fournit un coût de traitement de séquence plus bas où les séquences d’entrées 106 sont vraisemblablement annulées pendant le traitement du premier (cpennutation = = 0,0344115) appel de fonction et aussi où la séquence d’entrées 106 est annulée pendant le traitement du deuxieme (cPenm»ation = C3 + a - 0,5382043) appel de fonction 107 conformément à l’ordre de la séquence d’entrées 106. La séquence actualisée déterminée f3 - fi - fa est ensuite fournie pour mettre à jour la séquence d’entrées actuelle fi - f2 - f3. Par conséquent, dans la prochaine application de la séquence d’entrées 106, par ex. sur un prochain résultat intermédiaire qui est vérifié pour invalidité, la pluralité des appels de fonction fi, f2, et f3 est traitée selon l’ordre actualisé de la séquence d’entréesfi - fi - f2 étant à nouveau optimisée par l’optimisation adaptative illustrée dans la FIG. 3 et expliquée ci-dessus.
[0045] La probabilité d’annulation et le coût de traitement de chaque appel de fonction 107 sont indépendants de la probabilité d’annulation et du coût de traitement des appels de fonction 107 traités précédemment selon la séquence d’entrées 106. Le coût de traitement de la séquence pour chaque permutation d’appels de fonction 107 dépend du coût de traitement indépendant de chaque appel de fonction 107 jusqu’à ce que ia séquence d’entrées 106 soit annulée. Ceci permet de trouver de façon adaptative l’ordre optimal des appels de fonction 107 dans la séquence d’entrées 106 afin de valider des données dans un système de traitement de données 100 avec un coût de traitement optimisé. La détermination du coût de traitement d’un appel de fonction 107 basée sur une probabilité d’annulation indépendante pondérée et un coût de calcul pondéré permet de mettre en avant différents postes de coût de traitement par rapport au temps de CPL et à la probabilité d’annulation, ou une combinaison des deux. Ceci permet un contrôle respectif des postes d’optimisation où les probabilités d’annulation des appels de fonction 107 ne sont pas corrélées.
[0046] Dans certains modes de réalisation, la détermination d’une séquence d’entrées actualisée inclut par ailleurs de déterminer un coût attendu moyen E (Cseq) pour chaque permutation d’appels de fonction 107 dans la séquence d’entrées 106. Le coût moyen attendu E (Cseq) est déterminé par une probabilité de succès dépendante pour au moins la partie traitée des appels de fonction 10/ dans la séquence d’entrées 106 jusqu’à ce qu’un appel de fonction 107 annule le traitement ultérieur des appels de fonction 107 dans la séquence d’entrées 106. La probabilité de succès dépendante P(Okn-i A... A Ok2 A Oki) est une probabilité de succès de l’appel de fonction fn en fonction de la probabilité de succès des appels de fonction précédents fn-i... fi dans l’ordre de la séquence d’entrées 106 déjà traitée. Ensuite, pour chaque permutation d’appels de fonction 107 le coût moyen attendu E (Csei!) est déterminé par la somme de tous les produits de la probabilité de succès dépendante P(Okn-i Π... A Ok2 A Oki) et du coût de traitement c, pour au moins la partie des appels de fonction 107 selon l’équation suivante Equ '2. :
{Equ.2}
Ensuite, la peimutation avec le cout moyen attendu minimal minseq^ (Cseq) est selectionnee par la détermination au 305 de la FIG. 3 et les appels de fonction 107 sont réarrangés au 306 selon l’ordre de la permutation sélectionnée.
[004/] La FIG. 5 montre un exemple du coût moyen attendu E (Cseq) de la permutation fi - f2 fj des appels de fonction 107 dans la séquence d’entrées 106 indiquant, pour chaque appel de fonction 107 traité au cours du traitement et des mises à jour conformément aux étapes 300 à 303 de la FIG. 3, le coût moyen attendu E (Cseq) de la permutation, si le traitement de l’appel de fonction respectif annule le traitement ultérieur de la permutation (de façon similaire à la deuxième colonne dans la partie inférieure du Tableau 1, mais avec des probabilités d’annulation dépendantes). Les probabilités de succès dépendantes P(okn-i A... A ok2 A oki) sont fournies par le dispositif de surveillance 109, ou peuvent aussi être calculées en combinaison avec le dispositif d’optimisation 108. Avec le coût moyen attendu E (Cseq) le coût de traitement de la séquence pour chacune des permutations selon la procédure déjà montrée pour le coût de traitement indépendant dans la FIG. 4 en combinaison avec le Tableau 1, est obtenu pour trouver l’ordre optimal des appels de fonction 107 dans la séquence d’entrées 106,
c.-à-d. la permutation avec le coût moyen attendu minimal minseq.E('Geg). Si le premier appel de fonction 107 dans la permutation annule le traitement d’autres de fonction 107 dans la permutation, le cours moyen attendu E(Cseq) pour cette permutation est égal au coût de traitement indépendant c, pour le premier appel de fonction dans la permutation. Par conséquent, il n’y a pas de probabilité d’annulation dépendante et la corrélation des appels de fonction 107 non traités précédemment doit être prise en compte.
[0048] Dans les systèmes de traitement de données 100 qui traitent des millions d’enregistrements de données et de résultats intermédiaires, une corrélation entre les probabilités d’annulation des appels de fonction 107 dans une séquence d’entrées 106 existe vraisemblablement. Le traitement des appels de fonction 107 selon un ordre optimisé de façon adaptative d’une séquence d’entrées 106 par rapport à un coût moyen attendu minimal minseq E(Cseci) compte de cette corrélation et aussi d’un développement potentiel ou d’un changement de cette corrélation dans le temps. Il contribue aussi à optimiser l’ordre des appels de fonction 107 selon une séquence d’entrées optimisée de façon adaptative 106, même si le traitement d autres appels de fonction 107 selon la séquence d’entrées 106 n’est pas annulé. Lorsque seules des probabilités d’annulation indépendantes sont prises en compte, le coût de traitement pour toutes les séquences d’entrées 106 n’ayant pas été annulées du tout est égal, comme on a pu le constater au dernier rang du Tableau 1.
[0049] La prise en compte de l’influence de l’ordre des appels de fonction 107 dans la séquence d’entrées 106 permet une optimisation d’un coût de traitement lorsqu’aucun des appels de fonction 107 n’est annulé, en respectant l’influence de la probabilité d’annulation des appels de fonction 10/ traités précédemment selon la séquence d’entrées 106. Par conséquent, si également tous les résultats intermédiaires sont valides et qu’aucune invalidation n’annule le traitement d’autres appels de fonction 107, l’ordre des appels de fonction 107 dans la séquence d'entrées 106 est optimisé à un coût de traitement minimal puisque l’influence de l’ordre des appels de fonction 107 entre chacun d’eux est respectée.
[0050] Dans d’autres modes de réalisation, les appels de fonction 107 ayant une probabilité d’annulation de 0 sont retirés de la séquence d’entrées 106 avant la détermination d’une séquence d’entrées actualisée. Les appels de fonction 107 ayant une probabilité d’annulation de 0 n’annuleront jamais le traitement de la séquence d’entrées 106. Par conséquent, ils ajouteront d'une part un coût de calcul, mais sans perspective d’annulation de la séquence d’autre part. Au vu d’une optimisation qui vise à minimiser le coût de traitement, ceux-ci sont les appels de fonction 107 du pire scénario puisqu’ils ne contribuent pas à l’optimisation visée.
[0051] Le traitement de toutes les permutations des appels de fonction 107 dans une séquence d’entrées 106 par un dispositif d’optimisation 108 devient rapidement coûteux au vu du coût de traitement pour la création et le traitement des permutations elles-mêmes. La séquence d’entrée 106 de la FIG. 4 inclut trois appels de fonction 107 et crée 3 ! = 6 permutations. Une séquence d’entrées 106 avec 11 appels de fonction 107 créée déjà 11! = 39.916.800 permutations, dans lesquelles chacune des permutations doit être traitée pour déterminer au 305 un coût de traitement de séquence ou un coût moyen attendu pour chaque permutation. Une séquence d’entrées 106 avec 19 appels de fonction 107 crée même 10i7 permutations devant être traitées afin de trouver un ordre optimal pour mettre à jour la séquence d’entrées 106 des appels de fonction 107.
[0052] Par conséquent, les appels de fonction 107 ayant une probabilité d’annulation de 0 qui ne contribuent pas à l’optimisation visée sont retirés de la séquence d’entrées 106 par le disposuif d’optimisation 108 avant l’optimisation, de sorte que les permutations d’appels de fonction 107, par ex. dans une arborescence 400 dans la FIG, 4, ne sont créées et traitées que sur les appels de fonction restants 10/ ce qui réduit la taille de la structure arborescente 400 en élaguant toutes les branches qui ont ces appels de fonction 107 comme nœud parent.
[0053] Dans des modes de réalisation exemplaires, la réduction des permutations et du traitement des appels de fonction 107 est démontrée par la FIG. 6. Si, par exemple, dans la structure arborescente 400 de la FIG. 4, le nœud représentant l’appel de fonction f3 a une probabilité de 0, toutes les branches ayant ce nœud comme nœud parent 601 (les nœuds noirs) sont élaguées au 600. Par conséquent, la construction d’une structure arborescente 400 sur les appels de fonction restants fi et fa conduit à une structure arborescente réduite 602. Après avoir traité toutes les permutations de la structure arborescente réduite 602, les appels de fonction 107 retirés, par ex. f3, sont annexés à la fin des permutations traitées puisqu’ils ne contribuent pas à 1 optimisation, comme expliqué ci-dessus. Par conséquent, le nombre de permutations et d’appels de fonction 107 qui est traité au cours du traitement et des mises à jour selon les étapes 300 à 305 de la FIG. 3 est réduit de 3 ! — 6 permutations, chacune avec trois appels de fonction 107, à 2 ! = 2 permutations, chacune avec deux appels de fonction 107. En testant l’élagage 600 de la structure arborescente 400 sur un système test de traitement de données 100 traitant 19 appels de fonction 107 selon une séquence d’entrées de début 106 a réduit le nombre de permutations de 19 ! = 1017 permutations à un nombre de 7 ! = 5010 permutations devant être traitées.
[0034] Pai consequent le cout de tiaitement pour I optimisation de la sequence d entrees 106 est réduit substantiellement en retirant les appels de fonction 107 ayant une probabilité l’annulation de 0 tout en optimisant de façon adaptative l’ordre des appels de fonction 107 dans 5 la séquence d’entrées 106.
[0055] En résumant les tests effectués selon différents modes de réalisation, la FIG. 7 montre impact respectif des divers modes de realisation sur le coût de calcul global qui est utilise en traitant une invalidation dans un ensemble test de résultats intermédiaires et, simultanément 10 comme décrit ci-dessus, effectue différentes variations de l’optimisation adaptative.
E invalidation d un ensemble test de résultats intermediaires par 1 application d’une pluralité d appels de fonction 107 selon une séquence d’entrées 106 dans un ordre fixe tel qu’utilisé actuellement, a été testé pour prendre en moyenne 64,12 millisecondes (ms) de coût de calcul sur un système test pour l'invalidation sans les mécanismes décrits dans les présentes. Sur le 15 même système, la pluralité des appels de fonction 107 traités selon la séquence d’entrées 106 était simultanément optimisée par la stratégie d’optimisation selon VEqu.l. L’invalidation d’un ensemble test de résultats intermédiaires par l’application d’une pluralité d’appels de fonction 107 selon une séquence d’entrées optimisée de façon adaptative 106 selon VEqu.l a été testée pour prendre en moyenne 22,35 ms de coût de calcul, ce qui représente une économie 20 de traitement de coût d’environ 65 %. En appliquant une pluralité d’appels de fonction 107 selon une séquence d’entrées 106 optimisée de façon adaptative selon VEqu.2, le coût de traitement global a été testé pour prendre en moyenne 21,87 ms de coût de calcul. Ceci est proche des économies de la stratégie d’optimisation 1. Néanmoins, l’application d’une séquence d’entrées 106 optimisée de façon adaptative selon VEqu.2, mais en retirant tous les 25 appels de fonction 107 ayant une probabilité d’annulation P(ok) = 1, tout en déterminant la séquence d’entrées actualisée et en annexant les appels de fonction 107 éliminés à la fin de la séquence d’entrées actualisée, génère une moyenne de 12,33 ms de coût de calcul global. Par consequent, cette stratégie d’optimisation donne une économie de coût de traitement d’environ 81 %.
[0056] Par ailleurs, certains modes de réalisation appliquent le procédé de façon continue en tenant compte des mesures actualisées 301, 302 de coût de calcul et de probabilité d’annulation afin d’optimiser la séquence d’entrées 106 sur la base d’un temps de traitement combiné. Ceci permet une optimisation adaptative de la séquence d’entrées 106. Par conséquent, optimisation permet aussi de s’adapter à un système de traitement de données 100 évoluant dans le temps. En outre, il peut être appliqué à différents stades au cours du traitement d’une requête 103 en ayant un impact synergique sur le coût de calcul global de traitement du coût comme illustré par la suite.
[0057] Dans des modes de réalisation exemplaires, toutes les permutations des appels de fonction 107 dans une séquence d’entrées 106 sont traitées selon une structure arborescente 400 comme illustrée à titre d’exemple dans la FIG. 4, la FIG. 5 et la FIG. 6, le coût de traitement pour déterminer de façon adaptative l’ordre optimal des appels de fonction 107 dans la séquence d’entrées 106 est effectué par des algorithmes de recherche d’arbre. Les approches montrées ci-dessus utilisent une recherche exhaustive en calculant toutes les permutations possibles, en déterminant une séquence de coût de traitement 305 pour toutes les permutations et en sélectionnant la permutation la plus optimale conformément à l’optimisation visée, c.-à-d. un coût de traitement minimal. Cette approche détermine le minimum global du coût de traitement de séquence parmi toutes les possibilités de permutations. Cependant, le nombre de permutations croît plus rapidement qu’exponentiellement selon le nombre d’appels de fonction 107 dans la séquence d’entrées 106, Par conséquent, plutôt que d’appliquer une approche par force brute, le coût de traitement pour l’optimisation propre est optimisé en appliquant des algorithmes de recherche moins onéreux qui peuvent, même s’ils ne déterminent pas l’optimum global, trouver un optimum local de séquence de traitement de coût dans la structure arborescente 400 à un coût de traitement substantiellement plus bas pour l’optimisation elle-même.
[0058] Par exemple, dans certains modes de réalisation, une recherche aléatoire est mise en œuvre calculant au hasard un nombre fixe de permutations d’appels de fonction 107 dans la séquence d’entrées 106 sur l’hypothèse de probabilités d’annulation corrélées d’appels de fonction 107 selon VEqu. 2. Les probabilités de succès dépendantes P(Okn-i Π... Π Ok?; Π Oki) 502 dans la FIG. 5 deviennent systématiquement plus petites avec un nombre croissant d’appels de fonction prédécesseurs 107 dans la séquence. Par conséquent, l’impact le plus fort sur le coût de traitement de la séquence d’une permutation est donné par les nœuds dans la structure arborescente 400 qui sont proches de la racine R, c.-à-d. qui sont dans l’ordre de la permutation au début. Ainsi, bren que la recherche aléatoire ne trouve qu’un optimum local à l’intérieur des permutations d’appels de fonction 107, cet optimum local est souvent proche de l’optimum global en raison des caractéristiques spéciales des probabilités d’annulation dépendantes décrites ci-dessus. Puisque seul un nombre fixe de permutations des appels de fonction 107 est calculé, le coût de calcul pour trouver un (semi) ordre optimal des appels de fonction 107 est également fixe au lieu de plus qu’exponentiel quant au nombre d’appels de fonction 107 dans 5 une approche de recherche exhaustive.
[0059] Dans un autre exemple, un algorithme de recherche gourmand est mis en œuvre afin de trouver un optimum global. Un tel algorithme gourmand sur une structure arborescente 400 peut être l’algorithme connu de Dijkstra. En partant de la racine R dans la FIG. 4 ou la FIG. 5 10 l’algorithme de Dijkstra inspecte de façon itérative les nœuds enfants immédiats en calculant le coût de traitement pour chacun de ces nœuds enfants et en choisissant celui avec le coût de traitement le plus bas. A partir de ce nœud enfant choisi, l’algorithme inspecte les prochains nœuds enfants immédiats et ainsi de suite jusqu’à ce qu’une feuille de l’arbre soit trouvée ou que le traitement de la sequence soit annule. Puisque selon 1 Eqv.. 1 et l'Ec/u. 2 la probabilité 15 d annulation et le coût de traitement sont envisagés, lors du traitement du coût de traitement respectif de chaque nœud, c.-à-d. chaque appel de fonction 107 selon la séquence d’entrées 106, l’optimisation tient compte d’un coût de traitement minimal. L’avantage de l’application de l’algorithme de Dijkstra est que tous les coûts de permutation ne sont pas calculés et en outre des valeurs calculées intermédiaires sont réutilisées, réalisant une économie supplémentaire de 20 coût de traitement pour l’optimisation elle-même.
[0060] Optionnellement, certains modes de réalisation combinent les deux approches pour tirer parti d un nombre fixe de permutations afin de garder le coût de traitement pour la détermination d’une permutation optimale des appels de fonction 107 fixe également et pour 2? bénéficier en plus des caractéristiques d’un algorithme gourmand pour trouver un optimum global en choisissant toujours le nœud enfant avec le coût de traitement le moins onéreux. Dans une telle combinaison, la quantité de temps de traitement et l’optimisation de l’ordre résultant des appels de fonction 107 est déterminé par le nombre d’étapes de calcul permises, dans lesquelles l’optimisation s’efforce d’atteindre l’optimum global avec des nombres croissants de 30 calculs. Un tel algorithme est par exemple donné par un algorithme de recherche arborescente de Monte-Carlo, dans lequel le coût de traitement est par ailleurs réduit dans chaque étape de calcul en effectuant une exploration guidée des voies de permutation selon une politique d’exploration et en élaguant successivement la structure arborescente 400.
[0061] Dans certains modes de réalisation, l’ordre de réarrangement est déterminé sur la séquence d’entrées 106 des appels de fonction 107 par une politique d’exploration avec une recherche arborescente de Monte-Carlo.
[0062] En partant d’une racine R dans la structure arborescente 400 de la FIG. 4 ou de la FIG. 5, un nœud enfant subséquent est sélectionné [stade de sélection de la recherche arborescente de Monte-Carlo connue (MCTS)] selon une politique exploration dépendant du nombre d’explorations du nœud enfant respectif. À partir du nœud enfant choisi, une permutation aléatoire de tous les nœuds entants subséquents est sélectionnée en ayant le nœud enfant choisi comme nœud parent (stade d’extension et de simulation de MCTS). Le coût de traitement de la permutation choisie est déterminé (lecture de MCTS) et le résultat est utilisé pour actualiser les nœuds de la permutation sélectionnée en retournant de la queue à la racine. Par conséquent, dans chaque itération un résultat pour une permutation est déterminé afin de pondérer les nœuds dans la structure arborescente 400. De cette façon, les meilleurs nœuds c.-à-d. les nœuds représentant les appels de fonction 107 avec un coût de traitement bas sont plus vraisemblablement sélectionnés dans des itérations ultérieures du MCTS. Par conséquent, dans chaque itération la pondération des meilleurs nœuds est améliorée et approche un optimum. Par conséquent, la relation entre le temps de traitement pour trouver une permutation des appels de fonction 107 et l’optimisation de l’ordre déterminé des appels de fonction 107 dans la permutation est contrôlée et peut être appliquée comme approprié.
[0063j La politique d’exploration équilibre la sélection des permutations. Elle tient compte du nombre de visites durant les itérations du MCTS pour élaguer de façon dynamique la structure arborescente afin de toujours explorer les permutations les plus intéressantes et de réduire I arbre en élaguant les branches moins intéressantes. Une valeur Vi déterminée pour un nœud i par une politique d’exploration est par exemple donnée par
Vi
E^Cnoeudi) Y ln(n parent
TL· où riparent est le nombre total de sélections du nœud dans une permutation parmi toutes les itérations du MCTS, y est un paramètre d’exploration inclut dans le MCTS qui est théoriquement fixé à λ/2, mais qui en pratique est habituellement choisi de façon empirique. E(Cnoeud i) est donné par :
où m et le nombre d’explorations du i!h nœud.
[0064] L application du MCTS avec une politique d'exploration contribue à une optimisation de la séquence d’entrées 106 permettant de contrôler l’équilibre entre la qualité de l’optimisation d’un minimum local semi-optimal du coût de traitement à un minimum global optimal du coût de traitement ainsi que le coût potentiellement onéreux de traitement pour 1 optimisation elle-même. Par la politique d’exploration, le coût de traitement pour 10 1 optimisation propre est réduite de plus en élaguant de façon dynamique la structure arborescente pour explorer les permutations les plus intéressantes, c.-a-d. les ordres des anpels de fonction 107 qui annulent rapidement avec un coût de traitement peu élevé. De plus, 1 application du MCTS permet une parallélisation efficace, par ex. en calculant diverses permutations aléatoires sur différents processeurs 102 simultanément.
[0065] Dans certains modes de réalisation exemplaires, un seuil évaluant la complexité de calcul du MCTS ou d'autres stratégies d’optimisation détermine si le calcul d’un ordre optimisé des appels de fonction 107 dans la séquence d’entrées 106, mieux est remplacé par une autre stratégie de calcul, par ex. le calcul de toutes les permutations comme montré à titre d’exemple 20 dans la FIG. 4. Un tel seuil peut être une fonction déterminant le nombre de vérifications de validité effectuées par la séquence d’entrées 106 des appels de fonction 107, une valeur pour la corrélation des appels de fonction 107 dans une séquence d’entrées 106, un coût de distance, ou autres valeurs pertinentes pour décider quand il est avantageux de changer de stratégie d’optimisation.
[0066] Dans certains modes de réalisation, afin de traiter la séquence d’une pluralité d’appels de fonction 107, le système est un système de base de données arrangé pour traiter des données stockées dans un système de base de données. Une requête de base de données 103 est reçue par le système en provenance d’un client 104. Un ensemble de résultats produits 105 sur la base 30 de la requête de base de données 103 reçue est calculé. Une pluralité d’appels de fonction 107 est appliquée aux résultats produits calculés en traitant la pluralité des appels de fonction 107 selon la séquence d’entrées 106 sur chaque résultat produit. Chaque appel de fonction de la pluralité des appels de fonction 107 invalide le résultat intermédiaire en fonction de la probabilité d annulation de 1 appel de fonction et utilise le coût de traitement de l’appel de fonction. Le traitement de la pluralité des appels de fonction 107 selon la séquence d’entrées 106 est annulé lorsque l’appel de fonction invalide le résultat produit. Le résultat produit, invalidé par l’appel de fonction n’est pas inclus dans l’ensemble de résultats finaux produits 105 devant être renvoyés au client 104. ;par conséquent, l’ensemble calculé de résultats finaux produits 105 sur la base de la requête de base de données reçue 103 est potentiellement réduit à l’ensemble des résultats finaux produits 105. L’ensemble des résultats finaux produits 105 est renvoyé au client 104.
[0067] L application d’une pluralité d’appels de fonction 107 conformément à une séquence d entrées optimisée de façon adaptative 106 pour invalider des données afin de réduire un ensemble de résultats produits à un ensemble final de résultats produits 105 devant être envoyés au client 104 optimise cette dernière étape du traitement des données. Comme signalé auparavant, la réduction concerne jusqu’à des milliards de résultats produits potentiels devant être réduits à un ensemble final de résultats produits finaux 105, incluant un nombre à un ou deux chiffres de résultats produits 105. Ceci est elfectué par les méthodologies des présentes de façon plus efficace qu’en invalidant la grande quantité de résultats produits, par ex. avec une séquence d’appels de fonction 107 configurée, mais fixe. Là où des données et des résultats intermédiaires chargés sont invalidés par une pluralité d’appels de fonction 107 selon une séquence d entrées 106 dans un ordre optimisé de façon adaptative, le coût de traitement et même les ressources de stockage utilisées par le traitement complet de la requête 103 sont optimisés. La pluralité des appels de fonction 107 traitée selon la séquence d’entrées 106 est appliquée quand les enregistrements de données sont chargés à partir des tableaux du système de base de données tout en créant l’ensemble de résultats intermédiaires à partir des enregistrements de données chargés et/ou lorsque les résultats intermédiaires invalidés sont inapplicables. Par conséquent, d’une part ceci réduit les ressources de stockage puisque beaucoup moins de résultats intermédiaires sont inclus dans l’ensemble de résultats intermédiaires et dans les résultats produits devant être traités ultérieurement qu’ils ne sont inclus sans une invalidation. D’autre part, ceci réduit les opérations de réduction et de sélection sur l’ensemble des résultats intermédiaires et ainsi économise substantiellement plus de ressources de traitement pour un traitement ultérieur.
[0068] Comme le montre la FIG. 8 relative à un système de base de données, une requête 103, reçue au 800 par le système de base de données peut produire une charge 801 de, par ex, 94 x 106 enregistrements de données. Sur l’ensemble des enregistrements de données chargés, les opérations de mappage 804, par ex. l’agrégation, la combinaison, la permutation créent un ensemble de résultats intermédiaires. Lorsqu’aucune pluralité d’appels de fonction 107. selon une séquence d’entrées optimisée de façon adaptative 106 pour invalider les données au stade du chargement des données 801ou au stade de la création de résultats intermédiaires 804, n’est appliquée, l'ensemble des résultats intermédiaires peut par exemple inclure 14 x 1017 résultats intermédiaires. À partir de cet ensemble de résultats intermédiaires, des résultats intermédiaires sont exclus ou par ailleurs agrégés afin d’obtenir un ensemble de résultats produits. L’ensemble de résultats produits est ensuite par encore réduit par un ensemble de résultats finaux produits 105 en invalidant tous les résultats produits qui sont inapplicables ce qui inclut en général un nombre de résultats produits 105 d’un à deux chiffres, par ex. 49. L’application d’une pluralité d’appels de fonction 107 selon une séquence d’entrées optimisée de façon adaptative 106 au stade du chargement des données 801 éliminant les données chargées invalides (les nœuds noirs 802) conduit à un ensemble déjà réduit des enregistrements de données restants (les nœuds blancs 803) sur lesquels sont créés les résultats intermédiaires. Comme effet synergique pour le coût de traitement, tous les calculs subséquents pour créer des résultats intermédiaires reposant sur les enregistrements de données invalidés 802 ne sont pas effectués. Le même effet synergique s’effectue lors de la validation des résultats produits 805 traités à partir des résultats intermédiaires pour obtenir l’ensemble de résultats finaux produits, car les résultats produits invalidés sont inapplicables. Puisqu’au stade de réduction 806 l’ensemble de résultats produits pour obtenir un ensemble de résultats finaux produits n’a ensuite plus qu’à appliquer la pluralité des appels de fonction 107, conformément à la séquence d’entrées optimisée de façon adaptative 106, à l’ensemble réduit de résultats produits.
[0069] Dans certains modes de réalisation, l’ensemble des résultats intermédiaires est au moins réduit par le traitement d’une pluralité d appels de fonction 107 selon une séquence d’entrées optimisée de façon adaptative 106 à chaque résultat intermédiaire dans l’ensemble des résultats intermédiaires. Chaque appel de fonction de la pluralité des appels de fonction 107 invalide un résultat intermédiaire dans l’ensemble des résultats intermédiaires en fonction de la probabilité d’annulation de l’appel de fonction et utilise le coût de traitement de l’appel de fonction. Le traitement de la pluralité des appels de fonction 107 selon la séquence d’entrée 106 est annulé lorsque l’appel de fonction invalide le résultat intermédiaire. Le résultat intermédiaire, étant invalidé par l'appel de fonction, est éliminé de l’ensemble des résultats intermédiaires. Les résultats intermédiaires qui ne sont pas invalidés par la pluralité des appels de fonction 107 sont inclus dans l’ensemble des résultats produits.
[0070] Indépendamment de l’application d’une pluralité d’appels de fonction 107 conformément à des séquences d’entrées optimisées de façon adaptative 106 au stade de chargement des enregistrements de données 801 et/ou au stade de mappage des enregistrements de données 804 afin de créer des résultats intermédiaires 804, une pluralité d’appels de fonction 107 conformément à une séquence d’entrées optimisée de façon adaptative 106 est appliquée au stade de réduction 806 de l’ensemble des résultats produits pour obtenir un ensemble final de résultats produits 105 devant être fourni au client 104. Ainsi que déjà signalé, si aucune pluralité d'appels de fonction 107 selon une séquence d’entrées optimisée de façon adaptative 106 n'a été appliquée aux stades précédents 801, 804, cela signifie qu’environ un nombre de, par ex. 14 x 10!7 résultats intermédiaires sont vérifiés pour leur applicabilité et invalidés afin d’obtenir un ensemble final de résultats produits 105 qui inclut en général un nombre de résultats produits 105 d’un à deux chiffres, par ex. 49 résultats devant être renvoyés pour répondre à la requête 103, 800. Par conséquent, l’optimisation de la validation des résultats produits au stade de réduction bénéficie substantiellement d’une invalidation par une séquence d’entrées optimisée de façon adaptative 106, ainsi que déjà illustré dans la FIG. 7. Cependant, l’application d'une pluralité d’appels de fonction 107 conformément à une séquence d’entrées optimisée de façon adaptative 106 à divers stades du traitement de données 801, 804, 806 a un effet synergique substantiel sur le coût et le temps de traitement puisqu’une invalidation à un stade précoce dans le traitement des données se propage à un traitement subséquent, car des données invalidées ne sont plus prises en compte au stade suivant. Ceci est démontré dans la FIG. 8 par le nombre de tous les nœuds (pas d’invalidation) en correspondance avec les nœuds blancs (données/résultats valides) liés aux nœuds noirs qui sont invalidés et donc aucun de leurs enfants n’a besoin d’être traité à un stade ultérieur de traitement de données. Par conséquent ce traitement correspond à la voie de traitement optimal 200 illustrée dans la FIG. 2.
[0071] Par conséquent le traitement de données dans un système de traitement de données 100 est réduit à un minimum en appliquant une pluralité d’appels de fonction 107 conformément à une séquence d’entrées optimisée de façon adaptative 106 pour invalider les enregistrements de données, des résultats intermédiaires et produits au cours du traitement à divers stades. Ceci améliore substantiellement le temps de traitement et également les ressources de stockage en éliminant les enregistrements de données et les résultats intermédiaires invalides à des stades précoces dans le traitement des données ainsi que le traitement d’étapes de traitement subséquentes inutiles sur des enregistrements de données, des résultats intermédiaires et des résultats produits invalides. Comme mentionne au tout début, 1 utilisation de la CPU dans le système de traitement de données 100, au vu du traitement intégral des requêtes 103, peut être réduite de 10 % à 50 % en fonction des stratégies décrites dans les présentes et aussi de la complexité des caractéristiques évolutives de la réserve de données.
[0072] En résumé, l’application de pluralités d’appels de fonction 107 selon une séquence d’entrées optimisée de façon adaptative 106 à divers stades du traitement intégral des requêtes 103 est démontrée dans la FIG. 9. Un système exemplaire de traitement de données 100 reçoit une requête 103 d’un client 104. Un ensemble de résultats intermédiaires est créé au 900 incluant des enregistrements de données chargés à partir des tableaux de base de données et du mappage des enregistrements de données sur des résultats intermédiaires. Une pluralité d’appels de fonction 107 conformément à une séquence d’entrées optimisée de façon adaptative 106 est appliquée à chacun des résultats intermédiaires créés pendant la création, afin d’invalider des résultats intermédiaires créés au 900 à ce stade et n’incluant pas les résultats intermédiaires créés dans l’ensemble des résultats intermédiaires pour un traitement ultérieur. Par conséquent, la pluralité des appels de fonction 107 selon une séquence d’entrées optimisée de façon adaptative 106 est traitée au 300 de la FIG. 3 comme sur un résultat intermédiaire créé actuellement en effectuant des vérifications sur le résultat intermédiaire, par ex. en prouvant l’affectation de variables, en calculant et en évaluant une somme totale pour le résultat intermédiaire afin de déterminer si le résultat intermédiaire doit être invalidé par un des appels de fonction 107 de la pluralité des appels de fonction 107 conformément à une séquence d'entrées optimisée de façon adaptative 106. Pour chaque appel de fonction 107 jusqu’à l’annulation de la séquence d’entrées 106 en raison d’une invalidation de la finalisation du traitement de tous les appels de fonction 107 selon la séquence d’entrées 106, la probabilité d’annulation et le coût de traitement sont actualisés au 301, selon les stratégies décrites cidessus, par ex. comme présenté avec VEqu. 1 et/ou 1Έ#μ.2. Le traitement et les mises à jour selon les étapes 300 à 304 de la FIG. 3 sont itérés jusqu’à ce que le traitement de la séquence d’entrées 106 soit annulé en prouvant que le résultat intermédiaire est invalide ou jusqu’à ce que le dernier appel de fonction 107 dans la sequence d’entrées 106 soit traité sans invalidation du résultat intermédiaire prouvant que le résultat intermédiaire est valide à ce stade du traitement de données et doit être inclus dans l’ensemble des résultats intermédiaires.
[0073] Les probabilités d’annulation potentiellement actualisées et le coût de traitement 901 sont fournis au 902 au dispositif d’optimisation 108. Autrement, le dispositif de surveillance 109 fournit la probabilité d’annulation et le coût de traitement de chaque appel de fonction 107 et le dispositif d’optimisation 108 détermine le coût de traitement pour les appels de fonction respectifs 107 selon VEqu. 1 ou VEqu. 2. Par ailleurs autrement, les mises à jour des probabilités d’annulation et des coûts de traitement 301, 302 sont calculés hors ligne est fourni par un système de base de données parallèle qui n’annule pas le traitement de la séquence d’entrées 106, dans lequel un appel de fonction invalide le résultat intermédiaire (ou à d’autres stades l’enregistrement de données chargé ou le résultat produit) et ainsi met à jour les probabilités d’annulation et des coûts de traitement de tous les appels de fonctions 107 dans la séquence d’entrées 106. Le dispositif d’optimisation 108 détermine un ordre optimal des appels de fonction 107 selon l’un des procédés expliqués ci-dessus, par ex. ce qui sont illustrés dans les FIGS 4 à 6 combinés un à des algorithmes de recherche d’arbre décrits et en tenant compte d’un coût de traitement de séquence en fonction de la détermination au 305 dans la FIG. 3 afin de trouver une séquence d’entrées qui minimise le coût de traitement. La séquence d’entrée actualisée est ensuite fournie au 904 au système de traitement de données 100. Par conséquent, pour le prochain traitement d’une séquence d’entrées 106 des appels de fonction 107, par ex. lors du traitement de la validation du prochain résultat intermédiaire créé, la séquence d’entrées actualisée est traitée au 900 comme une nouvelle séquence d’entrées 905.
[0074] Le traitement selon les étapes 900 à 904 est itéré jusqu’à ce que tous les résultats intermédiaires aient été créés et prouvés valides résultant en un ensemble de résultats intermédiaires ou même de résultats produits qui est déjà optimisé en taille en appliquant la séquence d’entrees optimisée de façon adaptative 106. Une autre pluralité d’appels de fonction 107 selon une séquence d’entrées optimisée de façon adaptative 106 peut aussi être appliquée et traitée en conséquence lors du chargement des enregistrements de données des tableaux du système de traitement de données 100 avant la création de résultats intermédiaires, dans laquelle les appels de fonction 107 prouvent l’invalidité des enregistrements de données chargés, réduisant déjà le nombre de résultats intermédiaires qui sont créés ainsi qu’illustré également dans la FIG. 8.
[0075] Au prochain stade de traitement, une autre pluralité d’appels de fonction 107 conformément à une séquence d’entrées optimisée de façon adaptative 106 est appliquée à I ensemble des résultats produits 906 afin d’invalider les résultats produits non applicables par 5 une invalidation selon la procédure déjà appliquée dans le traitement conformément aux étapes 900 à 905. Finalement une réponse est envoyée à la requête 103 en fournissant au moins les résultats finaux produits 105.
[0076] La FIG. 10 est une représentation sous forme de diagramme des composants internes 10 d une machine informatique 101. La machine informatique 101 inclut un ensemble d instructions pour amener la machine informatique 101 à mettre en œuvre l’un quelconque des procédés discutés dans les présentes lorsqu’elles sont exécutées par la machine informatique 102. La machine informatique 101 inclut au moins un processeur 102, une mémoire principale 1000 et un dispositif d’interface de réseau 1001 qui communiquent les uns 15 avec les autres via un bus 1002. En option, la machine informatique 101 peut par ailleurs inclure une mémoire statique 1003 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 1004. Le dispositif d’interface de réseau 1001 connecte la machine informatique 101 au moins aux clients 104 ainsi qu’aux bases de données du système 20 de traitement de données 100.
[0077] Dans des modes de réalisation dans lesquels la machine informatique 101 héberge le dispositif de surveillance 109 et le dispositif d’optimisation 108 peuvent être conservés dans la mémoire principale 1000. Un ensemble d’instructions exécutables par ordinateur (c.-à-d. un 25 code de programme informatique) incarnant l’une quelconque ou tous les procédés décrits cidessus, réside complètement ou au moins partiellement dans ou sur un support lisible par machine, par ex. la mémoire principale 1000 (montrée comme un traitement de requête de base de données d’entités fonctionnelles 1005 qui inclut la fonctionnalité pour recevoir et traiter une requête de base de données 103 incluant l’invalidation d’enregistrements de données et/ou de 30 résultats intermédiaires ainsi que le traitement de la pluralité des appels de fonction 107 traités conformément à une séquence d’entrées optimisée de façon adaptative 106 pour être traitée par le processeur 102). Les instructions peuvent par ailleurs être transmises ou reçues sous forme de signal propagé via Internet par l’intermédiaire du dispositif d’interface de réseau 1001. Le fonctionnement basique de la machine informatique 101 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 1000, ledit au moins un ou plusieurs processeurs 102 et/ou la mémoire statique 1003.
[0078] En général, les routines exécutées pour mettre en œuvre les modes de réalisation de l’invention, qu’elles soient implémentées 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 d’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 ». Un code de programme comporte typiquement des instructions lisibles par ordinateur qui résident à divers moments dans divers dispositifs de mémoire et de stockage dans un ordinateur et qui, lorsqu’elles sont lues et exécutées par un ou plusieurs processeurs 102 dans un ordinateur, amènent l’ordinateur à effectuer des d’opérations nécessaires à l’exécution d’opérations et/ou d’éléments propres à la mise en œuvre des aspects variés des modes de réalisation de l’invention. Les instructions d’un programme, lisibles par ordinateur, pour mettre en œuvre 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.
[0079] Divers codes de programme décrits dans les présentes peuvent être identifiés, selon l’application dans laquelle ils sont implémentés, 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 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 sous-programmes, procédures, procédés, modules, objets, et ainsi de suite, ainsi que les façons variées d’affecter les fonctionnalités d’un programme parmi diverses couches de logiciels qui sont hébergées 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.
[0080] Le code de programme mis en œuvre dans une/un quelconque des applications/modules décrit(e)s dans les présentes peut être distribué individuellement ou collectivement comme un produit-programme d’ordinateur, sous une variété de formes. En particulier, le code de programme peut être distribué en utilisant un support de stockage lisible par ordinateur, 5 disposant d’instructions de programme lisibles par ordinateur en lui-même, amenant un processeur à mettre en œuvre des aspects des modes de réalisation de l’invention.
[0081 ] 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, 10 implémentés dans un quelconque procédé ou technologie pour le stockage d’informations, tel que les instructions de programme lisibles par ordinateur, des structures de donnée, des modules de programme, ou autres données. Les supports de stockage lisibles par ordinateur peuvent aussi comprendre une mémoire a accès aléatoire (RAM), une mémoire à lecture seule (ROM), une mémoire à lecture exclusivement, programmable et effaçable (EPROM), une mémoire à 15 lecture exclusivement, programmable et effaçable électriquement (EEPROM), une mémoire flash, ou toute technologie de support de mémoire à état défini, un disque compact portable dote d’une mémoire à lecture seule (CD-ROM), ou tout autre stockage optique, des cassettes magnétiques, une bande d’enregistrement magnétique, un disque de stockage magnétique ou d autres dispositifs de stockage magnétique, ou tout autre support pouvant être utilisé pour 20 stocker l’information désirée et apte à être lue 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 toutes autres ondes électromagnétiques se propageant, des ondes électromagnétiques se propageant à travers un support de transmission telle qu’un guide d’ondes, ou des signaux électriques transmis par câble). Les instructions de programme lisibles 25 par ordinateur peuvent être téléchargées sur un ordinateur, un autre type d’appareil de traitement de données programmable ou sur tout autre dispositif de support de stockage lisible par ordinateur, ou vers un ordinateur externe ou vers un dispositif de stockage externe par un réseau.
[0082] Les instructions de programme lisibles par ordinateur, enregistrées sur un support lisible 30 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 informatique peuvent être fournies à un ou plusieurs processeurs 102 d'un ordinateur à usage général ou un ordinateur dédié ou un autre appareil programmable de traitement de données pour produire une machine, de sorte que les 5 instructions, lorsqu elles sont exécutées à l’aide dudit un ou plusieurs processeurs 102, accomplissent une série de calculs pour mettre en œuvre les fonctions, actions, et/ou les opérations spécifiées dans les organigrammes, diagrammes séquentiels et/ou diagrammes blocs.
[0083] Bien que l’invention ait été illustrée par une description de modes de réalisation variés 10 et bien que ces modes de réalisation aient été décrits de façon considérablement détaillée, il n’y a pas d intention de restreindre, ou de limiter, d’aucune façon le champ d’application des revendications décrites dans les présentes. Des avantages et des modifications supplémentaires 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 15 qu’aux exemples illustratifs montrés et décrits.
Claims (15)
- REVENDICATIONS1. On procédé pour traiter une séquence d’entrées d’une pluralité d’appels de fonction sur au moins un processeur, dans lequel les appels de fonction de la pluralité des appels de fonction sont associés à une probabilité d’annulation, la probabilité d’annulation d’un appel de fonction particulier indiquant une probabilité que le traitement de l’appel de fonction particulier cause une annulation du traitement de la séquence d’entrées, et dans lequel les appels de fonction de la pluralité des appels de fonction sont associés à un coût de traitement sur la base d’un nombre d’instructions de processeur de l’appel de fonction respectif et/ou de la probabilité d’annulation de l’appel de fonction respectif, dans lequel le procédé comprend, ledit au moins un processeur :le traitement d’au moins un sous-ensemble de la pluralité des appels de fonction selon la séquence d’entrées jusqu’à ce qu’un appel de fonction particulier annule le traitement de la séquence d’entrées.l’actualisation de la probabilité d’annulation pour au moins le sousensemble de la pluralité des appels de fonction, basée sur le fait que le traitement de l’appel de fonction respectif a causé, ou non, une annulation ;factualisation du coût de traitement par appel de fonction pour au moins le sous-ensemble de la pluralité des appels de fonction ;la détermination d’une séquence d’entrées actualisées en réarrangeant l’ordre des appels de fonction au moms sur la base du coût de traitement des appels de fonction.
- 2. Le procédé selon la revendication 1, dans lequel un coût de traitement d’une séquence est donné par la somme du coût de traitement par appel de fonction jusqu’à ce que le traitement de la séquence soit annulé et que le coût de traitement de la séquence de la séquence actualisée soit inférieur au coût du traitement de la séquence d’entrées.
- 3. Le procédé selon la revendication 1 ou la revendication 2, dans lequel le traitement comprend par ailleurs l’actualisation du coût de traitement d’un appel de fonction indépendamment de l’actualisation du coût de traitement des appels de fonction traités précédemment dans la séquence d’entrées.
- 4. Le procédé selon l’une quelconque des revendications 1 à 3, dans lequel la détermination d’une séquence actualisée comprend par ailleurs :la détermination d’un coût moyen attendu pour chaque permutation d’appel de fonction dans la séquence d’entrées en :o déterminant une probabilité de succès dépendante pour au moins la partie des appels de fonction ;o déterminant, pour chaque permutation des appels de fonction, la somme de tous les produits de la probabilité de succès dépendante et le coût de traitement pour au moins la partie des appels de fonction ;- sélectionnant la permutation avec le coût attendu moyen minimum ;- réarrangeant l’ordre des appels de fonction sur la base de la permutation sélectionnée.
- 5. Le procédé selon l’une quelconque des revendications 1 à 4, comprenant par ailleurs l’élimination de tous les appels de fonction ayant une probabilité d’annulation de 0 de la séquence d’entrées avant de déterminer la séquence d’entrées actualisée.
- 6. Le procédé selon l’une quelconque des revendications précédentes 1 à 5, dans lequel l’ordre de réarrangement est déterminé par l’algorithme de Monte-Carlo-Tree-Search avec une politique d’exploration.
- 7. Un système pour traiter une séquence d’entrées d’une pluralité d’appels de fonction sur au moins un processeur, dans lequel les appels de fonction de la pluralité des appels de fonction sont associés à une probabilité d’annulation, la probabilité d’annulation d’un appel de fonction particulier indiquant une probabilité que le traitement de l’appel de fonction particulier cause une annulation du traitement de la séquence d’entrées, et dans lequel les appels de fonction de la pluralité des appels de fonction sont associés à un coût de traitement sur la base d’un nombre d’instructions de processeur de l’appel de fonction respectif et/ou la probabilité d’annulation de l’appel de fonction respectif, dans lequel le système est, sur ledit au moins un processeur, agencé pour :traiter au moins un sous-ensemble de la pluralité des appels de fonction selon la séquence d entrées jusqu à l’annulation du traitement de la séquence d’entrées par un appel de fonction particulier.actualiser la probabilité d’annulation pour au moins le sous-ensemble de la pluralité des appels de fonction, basée sur le fait que le traitement de l’appel de fonction respectif a causé, ou non, une annulation ;actualises le cout de traitement par appel de fonction pour au moins le sousensemble de la pluralité des appels de fonction ;déterminer une séquence d’entrées actualisées en réarrangeant l’ordre des appels de fonction au moins sur la base du coût de traitement des appels de fonction.
- 8. Le système selon la revendication 7, dans lequel un coût de traitement d’une séquence est donné par la somme du coût de traitement par appel de fonction jusqu’à ce que le traitement de la séquence soit annulé et que le coût de traitement de la séquence de la séquence actualisée soit inférieur au coût du traitement de la séquence d’entrée.
- 9. Le système selon la revendication 7 ou 8, dans lequel le traitement comprend par ailleurs l’actualisation du coût de traitement d’un appel de fonction indépendamment de l’actualisation du coût de traitement des appels de fonction traités précédemment dans la séquence d’entrées.
- 10. Le système selon I une quelconque des revendications 7 à 9, dans lequel le système est par ailleurs arrangé pour déterminer une séquence d’entrées actualisée en :- déterminant un coût moyen attendu pour chaque permutation d’appel de fonction dans la séquence d’entrées en :o déterminant une probabilité de succès dépendante pour au moins la partie des appels de fonction ;o déterminant pour chaque permutation d’appel de fonction, la somme de tous les produits de la probabilité de succès dépendante et le coût de traitement pour au moins la partie des appels de fonction ;sélectionnant la permutation avec le coût attendu moyen minimum ;réarrangeant l’ordre des appels de fonction sur ia base de la permutation sélectionnée.
- 11. Le système selon la revendication 10, dans lequel le système est par ailleurs arrangé pour éliminer tous les appels de fonction ayant une probabilité d’annulation de 0 de la séquence d’entrées avant la détermination d’une séquence d’entrées actualisée.
- 12. Le système selon l’une quelconque des revendications 10 ou 11, dans lequel le système est par ailleurs arrangé pour déterminer une séquence d’entrées actualisée en réarrangeant l’ordre de la séquence des appels de fonction par l’algorithme de MonteCarlo-Tree-Search avec une politique exploration.
- 13. Le système d’une quelconque des revendications précédentes 7 à 12, dans lequel le système est un système de base de données agencé pour traiter des données stockées dans le système de base de données en :- recevant au système une requête de base de données d’un client ;calculant un ensemble de résultats produits sur la base de la requête de base de données reçue ;dans lequel la pluralité des appels de fonction est appliquée aux résultats produits calculés, traitant la pluralité des appels de fonction selon la séquence d’entrées sur chaque résultat produit ;dans lequel chaque appel de fonction de la pluralité des appels de fonction invalide le résultat produit en fonction de la probabilité d'annulation de l’appel de fonction et utilise le coût de traitement de l’appel de fonction ;dans lequel le traitement de la pluralité des appels de fonction selon la séquence d’entrée est annulé lorsque l’appel de fonction invalide le résultat produit :dans lequel le résultat produit étant invalidé par l’appel de fonction n’est pas inclus dans l’ensemble final de résultats produits ;renvoyant l’ensemble final des résultats produits au client.
- 14. Le système selon la revendication 13, dans lequel l’ensemble des résultats intermédiaires est au moins réduit par le traitement d’une pluralité d’appels de fonction selon une séquence d’entrées pour chaque résultat intermédiaire dans l’ensemble des résultats intermédiaires.dans lequel chaque appel de fonction de la pluralité des appels de fonction invalide un résultat intermédiaire dans l’ensemble des résultats intermédiaires en fonction de la probabilité d’annulation de l’appel de fonction et utilise le coût de traitement de l’appel de fonction ;dans lequel le traitement de la pluralité des appels de fonction selon la séquence d’entrée est annulé lorsque l’appel de fonction invalide le résultat intermédiaire ;dans lequel le résultat intermédiaire, étant invalidé par l’appel de fonction, est éliminé de l’ensemble des résultats intermédiaires.
- 15. Un programme d’ordinateur pour traiter une séquence d’entrées d’une pluralité d'appels de fonction sur au moins un processeur comprenant des instructions de code stockées sur un support de stockage lisible par ordinateur pour exécuter le procédé selon l’une quelconque aes revendications 1 à 6, lorsque ledit programme fonctionne sur un ordinateur.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1858499A FR3086424A1 (fr) | 2018-09-20 | 2018-09-20 | Traitement d'une sequence d'appels de fonction |
US16/571,815 US11157308B2 (en) | 2018-09-20 | 2019-09-16 | Function call sequence processing |
ES19198335T ES2890985T3 (es) | 2018-09-20 | 2019-09-19 | Procesamiento de secuencia de llamada de función |
EP19198335.2A EP3627346B1 (fr) | 2018-09-20 | 2019-09-19 | Traitement d'une sequence d'appel de fonction |
CN201910892619.0A CN110928897B (zh) | 2018-09-20 | 2019-09-20 | 在至少一个处理器上处理多个函数调用的输入序列的系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1858499A FR3086424A1 (fr) | 2018-09-20 | 2018-09-20 | Traitement d'une sequence d'appels de fonction |
Publications (1)
Publication Number | Publication Date |
---|---|
FR3086424A1 true FR3086424A1 (fr) | 2020-03-27 |
Family
ID=65201544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1858499A Withdrawn FR3086424A1 (fr) | 2018-09-20 | 2018-09-20 | Traitement d'une sequence d'appels de fonction |
Country Status (5)
Country | Link |
---|---|
US (1) | US11157308B2 (fr) |
EP (1) | EP3627346B1 (fr) |
CN (1) | CN110928897B (fr) |
ES (1) | ES2890985T3 (fr) |
FR (1) | FR3086424A1 (fr) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE212022000032U1 (de) * | 2021-06-25 | 2022-09-27 | Southern University Of Science And Technology | Automatisches Entwurfsvorrichtung für eine analoge Schaltung basierend auf einer Baumstruktur |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009265A (en) * | 1994-02-25 | 1999-12-28 | International Business Machines Corporation | Program product for optimizing parallel processing of database queries |
US20040122798A1 (en) * | 2002-12-19 | 2004-06-24 | Lin Eileen Tien | Fast and robust optimization of complex database queries |
US20050097078A1 (en) * | 2003-10-31 | 2005-05-05 | Lohman Guy M. | System, method, and computer program product for progressive query processing |
US20090281986A1 (en) * | 2008-05-08 | 2009-11-12 | Bestgen Robert J | Generating Database Query Plans |
US7650331B1 (en) | 2004-06-18 | 2010-01-19 | Google Inc. | System and method for efficient large-scale data processing |
EP2869257A1 (fr) | 2013-10-31 | 2015-05-06 | Configit A/S | Configuration de produit |
CN108388666A (zh) * | 2018-03-16 | 2018-08-10 | 重庆邮电大学 | 一种基于萤火虫算法的数据库多表连接查询优化方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007221394A (ja) * | 2006-02-15 | 2007-08-30 | Mitsumi Electric Co Ltd | 通信方法、及び、通信システム、並びに、通信装置 |
EP2740057A4 (fr) * | 2011-08-01 | 2015-09-09 | Tagged Inc | Réconciliation généralisée dans une base de données distribuée |
CN105138335B (zh) * | 2015-08-28 | 2018-01-23 | 牟永敏 | 一种基于控制流图的函数调用路径提取方法及装置 |
US11120481B2 (en) * | 2017-10-27 | 2021-09-14 | Criteo Sa | Predictive adjusted bidding for electronic advertisements |
-
2018
- 2018-09-20 FR FR1858499A patent/FR3086424A1/fr not_active Withdrawn
-
2019
- 2019-09-16 US US16/571,815 patent/US11157308B2/en active Active
- 2019-09-19 ES ES19198335T patent/ES2890985T3/es active Active
- 2019-09-19 EP EP19198335.2A patent/EP3627346B1/fr active Active
- 2019-09-20 CN CN201910892619.0A patent/CN110928897B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009265A (en) * | 1994-02-25 | 1999-12-28 | International Business Machines Corporation | Program product for optimizing parallel processing of database queries |
US20040122798A1 (en) * | 2002-12-19 | 2004-06-24 | Lin Eileen Tien | Fast and robust optimization of complex database queries |
US20050097078A1 (en) * | 2003-10-31 | 2005-05-05 | Lohman Guy M. | System, method, and computer program product for progressive query processing |
US7650331B1 (en) | 2004-06-18 | 2010-01-19 | Google Inc. | System and method for efficient large-scale data processing |
US20090281986A1 (en) * | 2008-05-08 | 2009-11-12 | Bestgen Robert J | Generating Database Query Plans |
EP2869257A1 (fr) | 2013-10-31 | 2015-05-06 | Configit A/S | Configuration de produit |
CN108388666A (zh) * | 2018-03-16 | 2018-08-10 | 重庆邮电大学 | 一种基于萤火虫算法的数据库多表连接查询优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110928897A (zh) | 2020-03-27 |
EP3627346A1 (fr) | 2020-03-25 |
US11157308B2 (en) | 2021-10-26 |
ES2890985T3 (es) | 2022-01-25 |
EP3627346B1 (fr) | 2021-08-18 |
CN110928897B (zh) | 2022-04-26 |
US20200097321A1 (en) | 2020-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FR3087921A1 (fr) | Systèmes et méthodes de recommandation utilisant des modèles d'apprentissage automatique en cascade | |
EP3665490B1 (fr) | Procédé, mis en oeuvre par ordinateur, de reconstruction de la topologie d'un réseau de cables, utilisant un algorithme génétique | |
JP6857598B2 (ja) | カバレッジテスト支援装置およびカバレッジテスト支援方法 | |
EP1043658A1 (fr) | Procédé d'amélioration des performances d'un système multiprocesseur comprenant une file d'attente de travaux et architecture de système pour la mise en oeuvre du procédé | |
WO2014072628A1 (fr) | Procédé, dispositif et programme d'ordinateur de placement de tâches dans un système multi-coeurs | |
FR3088740A1 (fr) | Traitement de donnees iteratif | |
WO2015091511A1 (fr) | Authentification de code binaire | |
FR3095042A1 (fr) | Procede de definition d’un chemin | |
FR3086424A1 (fr) | Traitement d'une sequence d'appels de fonction | |
FR2972090A1 (fr) | Determination de la validite d'un abonnement pour l'utilisation de contenus numeriques | |
CN117474588A (zh) | 一种卷烟销量预测方法、装置、计算机设备及存储介质 | |
EP3846047A1 (fr) | Procédé et système d'identification de variables pertinentes | |
FR3086412A1 (fr) | Recalcul des resultats de recherche precalcules | |
EP4242921A1 (fr) | Procédé, programme d'ordinateur et dispositif d'entrainement d'un réseau neuronal convolutif à architecture dynamique pour la segmentation sémantique d'image | |
FR3112635A1 (fr) | Procédé de modélisation de la consommation de puissance d’un système sur puce avec réduction de trace de simulation/émulation | |
FR3064095B1 (fr) | Detection par apprentissage automatique d'anomalies dans un ensemble de transactions bancaires par optimisation de la precision moyenne | |
WO2014195141A1 (fr) | Accelerateur materiel pour la manipulation d'arbres rouges et noirs | |
FR3071631A1 (fr) | Procede de traitement de donnees d'une representation bidimensionnelle d'une zone geographique | |
FR3067482A1 (fr) | Dispositif de caracterisation et/ou de modelisation de temps d'execution pire-cas | |
FR3060797A1 (fr) | Base de donnees predictive pour des processus d'ordinateur | |
FR3060795A1 (fr) | Procede de construction d’une representation tridimensionnelle d’une atmosphere, dispositif et programme correspondant | |
US20230230099A1 (en) | Goal-based next optimal action recommender | |
EP4064087A1 (fr) | Procédé et dispositif électronique de surveillance d'un code exécutable apte à être exécuté sur une plateforme informatique, et programme d'ordinateur mettant en oeuvre un tel procédé | |
FR3115906A1 (fr) | Procédé de traitement de données par un réseau de neurones artificiels avec exécutions groupées d’opérations individuelles pour éviter les attaques par canal auxiliaire, et système correspondant | |
EP4186009A1 (fr) | Procédés d'allocation de qubits logiques d'un algorithme quantique dans un processeur quantique |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20200327 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
ST | Notification of lapse |
Effective date: 20220505 |