FR3095706A1 - JUNCTION MODEL AGNOSTIC AGGREGATION CALCULATION IN DATABASE QUERY OPERATIONS - Google Patents

JUNCTION MODEL AGNOSTIC AGGREGATION CALCULATION IN DATABASE QUERY OPERATIONS Download PDF

Info

Publication number
FR3095706A1
FR3095706A1 FR1907273A FR1907273A FR3095706A1 FR 3095706 A1 FR3095706 A1 FR 3095706A1 FR 1907273 A FR1907273 A FR 1907273A FR 1907273 A FR1907273 A FR 1907273A FR 3095706 A1 FR3095706 A1 FR 3095706A1
Authority
FR
France
Prior art keywords
fanout
function
fan
sql
implementation
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.)
Granted
Application number
FR1907273A
Other languages
French (fr)
Other versions
FR3095706B1 (en
Inventor
Lloyd Tabb
Steven Talbot
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Looker Data Sciences Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Looker Data Sciences Inc filed Critical Looker Data Sciences Inc
Publication of FR3095706A1 publication Critical patent/FR3095706A1/en
Application granted granted Critical
Publication of FR3095706B1 publication Critical patent/FR3095706B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

Un procédé de calcul d'une fonction d'agrégation agnostique de modèle de jonction comprend le chargement du code source et l'analyse du code source pour identifier différentes opérations de requête de base de données. En réponse à l'identification d'une fonction d'agrégation dans l'une des différentes opérations de requête de base de données dans laquelle des enregistrements de tables multiples sont jointes ensemble dans une jonction de table, une multiplicité de clés primaires sont récupérées, chacune correspondant à une table différente des tables multiples et également un objet de l'une des tables référencé par la fonction d’agrégation identifiée. L'existence d'une condition de sortance associée à la jonction de table est alors calculée. A condition que l'existence d'une condition de sortance ne soit pas calculée, une implémentation non sensible à la sortance de la fonction globale est invoquée à l'égard de l'objet. Mais, dans le cas contraire, une implémentation sensible à la sortance, différente, de la fonction d'agrégation est invoquée à l'égard de l'objet. Figure pour l'abrégé : figure 1A method of calculating a junction model agnostic aggregation function includes loading source code and analyzing the source code to identify different database query operations. In response to identifying an aggregate function in one of several database query operations in which multiple table records are joined together in a table join, a multiplicity of primary keys are retrieved, each corresponding to a different table of the multiple tables and also an object of one of the tables referenced by the identified aggregation function. The existence of a fan-out condition associated with the table join is then calculated. Provided that the existence of a fanout condition is not computed, a fanout-insensitive implementation of the global function is invoked against the object. But, otherwise, a different, fanout-sensitive implementation of the aggregate function is invoked against the object. Figure for the abstract: Figure 1

Description

CALCUL D'AGRÉGATION AGNOSTIQUE DE MODÈLE DE JONCTION DANS DES OPÉRATIONS DE REQUÊTE DE BASE DE DONNÉESCALCULATING JUNCTION MODEL AGNOSTIC AGGREGATION IN DATABASE QUERY OPERATIONS

La présente invention concerne le domaine des opérations de requête de bases de données et plus particulièrement l'exécution d'une fonction d'agrégation sur des données dans une ou plusieurs tables d'une base de données.The present invention relates to the field of database query operations and more particularly to the execution of an aggregation function on data in one or more tables of a database.

En science des données, une requête de base de données peut être soit une requête de sélection, soit une requête d'action. Une requête de sélection est une requête de récupération de données, tandis qu'une requête d'action demande des opérations supplémentaires sur les données, telles que l'insertion, la mise à jour ou la suppression. En règle générale, la requête de sélection fonctionne sur un champ d'une table. À cet égard, une table est la composante fondamentale d'une base de données. Dans une base de données, chaque table comprend zéro ligne ou plus et une colonne ou plus. Une base de données relationnelle, en tant qu'espèce d'une base de données numérique générale, comprend un ensemble de tables formellement décrites à partir desquelles les données peuvent être consultées ou rassemblées de nombreuses façons différentes sans avoir à réorganiser les tables de la base de données. À cette fin, dans une table de base de données relationnelle, chaque ligne peut être identifiée de façon unique par une clé primaire qui peut inclure un ou plusieurs ensembles de valeurs de colonnes. Dans la plupart des scénarios, la clé primaire est une seule colonne d'une table correspondante.In data science, a database query can be either a select query or an action query. A select query is a query for retrieving data, while an action query requests additional data operations such as insert, update, or delete. Typically, the select query operates on a field in a table. In this regard, a table is the fundamental component of a database. In a database, each table has zero or more rows and one or more columns. A relational database, as a species of a general digital database, comprises a set of formally described tables from which data can be accessed or gathered in many different ways without having to rearrange the database tables. of data. To this end, in a relational database table, each row can be uniquely identified by a primary key, which can include one or more sets of column values. In most scenarios, the primary key is a single column from a corresponding table.

L’utilisateur standard et l'interface de programmation d'application (API) d'une base de données relationnelle est le langage de requête structuré (SQL – acronyme de l’anglais Structured Query Language). Les instructions SQL sont utilisées à la fois pour les requêtes interactives d'informations provenant d'une base de données relationnelle et pour la collecte de données pour des rapports. En SQL, l'équivalent de la requête de sélection est l'instruction de requête SELECT avec une clause WHERE permettant de récupérer des enregistrements d'une relation, limitant les résultats à ceux qui répondent à un critère spécifique. Notamment, la requête de sélection dans la production d'un ensemble de résultats d'enregistrements peut être suivie d'une fonction de calcul, à savoir une fonction d’agrégation fonctionnant sur l'ensemble de résultats. Une fonction d'agrégation typique inclut l'opération SQL SUM() qui additionne les valeurs numériques d'une colonne spécifiée de l’ensemble de résultats, ou l'opération SQL COUNT() qui fournit un comptage du nombre d'enregistrements dans l’ensemble de résultats.The standard user and application programming interface (API) of a relational database is Structured Query Language (SQL). SQL statements are used both for interactive queries of information from a relational database and for collecting data for reports. In SQL, the equivalent of the select query is the SELECT query statement with a WHERE clause to retrieve records from a relationship, limiting the results to those that meet a specific criteria. Notably, the select query in producing a result set of records may be followed by a computational function, namely an aggregation function operating on the result set. A typical aggregate function includes the SQL SUM() operation which sums the numeric values of a specified column of the result set, or the SQL COUNT() operation which provides a count of the number of records in the result set. set of results.

Lorsqu'elle est exécutée sur une seule table dans une base de données, une fonction d'agrégation nécessite peu de gestion. Il suffit de sélectionner la colonne appropriée de la table pour l'agrégation et de spécifier que la fonction d'agrégation précise est suffisante pour obtenir un résultat exact. Cependant, cela n’est pas vrai à travers une sortance de tables multiples. A cet égard, le SQL prévoit la notion de jonction de table. Une jonction de table, implémentée via l'opérateur SQL JOIN, permet de joindre ensemble les enregistrements de deux tables différentes pour produire une table composite. Différentes variantes de l'opération de jonction comprennent une jonction intérieure, une jonction gauche, une jonction droite et une jonction complète. De même, le produit d'une opération de jonction elle-même peut faire l'objet d'une autre opération de jonction par rapport à une table différente. Selon la nature de l'opération de jonction, l'ensemble de résultats typique peut inclure un même nombre de lignes que chaque table contribuant à l'opération de jonction. Mais, à l'occasion, l'inverse peut entraîner une condition de "sortance".When performed on a single table in a database, an aggregate function requires little maintenance. Just select the appropriate column from the table for aggregation and specify that the precise aggregate function is sufficient to get an exact result. However, this is not true across multiple table fanouts. In this regard, SQL provides for the notion of table junction. A table join, implemented through the SQL JOIN operator, joins together records from two different tables to produce a composite table. Different variations of the splice operation include inside splice, left splice, right splice, and full splice. Similarly, the product of a join operation itself can be the subject of another join operation against a different table. Depending on the nature of the join operation, the typical result set might include the same number of rows as each table contributing to the join operation. But, on occasion, the reverse can result in a "fan-out" condition.

Dans une condition de sortance, l’ensemble de résultat d'une opération de jonction inclut plus de lignes que chacune des tables contributrices de l'opération de jonction, c'est-à-dire une relation d'un-à-plusieurs. Ainsi, les fonctions d'agrégation, telles qu'une opération de comptage ou une opération de somme, peuvent produire des résultats inexacts en raison des lignes supplémentaires de l'ensemble de résultats de l'opération de jonction. Pour combattre les conséquences néfastes des conditions de sortance, une stratégie connue consiste à diriger une opération de comptage avant et après la jonction de table pour s'assurer qu'une sortance indésirable ne s'est pas produit. Les approches plus sophistiquées mettent en œuvre l'opérateur DISTINCT de SQL tout en s'appuyant sur une connaissance a priori du modèle d'opération de jonction produisant l'ensemble de résultats et si l'ensemble de résultats reflète ou non une relation un-à-un, une relation plusieurs-à-plusieurs, ou la relation problématique un-à-plusieurs. Mais, comme on peut le voir, en l'absence d'une connaissance a priori du modèle de l'opération de jonction, il est difficile de garantir l'exactitude du résultat d'une fonction d’agrégation effectuée sur l'ensemble de résultats d'une opération de jonction.In a fan-out condition, the result set of a join operation includes more rows than each of the tables contributing to the join operation, i.e., a one-to-many relationship. Thus, aggregate functions, such as a count operation or a sum operation, may produce inaccurate results due to extra rows in the join operation result set. To combat the adverse consequences of fanout conditions, a known strategy is to conduct a count operation before and after the table join to ensure that unwanted fanout has not occurred. More sophisticated approaches implement SQL's DISTINCT operator while relying on a priori knowledge of the join operation pattern producing the result set and whether or not the result set reflects an un- to-one, a many-to-many relationship, or the problematic one-to-many relationship. But, as can be seen, in the absence of a priori knowledge of the model of the join operation, it is difficult to guarantee the accuracy of the result of an aggregation function performed on the set of results of a join operation.

Les modes de réalisation de la présente invention comblent les lacunes de l’état de l'art en ce qui concerne un calcul d’agrégation dans des opérations de requête de base de données et fournissent un procédé, un système et un produit de programme informatique nouveaux et non évidents pour le calcul de fonction d’agrégation agnostique de modèle de jonction dans des opérations de requête de base de données. Dans un mode de réalisation de l'invention, le procédé comprend d'abord un chargement d'un document de code source dans une mémoire d'un ordinateur, par exemple, une abstraction de langage de balisage SQL. Ensuite, le document de code source est analysé pour identifier des différentes opérations de requête de base de données. Par la suite, en réponse à une identification d'une fonction d'agrégation dans l'une des différentes opérations de requête de base de données dans laquelle des enregistrements dans des tables multiples sont joints ensemble dans une jonction de table, le procédé récupère dans la mémoire de l'ordinateur une multiplicité de clés primaires, chacune correspondant à une table différente parmi les tables multiples et également un objet de l’une des tables référencé par la fonction d’agrégation identifiée. Le procédé calcule en outre une existence d'une condition de sortance associée à la jonction de table. Enfin, à condition que la condition de sortance ne soit pas calculée, le procédé invoque une implémentation non sensible à la sortance de la fonction d’agrégation par rapport à l'objet. Mais, dans à l’inverse, à condition que la condition de sortance soit calculée, le procédé invoque une implémentation sensible à la sortance, différente, de la fonction d'agrégation par rapport à l'objet.Embodiments of the present invention fill the gaps in the state of the art with respect to an aggregation computation in database query operations and provide a method, system, and computer program product new and non-obvious for junction model agnostic aggregation function computation in database query operations. In one embodiment of the invention, the method first includes loading a source code document into a memory of a computer, for example, an SQL markup language abstraction. Next, the source code document is analyzed to identify different database query operations. Subsequently, in response to an identification of an aggregate function in one of several database query operations in which records in multiple tables are joined together in a table join, the method retrieves in the memory of the computer a multiplicity of primary keys, each corresponding to a different table among the multiple tables and also an object of one of the tables referenced by the identified aggregation function. The method further calculates an existence of a fan-out condition associated with the table join. Finally, provided the fanout condition is not computed, the method invokes a fanout-insensitive implementation of the aggregate function with respect to the object. But, in conversely, provided the fanout condition is computed, the method invokes a different, fanout-aware implementation of the aggregate function with respect to the object.

Dans un aspect du mode de réalisation, l'implémentation non sensible à la sortance de la fonction d’agrégation est une opération SQL, par exemple SUM(), AVG(), STDDEV() ou COUNT(). En tant que telle, l'implémentation sensible à la sortance, différente, de la fonction d'agrégation extrait des valeurs uniques pour l'objet de chacune des tables multiples en utilisant une clé correspondante parmi les clés primaires et effectue ensuite l'implémentation non sensible à la sortance de la fonction d’agrégation sur les valeurs uniques extraites. Dans un autre aspect du mode de réalisation, l'existence de la condition de sortance est calculée lorsque la table sous-jacente n'a pas été jointe par une clé correspondante parmi les clés primaires. De même, une absence de la condition de sortance est calculée (ce qui signifie que la condition de sortance n'existe pas), lorsque la table sous-jacente a été jointe par la clé correspondante parmi les clés primaires.In one aspect of the embodiment, the fanout-insensitive implementation of the aggregate function is an SQL operation, such as SUM(), AVG(), STDDEV(), or COUNT(). As such, the different, fan-out sensitive implementation of the aggregate function extracts unique values for the object from each of the multiple tables using a matching key from the primary keys and then performs the non sensitive to the fan-out of the aggregate function on the unique values extracted. In another aspect of the embodiment, the existence of the fanout condition is computed when the underlying table has not been joined by a matching one of the primary keys. Similarly, an absence of the fanout condition is computed (meaning that the fanout condition does not exist), when the underlying table has been joined by the corresponding key among the primary keys.

Dans un autre mode de réalisation de l'invention, un système de traitement de données de requête de base de données est configuré pour le calcul de fonction d'agrégation agnostique de modèle de jonction dans les opérations de requête de base de données. Le système comprend un système informatique hôte qui comprend un ou plusieurs ordinateurs, chacun avec mémoire et au moins un processeur. Le système comprend également un système de gestion de base de données relationnelle s'exécutant dans la mémoire de l'ordinateur et agissant sur une multiplicité de tables différentes dans une ou plusieurs bases de données stockées dans un stockage fixe couplé au système informatique hôte. Le système comprend en outre un module de calcul de fonction d'agrégation agnostique de modèle de jonction qui comprend des instructions de programme informatique s'exécutant dans la mémoire du système informatique hôte.In another embodiment of the invention, a database query data processing system is configured for junction model agnostic aggregation function computation in database query operations. The system includes a host computer system that includes one or more computers, each with memory and at least one processor. The system also includes a relational database management system running in computer memory and operating on a multiplicity of different tables in one or more databases stored in fixed storage coupled to the host computer system. The system further includes a junction model agnostic aggregation function calculation module that includes computer program instructions executing in memory of the host computer system.

À cet égard, les instructions de programme permettent pendant l'exécution dans la mémoire de l'ordinateur le chargement d’un document de code source dans la mémoire, l’analyse du document de code source pour identifier différentes opérations de requête de base de données et répondre à l'identification d'une fonction d’agrégation dans l’une des différentes opérations de requête de base de données dans laquelle des enregistrements dans des tables multiples sont jointes ensemble dans une jonction de table. La réponse comprend la récupération dans la mémoire de l'ordinateur d'une multiplicité de clés primaires, chacune correspondant à une table différente parmi les tables multiples et également un objet de l'une des tables référencé par la fonction d’agrégation identifiée. La réponse comprend en outre le calcul d’une existence d'une condition de sortance associée à la jonction de table. Enfin, la réponse comprend, à la condition que la condition sortance ne soit pas calculée, l'invocation d'une implémentation non sensible à la sortance de la fonction d’agrégation par rapport à l'objet, mais à l’inverse à condition que la condition de sortance soit calculée, l'invocation d'une implémentation sensible à la sortance, différente, de la fonction d’agrégation par rapport à l'objet.In this regard, program instructions allow during execution in computer memory the loading of a source code document into memory, the analysis of the source code document to identify different basic query operations of data and respond to the identification of an aggregate function in one of several database query operations in which records in multiple tables are joined together in a table join. The response includes retrieving from computer memory a plurality of primary keys, each corresponding to a different one of the multiple tables and also an object from one of the tables referenced by the identified aggregate function. The response further includes calculating an existence of a fan-out condition associated with the table join. Finally, the response includes, provided the fanout condition is not computed, invoking a fanout-insensitive implementation of the aggregate function with respect to the object, but conversely provided that the fanout condition is computed, the invocation of a different, fanout-aware implementation of the aggregate function against the object.

D'autres aspects de l'invention seront exposés en partie dans la description qui suit et en partie seront évidents dans la description, ou pourront être appris par la pratique de l'invention. Les aspects de l'invention seront réalisés et atteints au moyen des éléments et combinaisons particulièrement indiqués dans les revendications en annexe. Il est entendu que la description générale qui précède et la description détaillée qui suit sont toutes deux données à titre d’exemple et explicatives et ne sont pas restrictives à l'égard de l'invention, telle que revendiquée.Other aspects of the invention will be set forth in part in the description which follows and in part will be obvious from the description, or may be learned by practice of the invention. The aspects of the invention will be realized and achieved by means of the elements and combinations particularly indicated in the appended claims. It is understood that the foregoing general description and the following detailed description are both exemplary and explanatory and are not restrictive of the invention as claimed.

Les dessins accompagnant, qui sont incorporés dans le présent fascicule et en font partie intégrante, illustrent des modes de réalisation de l'invention et servent, avec la description, à expliquer les principes de l'invention. Les modes de réalisation illustrés ici sont actuellement préférés, étant entendu, toutefois, que l'invention ne se limite pas aux arrangements précis et aux instruments montrés, dans lesquels :The accompanying drawings, which are incorporated into and form part of this specification, illustrate embodiments of the invention and serve, together with the description, to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instruments shown, in which:

La figure 1 illustre de manière imagée un procédé de calcul de fonction d'agrégation agnostique de modèle de jonction dans des opérations de requête de base de données ; Figure 1 pictorially illustrates a method of calculating junction model agnostic aggregation function in database query operations;

La figure 2 est une illustration schématique d'un système de traitement de données de requête de base de données configuré pour le calcul de fonction d'agrégation agnostique de modèle de jonction dans des opérations de requête de base de données ; et, Figure 2 is a schematic illustration of a database query data processing system configured for junction model agnostic aggregate function computation in database query operations; And,

La figure 3 est un organigramme illustrant un procédé de calcul de fonction d'agrégation agnostique de modèle de jonction dans des opérations de requête de base de données. Figure 3 is a flowchart illustrating a method of calculating junction model agnostic aggregation function in database query operations.

Les modes de réalisation de l'invention permettent le calcul de fonction d'agrégation agnostique de modèle de jonction dans des opérations de requête de bases de données. Conformément à un mode de réalisation de l'invention, un document de code source est reçu en mémoire d'un ordinateur et analysé afin d'identifier une multiplicité d'opérations de requête de base de données. Une fonction d’agrégation associée à une jonction de table est détectée parmi les opérations de requête de base de données et, en réponse à la détection de la fonction d’agrégation associée à la jonction de table, une table soumise à la jonction de table est identifiée avec sa clé primaire. Sur la base de la table sous-jacente, une condition de sortance est déterminée comme existante ou non sur la base du fait que la table sous-jacente a été jointe ou non par la clé primaire. Dans le cas où une condition de sortance est déterminée comme n'existant pas, une implémentation non sensible à la sortance, standard, de la fonction d'agrégation est invoquée, mais à l’inverse, la clé primaire est utilisée pour calculer une forme sensible à la sortance de la fonction d'agrégation. De cette façon, un résultat correct de la fonction d'agrégation est garanti sans connaître a priori un modèle de jonction qui pré-conditionne la fonction d'agrégation.Embodiments of the invention enable junction model agnostic aggregate function computation in database query operations. In accordance with one embodiment of the invention, a source code document is received in memory from a computer and analyzed to identify a plurality of database query operations. An aggregate function associated with a table join is detected among database query operations and, in response to the detection of the aggregate function associated with the table join, a table submitted to the table join is identified with its primary key. Based on the underlying table, a fan-out condition is determined to exist or not based on whether the underlying table has been joined by the primary key or not. In the case where a fan-out condition is determined not to exist, a standard, non-fanout-sensitive implementation of the aggregate function is invoked, but conversely, the primary key is used to compute a form sensitive to the fan-out of the aggregate function. In this way, a correct result of the aggregation function is guaranteed without knowing a priori a junction model which preconditions the aggregation function.

Dans une illustration supplémentaire, la figure 1 illustre de manière imagée un procédé de calcul de fonction d'agrégation agnostique de modèle de jonction dans les opérations de requête de base de données. Comme le montre la figure 1, la logique 190 de traitement de fonction d'agrégation agnostique de modèle de jonction traite le code source 100 incorporant une abstraction de SQL et situé à l'intérieur, une forme abstraite d'une invocation d'une fonction d'agrégation abstraite 120 d'une fonction d’agrégation SQL 160 agissant sur un objet 130 de une ou plusieurs tables 150 d'une base de données 140. La fonction d’agrégation abstraite 120 peut être incluse dans le code source 100 en relation avec une opération de jonction de table joignant une ou plusieurs des tables 150 y compris une table sous-jacente parmi les tables 150 comprenant l'objet 130.In a further illustration, Figure 1 pictorially illustrates a method of junction model agnostic aggregation function computation in database query operations. As shown in Figure 1, the junction model agnostic aggregation function processing logic 190 processes source code 100 incorporating an abstraction of SQL and located therein, an abstract form of a function invocation. abstract aggregation 120 of an SQL aggregation function 160 acting on an object 130 of one or more tables 150 of a database 140. The abstract aggregation function 120 can be included in the source code 100 in relation with a join table operation joining one or more of the tables 150 including an underlying table among the tables 150 comprising the object 130.

En tant que telle, la logique 190 de traitement de fonction d'agrégation agnostique de modèle de jonction calcule si la jonction de table de l'opération produit ou non une condition de sortance. Par exemple, la logique 190 de traitement de fonction d'agrégation agnostique de modèle de jonction identifie la table sous-jacente parmi les tables 150 pour l'objet 130 de la fonction d'agrégation abstraite 120 et détermine si la table sous-jacente parmi les tables 150 a été jointe ou non dans la jonction de table par une clé primaire 180 correspondant à la table sous-jacente parmi les tables 150. Plus précisément, la nature de chaque jonction dans la requête est examinée de manière à catégoriser la jonction comme effectuant une sortance de la requête ou non, selon qu'une clé unique est détectée sur un côté de la jonction. Le côté quelconque de la jonction qui possède une clé unique est considéré comme ledit côté. Cependant, chaque fois que les deux côtés de la jonction ont chacun une clé unique, on peut conclure qu'il existe une jonction "une-à-une" et qu'aucune condition de sortance n'est trouvée.As such, the join model agnostic aggregation function processing logic 190 calculates whether or not the table join of the operation produces a fan-out condition. For example, junction model agnostic aggregate function processing logic 190 identifies the underlying table among tables 150 for object 130 of abstract aggregate function 120 and determines whether the underlying table among the tables 150 has been joined or not in the table join by a primary key 180 corresponding to the underlying table among the tables 150. Specifically, the nature of each join in the query is examined so as to categorize the join as Fanout the query or not, depending on whether a unique key is detected on one side of the junction. Any side of the junction that has a unique key is considered to be that side. However, whenever both sides of the junction each have a unique key, it can be concluded that a "one-to-one" junction exists and no fan-out condition is found.

Cependant, si une clé unique ne peut pas être détectée d’un côté de la jonction ou de l'autre côté de la jonction, la jonction ne peut pas être facilement classée comme condition d’absence de sortance et la jonction est supposée avoir produit une condition de sortance, même si la possibilité demeure qu'aucune condition de sortance n'existe. Si c'est le cas, la jonction est marquée comme sortance et après que chaque jonction a été marquée comme effectuant une sortance sur un côté ou l’autre, l'arbre de jonction pour la jonction est parcouru pour détecter quelles tables n’ont pas effectué de sortance globalement dans la requête. Seules les tables qui n'apparaissent jamais sur un côté d'un "plusieurs-à-un" ou d'un "un-à-plusieurs" sont considérés comme n'ayant pas effectué de sortance. Si c'est le cas, aucune condition de sortance n'est calculée. Dans le cas contraire, la logique 190 de traitement de fonction d'agrégation agnostique de modèle de jonction calcule une condition de sortance sans tenir compte du modèle de jonction sous-jacent de la jonction de table.However, if a unique key cannot be detected on one side of the junction or on the other side of the junction, the junction cannot be easily classified as a no fan-out condition and the junction is assumed to have produced a fan-out condition, although the possibility remains that no fan-out condition exists. If so, the junction is marked as fan-out and after each junction has been marked as fan-out to one side or the other, the junction tree for the junction is traversed to detect which tables have not not perform fan-out globally in the query. Only tables that never appear on a side of a "many-to-one" or a "one-to-many" are considered to have no fanout. If so, no fan-out condition is calculated. Otherwise, the junction model agnostic aggregation function processing logic 190 calculates a fan-out condition without regard to the underlying junction model of the table junction.

A la condition que la logique 190 de traitement de fonction d'agrégation agnostique de modèle de jonction ne calcule pas une condition de sortance, la logique 190 de traitement de fonction d'agrégation agnostique de modèle de jonction invoque simplement une fonction d'agrégation SQL réelle 160 pour la fonction agrégation abstraite 120 sur l'objet 130. Mais, à la condition que la logique 190 de traitement de fonction d'agrégation agnostique de modèle de jonction calcule une condition de sortance, la logique 190 de traitement de fonction d'agrégation agnostique de modèle de jonction prétraite l'objet 130 dans une fonction d'agrégation sensible à la sortance 170 avant d'invoquer la fonction d'agrégation SQL 160 en extrayant tout d'abord des tables jointes parmi les tables 150 dans un ensemble d’enregistrements résultants, des enregistrements correspondant à des valeurs uniques pour l'objet 130 selon la clé primaire 180. Par la suite, la fonction d'agrégation sensible à la sortance 170 invoque la fonction d'agrégation SQL 160 sur l'ensemble d’enregistrements résultants.Provided that the junction model agnostic aggregate function processing logic 190 does not compute a fan-out condition, the junction model agnostic aggregate function processing logic 190 simply invokes an SQL aggregate function real 160 for the abstract aggregation function 120 on the object 130. But, provided that the junction model agnostic aggregation function processing logic 190 calculates a fan-out condition, the function processing logic 190 of join model agnostic aggregation preprocesses the object 130 in a fan-out sensitive aggregate function 170 before invoking the SQL aggregate function 160 by first extracting joined tables from among the 150 tables in a set of 'resulting records, records corresponding to unique values for the object 130 according to the primary key 180. Subsequently, the fan-out sensitive aggregation function 170 inv oque the SQL 160 aggregate function on the result set of records.

Le procédé décrit en relation avec la figure 1 peut être mis en œuvre dans un système de traitement de données de requêtes de base de données. Dans une autre illustration, la figure 2 montre schématiquement un système de traitement de données de requête de base de données configuré pour le calcul de fonction d'agrégation agnostique de modèle de jonction dans des opérations de requête de base de données. Le système comprend un système informatique hôte 240 qui comprend un ou plusieurs ordinateurs, chacun avec mémoire et au moins un processeur. Le système informatique hôte 240 prend en charge l’opération d'un système de gestion de base de données relationnelle (SGBDR) 280 gérant l'accès aux enregistrements dans différentes tables 260 d'une ou plusieurs bases de données 250, chaque enregistrement comprenant une clé primaire 270. Le système informatique hôte 240 est couplé de manière communicative par l'intermédiaire du réseau de communication informatique 230 à différents dispositifs informatiques clients 210 fournissant des interfaces utilisateur 220 respectives pour invoquer différentes opérations de requête de base de données dans le SGBDR 280 sur les tables 260 de la ou des bases de données 250, comprenant une ou plusieurs fonctions d’agrégation SQL 200 telles que SUM(), COUNT(), AVG() et STDDEV ().The method described in relation to FIG. 1 can be implemented in a database query data processing system. In another illustration, Figure 2 schematically shows a database query data processing system configured for junction model agnostic aggregation function computation in database query operations. The system includes a host computer system 240 which includes one or more computers, each with memory and at least one processor. The host computer system 240 supports the operation of a relational database management system (RDBMS) 280 managing access to records in different tables 260 of one or more databases 250, each record comprising a primary key 270. Host computer system 240 is communicatively coupled via computer communication network 230 to different client computing devices 210 providing respective user interfaces 220 for invoking different database query operations in RDBMS 280 on the tables 260 of the database(s) 250, comprising one or more SQL aggregation functions 200 such as SUM(), COUNT(), AVG() and STDDEV().

Notamment, le système comprend un module de fonction d'agrégation agnostique de modèle de jonction 300. Le module 300 comprend des instructions de programme informatique permettant lors de l'exécution dans la mémoire du système informatique hôte 240 l’analyse d’un document de code source 290A d’instructions de requête de base de données SQL abstraites afin d'y identifier une fonction d'agrégation abstraite 290C pour une fonction correspondante parmi les fonction d'agrégation SQL 200, pour un objet dans une des tables 260 incluses comme partie d'une table jointe 290B. En réponse à cette identification, les instructions de programme du module 300 permettent le calcul, qu'il y ait ou non une condition de sortance. Par exemple, ce calcul peut se faire en identifiant une table sous-jacente parmi les tables 260 jointes par la table jointe 260 pour l'objet qui fait l'objet de la fonction d’agrégation abstraite 290C, et pour déterminer si la table sous-jacente a été jointe ou non selon la clé correspondante parmi les clés 270. Si ce n'est pas le cas, une condition de sortance est calculée.In particular, the system comprises a junction model agnostic aggregation function module 300. The module 300 comprises computer program instructions allowing during execution in the memory of the host computer system 240 the analysis of a document of source code 290A of abstract SQL database query statements in order to identify therein an abstract aggregate function 290C for a corresponding function among the SQL aggregate functions 200, for an object in one of the tables 260 included as part of an attached table 290B. In response to this identification, module 300 program instructions enable the calculation whether or not there is a fan-out condition. For example, this calculation can be done by identifying an underlying table among the tables 260 joined by the joined table 260 for the object which is the subject of the abstract aggregation function 290C, and to determine if the table under -jacent has been joined or not according to the corresponding key among the 270 keys. If not, a fan-out condition is calculated.

Les instructions de programme du module 300 permettent encore, lors du calcul une condition de sortance, d’invoquer une implémentation sensible à la sortance de la fonction d'agrégation 290C par rapport à l'objet. L'implémentation sensible à la sortance extrait d'abord des tables jointes parmi les tables 260 les enregistrements avec des valeurs uniques de l'objet avant d'invoquer la fonction correspondante parmi les fonctions d'agrégation SQL réelles sur les enregistrements extraits. Mais, à l’inverse, à condition que la condition de sortance ne soit pas calculée, la fonction correspondante parmi les fonctions d'agrégation SQL peut être invoquée directement sur l'objet de la table sous-jacente parmi les tables.The module 300 program instructions still allow, when computing a fan-out condition, to invoke a fan-out sensitive implementation of the aggregation function 290C with respect to the object. The fanout-aware implementation first extracts from the joined tables out of the 260 tables the records with unique values of the object before invoking the corresponding function out of the actual SQL aggregate functions on the extracted records. But, conversely, provided the fan-out condition is not computed, the corresponding function among SQL aggregate functions can be invoked directly on the underlying table object among tables.

Dans une illustration encore plus détaillée du fonctionnement du module de fonction d'agrégation agnostique de modèle de jonction 300, la figure 3 est un organigramme illustrant un procédé de calcul de fonction d'agrégation agnostique de modèle de jonction dans des opérations de requête de base de données. A partir du bloc 305, le code source représentatif d'une forme abstraite de différentes opérations de requête de base de données SQL est chargé dans la mémoire d'un ordinateur et dans le bloc 310, le code source est analysé pour identifier différentes formes abstraites d'une ou plusieurs fonctions d’agrégation SQL. Dans le bloc de décision 315, on détermine si une forme abstraite localisée d'une fonction d'agrégation SQL agit ou non sur un objet d'une table soumise à une opération de jonction de table. Si ce n’est pas le cas, dans le bloc de décision 320, tant qu'il reste des opérations de requête supplémentaires à traiter dans le code source, le procédé retourne au bloc 310. Sinon, le procédé se termine dans le bloc 355.In an even more detailed illustration of the operation of the junction model agnostic aggregation function module 300, Figure 3 is a flowchart illustrating a method of calculating the junction model agnostic aggregation function in basic query operations of data. From block 305, source code representative of an abstract form of various SQL database query operations is loaded into computer memory and at block 310, the source code is parsed to identify various abstract forms. one or more SQL aggregate functions. In decision block 315, it is determined whether or not a localized abstract form of an SQL aggregate function operates on an object of a table subject to a join table operation. If not, in decision block 320, while there are additional request operations to be processed in the source code, the method returns to block 310. Otherwise, the method ends in block 355 .

Dans le bloc de décision 315, s'il est déterminé qu'une forme abstraite localisée d'une fonction d'agrégation SQL agit sur un objet d'une table soumise à une opération de jonction de table, dans le bloc 325, l'objet sur lequel agit la forme abstraite de la fonction d'agrégation SQL est déterminé et dans le bloc 330, une table sous-jacente pour cet objet est identifiée. Dans le bloc 335, une clé primaire pour la table sous-jacente est récupérée et dans le bloc de décision 340, il est déterminé si la table sous-jacente a été jointe ou non dans l'opération de jonction de table à l'aide de la clé primaire récupérée. Si c'est le cas, dans le bloc 345, la forme SQL de la fonction d’agrégation abstraite est invoquée sur l'objet. Mais, dans le cas où il est déterminé que la table sous-jacente a été jointe dans l'opération de jonction de table sans utiliser la clé primaire, dans le bloc 350 une implémentation sensible à la sortance de la forme SQL de la fonction d'agrégation abstraite est invoquée en prétraitant d'abord les tables jointes pour enregistrer des valeurs uniques des objets et ensuite, dans le bloc 345 la forme SQL de la fonction d’agrégation abstraite est invoquée sur les enregistrements des tables pré-traitées. De cette façon, la forme SQL de la fonction d'agrégation abstraite peut être invoquée sans tenir compte de la connaissance a priori du modèle de jonction de la jonction de table indiquant une condition de sortance.In decision block 315, if it is determined that a localized abstract form of an SQL aggregate function acts on an object of a table subject to a table join operation, in block 325, the object on which the abstract form of the SQL aggregate function operates is determined and in block 330, a base table for that object is identified. In block 335 a primary key for the underlying table is retrieved and in decision block 340 it is determined whether or not the underlying table was joined in the join table operation using of the recovered primary key. If so, in block 345, the SQL form of the abstract aggregate function is invoked on the object. But, in the event that it is determined that the underlying table was joined in the join table operation without using the primary key, in block 350 a fan-out sensitive implementation of the SQL form of the function d The abstract aggregation is invoked by first preprocessing the joined tables to record unique object values and then, in block 345, the SQL form of the abstract aggregation function is invoked on the records of the preprocessed tables. This way, the SQL form of the abstract aggregate function can be invoked without regard to a priori knowledge of the join pattern of the table join indicating a fan-out condition.

La présente invention peut être incorporée dans un système, un procédé, un programme informatique ou toute combinaison de ceux-ci. Le programme informatique peut comprendre un support de stockage lisible par ordinateur ou un support sur lequel se trouvent des instructions de programme lisibles par ordinateur pour amener un processeur à exécuter des aspects de la présente invention. Le support de stockage lisible par ordinateur peut être un dispositif tangible qui peut conserver et stocker des instructions à utiliser par un dispositif d'exécution d'instructions. Le support de stockage lisible par ordinateur peut être, par exemple, un dispositif de stockage électronique, un dispositif de stockage magnétique, un dispositif de stockage optique, un dispositif de stockage électromagnétique, un dispositif de stockage semi-conducteur ou toute combinaison appropriée de ce qui précède, sans toutefois s'y limiter.The present invention may be embodied in a system, method, computer program, or any combination thereof. The computer program may include a computer-readable storage medium or a medium on which are located computer-readable program instructions to cause a processor to perform aspects of the present invention. The computer-readable storage medium can be a tangible device that can retain and store instructions for use by an instruction executing device. The computer-readable storage medium may be, for example, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. foregoing, but not limited to.

Les instructions de programme lisibles par ordinateur décrites ici peuvent être téléchargées à partir d'un support de stockage lisible par ordinateur ou sur un ordinateur externe ou un périphérique de stockage externe via un réseau, sur les dispositifs de calcul/traitement respectifs. Les instructions lisibles par ordinateur peuvent être exécutées entièrement sur l'ordinateur de l'utilisateur, en partie sur l'ordinateur de l'utilisateur, en tant que progiciel autonome, en partie sur l'ordinateur de l'utilisateur et en partie sur un ordinateur distant ou entièrement sur l'ordinateur ou le serveur distant. Certains aspects de la présente invention sont décrits ici à l'aide d'organigrammes et/ou de schémas fonctionnels de procédés, d'appareils (systèmes) et de produits de programmes informatiques sur la base des modes de réalisation de l'invention. Il est entendu que chaque bloc des organigrammes et/ou des schémas fonctionnels, ainsi que les combinaisons de blocs des organigrammes et/ou des schémas fonctionnels, peuvent être réalisés au moyen d'instructions de programme lisibles par ordinateur.The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium or onto an external computer or external storage device via a network to the respective computing/processing devices. The computer-readable instructions may be executed wholly on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer, and partly on a remote computer or entirely on the remote computer or server. Certain aspects of the present invention are described herein using flowcharts and/or block diagrams of methods, apparatus (systems), and computer program products based on embodiments of the invention. It is understood that each block of the flowcharts and/or block diagrams, as well as combinations of blocks of the flowcharts and/or block diagrams, can be realized by means of computer readable program instructions.

Ces instructions de programme lisibles par ordinateur peuvent être fournies à un processeur d'un ordinateur à usage général, d'un ordinateur à usage spécifique ou d'un autre appareil de traitement de données programmable pour produire une machine, de sorte que les instructions, qui sont exécutées par l'intermédiaire du processeur de l'ordinateur ou d'un autre appareil de traitement de données programmable, créent des moyens pour exécuter les fonctions/actions spécifiées dans le ou les blocs des organigrammes et/ou des schémas fonctionnels. Ces instructions de programme lisibles par ordinateur peuvent également être stockées dans un support de stockage lisible par ordinateur qui peut diriger un ordinateur, un appareil de traitement de données programmable et/ou d'autres dispositifs pour fonctionner d'une manière particulière, de sorte que le support de stockage lisible par ordinateur dans lequel sont stockées des instructions comprend un article de fabrication comprenant des instructions qui exécutent des aspects des fonctions/actions spécifiées dans le ou les blocs des organigrammes et/ou des schémas fonctionnels.These computer readable program instructions may be supplied to a processor of a general purpose computer, special purpose computer or other programmable data processing device to produce a machine, such that the instructions, which are executed through the computer processor or other programmable data processing device, create means to perform the functions/actions specified in the block(s) of the flowcharts and/or block diagrams. These computer-readable program instructions may also be stored in a computer-readable storage medium which may direct a computer, programmable data processing apparatus, and/or other devices to operate in a particular manner, so that the computer-readable storage medium in which instructions are stored comprises an article of manufacture comprising instructions which perform aspects of the functions/actions specified in the block(s) of the flowcharts and/or block diagrams.

Les instructions de programme lisibles par ordinateur peuvent également être chargées sur un ordinateur, un autre appareil de traitement de données programmable ou un autre dispositif pour provoquer l'exécution d'une série d'étapes opérationnelles sur l'ordinateur, un autre appareil programmable ou un autre dispositif pour produire un procédé exécuté par ordinateur, de sorte que les instructions qui exécutent sur l'ordinateur, un autre appareil programmable ou un autre dispositif mettent en œuvre les fonctions/actions indiquées dans le ou les blocs des organigrammes et/ou des schémas fonctionnels.The computer-readable program instructions may also be loaded into a computer, other programmable data processing device, or other device to cause a series of operational steps to be performed on the computer, other programmable device, or another device to produce a computer-executed process, such that the instructions that execute on the computer, other programmable device, or other device implement the functions/actions indicated in the block(s) of the flowcharts and/or block diagrams.

L'organigramme et les schémas fonctionnels présentés dans les figures illustrent l'architecture, la fonctionnalité et le fonctionnement d'implémentations possibles de systèmes, de procédés et de produits de programmes informatiques sur la base des diverses modes de réalisation de la présente invention. À cet égard, chaque bloc de l'organigramme ou des schémas fonctionnels peut représenter un module, un segment ou une partie d'instructions, qui comprend une ou plusieurs instructions exécutables pour mettre en œuvre la ou les fonctions logiques spécifiées. Dans certaines implémentations alternatives, les fonctions notées dans le bloc peuvent se produire dans l'ordre indiqué dans les figures. Par exemple, deux blocs montrés successivement peuvent, en fait, être exécutés sensiblement simultanément, ou les blocs peuvent parfois être exécutés dans l'ordre inverse, sur la base de la fonctionnalité impliquée. Il convient également de noter que chaque bloc des schémas fonctionnels et/ou des organigrammes, et les combinaisons de blocs des schémas fonctionnels et/ou des organigrammes, peuvent être mis en œuvre par des systèmes matériels spéciaux qui effectue les fonctions ou les actes spécifiés ou exécutent des combinaisons de matériel spécial et d'instructions informatiques.The flowchart and block diagrams presented in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products based on the various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment or part of instructions, which includes one or more executable instructions to implement the specified logical function(s). In some alternative implementations, the functions noted in the block may occur in the order shown in the figures. For example, two blocks shown in succession may, in fact, be executed substantially simultaneously, or the blocks may sometimes be executed in reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and/or flowcharts, and combinations of blocks of the block diagrams and/or flowcharts, may be implemented by special hardware systems that perform the specified functions or acts or execute combinations of special equipment and computer instructions.

Il sera en outre entendu que les termes "comprend" et/ou "comprenant", lorsqu'ils sont utilisés dans la présente spécification, précisent la présence de caractéristiques, entiers, étapes, opérations, éléments et/ou composants indiqués, mais n'excluent pas la présence ou l'ajout d'une ou plusieurs autres caractéristiques, entiers, étapes, opérations, éléments, composants et/ou groupes de ceux-ci.It will be further understood that the terms "comprises" and/or "comprising", when used in this specification, indicate the presence of indicated characteristics, integers, steps, operations, elements and/or components, but do not do not exclude the presence or addition of one or more other characteristics, integers, steps, operations, elements, components and/or groups thereof.

La description de la présente invention a été présentée à des fins d'illustration et de description, mais ne se veut pas exhaustive ou limitée à l'invention sous la forme divulguée. De nombreuses modifications et variations seront apparentes aux hommes du métier sans s'écarter de la portée et de l'esprit de l'invention. Le mode de réalisation a été choisi et décrit afin d'expliquer au mieux les principes de l'invention et son application pratique, et de permettre à d'autres hommes du métier de comprendre l'invention pour diverses modes de réalisation avec diverses modifications adaptées à l'usage particulier envisagé.The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the invention. The embodiment has been selected and described in order to best explain the principles of the invention and its practical application, and to enable others skilled in the art to understand the invention for various embodiments with various suitable modifications. for the particular intended use.

Claims (15)

Procédé de calcul d'une fonction d'agrégation agnostique de modèle de jonction comprenant les étapes consistant à :
le chargement d’un document de code source dans une mémoire d'un ordinateur ;
l’analyse du document de code source pour identifier différentes opérations de requête de base de données ; et,
en réponse à une identification d'une fonction d'agrégation dans l'une des différentes opérations de requête de base de données dans laquelle des enregistrements dans des tables multiples sont joints ensemble dans une jonction de table, l’exécution des étapes consistant à :
la récupération dans la mémoire de l'ordinateur d’une multiplicité de clés primaires, chacune correspondant à une table différente parmi les tables multiples et également un objet de l'une des tables référencé par la fonction d'agrégation identifiée ;
le calcul d’une existence d'une condition de sortance associée à la jonction de table ; et,
à condition que la condition de sortance ne soit pas calculée, l’invocation d’une implémentation non sensible à la sortance de la fonction d’agrégation par rapport à l'objet, mais à l’inverse à condition que la condition de sortance soit calculée, l’invocation d’une implémentation sensible à la sortance, différente, de la fonction d’agrégation par rapport à l'objet.
A method of calculating a junction model agnostic aggregation function comprising the steps of:
loading a source code document into a memory of a computer;
analyzing the source code document to identify different database query operations; And,
in response to an identification of an aggregate function in one of several database query operations in which records in multiple tables are joined together in a table join, performing the steps of:
retrieving from computer memory a plurality of primary keys, each corresponding to a different one of the multiple tables and also an object of one of the tables referenced by the identified aggregation function;
calculating an existence of a fan-out condition associated with the table join; And,
provided the fanout condition is not computed, invoking a fanout-insensitive implementation of the aggregate function with respect to the object, but conversely provided the fanout condition is computed, the invocation of a different, fanout-sensitive implementation of the aggregate function against the object.
Procédé selon la revendication 1, dans lequel l'implémentation non sensible à la sortance de la fonction d'agrégation est une opération de langage de requête structuré (SQL), et dans lequel l'implémentation sensible à la sortance, différente, de la fonction d'agrégation extrait des valeurs uniques pour l'objet de chacune des tables multiples en utilisant une clé correspondante parmi les clés primaires et effectue ensuite l'implémentation non sensible à la sortance de la fonction d'agrégation sur les valeurs uniques extraites.The method of claim 1, wherein the fanout-insensitive implementation of the aggregate function is a Structured Query Language (SQL) operation, and wherein the different, fanout-sensitive implementation of the aggregate function The aggregation function extracts unique values for the object from each of the multiple tables using a matching key from the primary keys and then performs the fan-out-sensitive implementation of the aggregation function on the extracted unique values. Procédé selon la revendication 2, dans lequel l'opération SQL est une opération SQL choisie dans le groupe constitué par SUM(), AVG(), STDDEV() et COUNT().A method according to claim 2, wherein the SQL operation is an SQL operation selected from the group consisting of SUM(), AVG(), STDDEV() and COUNT(). Procédé selon la revendication 1, dans lequel l'existence de la condition de sortance est calculée lorsque la table sous-jacente n'a pas été jointe par une clé correspondante parmi les clés primaires et une absence de la condition de sortance est calculée lorsque la table sous-jacente a été jointe par la clé correspondante parmi les clés primaires.A method according to claim 1, wherein the existence of the fan-out condition is calculated when the underlying table has not been joined by a matching key among the primary keys and an absence of the fan-out condition is calculated when the underlying table was joined by the corresponding key among the primary keys. Procédé selon la revendication 2, dans lequel le code source est une abstraction de langage de balisage de SQL.A method according to claim 2, wherein the source code is a markup language abstraction of SQL. Système de traitement de données de requête de base de données configuré pour le calcul d'une fonction d'agrégation agnostique de modèle de jonction dans des opérations de requête de base de données, le système comprenant :
un système informatique hôte comprenant un ou plusieurs ordinateurs, chacun avec mémoire et au moins un processeur ;
un système de gestion de base de données relationnelle s'exécutant dans la mémoire de l'ordinateur et agissant sur une multiplicité de tables différentes dans une ou plusieurs bases de données stockées dans un stockage fixe couplé au système informatique hôte ; et,
un module de calcul de fonction d'agrégation agnostique de modèle de jonction comprenant des instructions de programme informatique exécutées dans la mémoire du système informatique hôte, les instructions de programme exécutant les étapes consistant à :
le chargement d’un document de code source dans la mémoire ;
l’analyse du document de code source pour identifier différentes opérations de requête de base de données ; et,
en réponse à une identification d'une fonction d'agrégation dans l'une des différentes opérations de requête de base de données dans laquelle des enregistrements dans des tables multiples sont joints ensemble dans une jonction de table, l’exécution des étapes consistant à :
la récupération dans la mémoire de l'ordinateur d’une multiplicité de clés primaires, chacune correspondant à une table différente parmi les tables multiples et également un objet de l'une des tables référencé par la fonction d'agrégation identifiée ;
le calcul d’une existence d'une condition de sortance associée à la jonction de table ; et,
à condition que la condition de sortance ne soit pas calculée, l’invocation d’une implémentation non sensible à la sortance de la fonction d’agrégation par rapport à l'objet, mais à l’inverse à condition que la condition de sortance soit calculée, l’invocation d’une implémentation sensible à la sortance, différente, de la fonction d’agrégation par rapport à l'objet.
A database query data processing system configured for computing a junction model agnostic aggregation function in database query operations, the system comprising:
a host computer system comprising one or more computers, each with memory and at least one processor;
a relational database management system executing in computer memory and operating on a multiplicity of different tables in one or more databases stored in fixed storage coupled to the host computer system; And,
a junction model agnostic aggregation function calculation module comprising computer program instructions executed in the memory of the host computer system, the program instructions executing the steps of:
loading a source code document into memory;
analyzing the source code document to identify different database query operations; And,
in response to an identification of an aggregate function in one of several database query operations in which records in multiple tables are joined together in a table join, performing the steps of:
retrieving from computer memory a plurality of primary keys, each corresponding to a different one of the multiple tables and also an object of one of the tables referenced by the identified aggregation function;
calculating an existence of a fan-out condition associated with the table join; And,
provided the fanout condition is not computed, invoking a fanout-insensitive implementation of the aggregate function with respect to the object, but conversely provided the fanout condition is computed, the invocation of a different, fanout-sensitive implementation of the aggregate function against the object.
Système selon la revendication 6, dans lequel l'implémentation non sensible à la sortance de la fonction d'agrégation est une opération de langage de requête structuré (SQL), et dans lequel l'implémentation sensible à la sortance, différente, de la fonction d'agrégation extrait des valeurs uniques pour l'objet de chacune des tables multiples en utilisant une clé correspondante parmi les clés primaires et effectue ensuite l'implémentation non sensible à la sortance de la fonction d'agrégation sur les valeurs uniques extraites.The system of claim 6, wherein the fanout-insensitive implementation of the aggregate function is a Structured Query Language (SQL) operation, and wherein the different, fanout-sensitive implementation of the aggregate function The aggregation function extracts unique values for the object from each of the multiple tables using a matching key from the primary keys and then performs the fan-out-sensitive implementation of the aggregation function on the extracted unique values. Système selon la revendication 7, dans lequel l'opération SQL est une opération SQL choisie dans le groupe constitué par SUM(), AVG(), STDDEV() et COUNT().A system according to claim 7, wherein the SQL operation is an SQL operation selected from the group consisting of SUM(), AVG(), STDDEV() and COUNT(). Système selon la revendication 6, dans lequel l'existence de la condition de sortance est calculée lorsque la table sous-jacente n'a pas été jointe par une clé correspondante parmi les clés primaires et une absence de la condition de sortance est calculée lorsque la table sous-jacente a été jointe par la clé correspondante parmi les clés primaires.A system according to claim 6, wherein the existence of the fan-out condition is calculated when the underlying table has not been joined by a matching key among the primary keys and an absence of the fan-out condition is calculated when the underlying table was joined by the corresponding key among the primary keys. Système selon la revendication 7, dans lequel le code source est une abstraction de langage de balisage de SQL.A system according to claim 7, wherein the source code is a markup language abstraction of SQL. Produit de programme informatique pour calculer une fonction d'agrégation agnostique de modèle de jonction, le produit de programme informatique comprenant un support de stockage lisible par ordinateur ayant des instructions de programme incorporées avec celui-ci, les instructions de programme exécutables par un dispositif pour amener le dispositif à exécuter un procédé comprenant les étapes consistant à :
le chargement d’un document de code source dans une mémoire d'un ordinateur ;
l’analyse du document de code source pour identifier différentes opérations de requête de base de données ; et,
en réponse à une identification d'une fonction d'agrégation dans l'une des différentes opérations de requête de base de données dans laquelle des enregistrements dans des tables multiples sont joints ensemble dans une jonction de table, l’exécution des étapes consistant à :
la récupération dans la mémoire de l'ordinateur d’une multiplicité de clés primaires, chacune correspondant à une table différente parmi les tables multiples et également un objet de l'une des tables référencé par la fonction d'agrégation identifiée ;
le calcul d’une existence d'une condition de sortance associée à la jonction de table ; et,
à condition que la condition de sortance ne soit pas calculée, l’invocation d’une implémentation non sensible à la sortance de la fonction d’agrégation par rapport à l'objet, mais à l’inverse à condition que la condition de sortance soit calculée, l’invocation d’une implémentation sensible à la sortance, différente, de la fonction d’agrégation par rapport à l'objet.
A computer program product for computing a junction model agnostic aggregation function, the computer program product comprising a computer-readable storage medium having program instructions embedded therewith, the program instructions executable by a device for causing the device to perform a method comprising the steps of:
loading a source code document into a memory of a computer;
analyzing the source code document to identify different database query operations; And,
in response to an identification of an aggregate function in one of several database query operations in which records in multiple tables are joined together in a table join, performing the steps of:
retrieving from computer memory a plurality of primary keys, each corresponding to a different one of the multiple tables and also an object of one of the tables referenced by the identified aggregation function;
calculating an existence of a fan-out condition associated with the table join; And,
provided the fanout condition is not computed, invoking a fanout-insensitive implementation of the aggregate function with respect to the object, but conversely provided the fanout condition is computed, the invocation of a different, fanout-sensitive implementation of the aggregate function against the object.
Produit de programme informatique selon la revendication 11, dans lequel l'implémentation non sensible à la sortance de la fonction d'agrégation est une opération de langage de requête structuré (SQL), et dans lequel l'implémentation sensible à la sortance, différente, de la fonction d'agrégation extrait des valeurs uniques pour l'objet de chacune des tables multiples en utilisant une clé correspondante parmi les clés primaires et effectue ensuite l'implémentation non sensible à la sortance de la fonction d'agrégation sur les valeurs uniques extraites.A computer program product according to claim 11, wherein the fanout-insensitive implementation of the aggregation function is a structured query language (SQL) operation, and wherein the fanout-sensitive, different, of the aggregate function extracts unique values for the object from each of the multiple tables using a matching key among the primary keys and then performs fan-out-sensitive implementation of the aggregate function on the extracted unique values . Produit de programme informatique selon la revendication 12, dans lequel l'opération SQL est une opération SQL choisie dans le groupe constitué par SUM(), AVG(), STDDEV() et COUNT().A computer program product according to claim 12, wherein the SQL operation is an SQL operation selected from the group consisting of SUM(), AVG(), STDDEV() and COUNT(). Produit de programme informatique selon la revendication 11, dans lequel l'existence de la condition de sortance est calculée lorsque la table sous-jacente n'a pas été jointe par une clé correspondante parmi les clés primaires et une absence de la condition de sortance est calculée lorsque la table sous-jacente a été jointe par la clé correspondante parmi les clés primaires.A computer program product according to claim 11, wherein the existence of the fan-out condition is calculated when the underlying table has not been joined by a matching one of the primary keys and an absence of the fan-out condition is calculated when the underlying table has been joined by the corresponding key among the primary keys. Produit de programme informatique selon la revendication 12, dans lequel le code source est une abstraction de langage de balisage de SQL.A computer program product according to claim 12, wherein the source code is a markup language abstraction of SQL.
FR1907273A 2019-05-03 2019-07-01 JOIN MODEL AGNOSTIC AGGREGATION COMPUTATION IN DATABASE QUERY OPERATIONS Active FR3095706B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/403,492 2019-05-03
US16/403,492 US11080275B2 (en) 2019-05-03 2019-05-03 Join pattern agnostic aggregate computation in database query operations

Publications (2)

Publication Number Publication Date
FR3095706A1 true FR3095706A1 (en) 2020-11-06
FR3095706B1 FR3095706B1 (en) 2023-12-15

Family

ID=73017748

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1907273A Active FR3095706B1 (en) 2019-05-03 2019-07-01 JOIN MODEL AGNOSTIC AGGREGATION COMPUTATION IN DATABASE QUERY OPERATIONS

Country Status (3)

Country Link
US (2) US11080275B2 (en)
CA (1) CA3048699C (en)
FR (1) FR3095706B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112822284B (en) * 2021-01-22 2022-11-11 平安壹钱包电子商务有限公司 Data processing method and device based on dynamic proxy and computer equipment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991754A (en) * 1998-12-28 1999-11-23 Oracle Corporation Rewriting a query in terms of a summary based on aggregate computability and canonical format, and when a dimension table is on the child side of an outer join
US20180075102A1 (en) * 2015-03-27 2018-03-15 Entit Software Llc Optimize query based on unique attribute

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7321888B2 (en) * 2003-09-11 2008-01-22 International Business Machines Corporation Method and system for dynamic join reordering
US8359325B1 (en) * 2004-02-25 2013-01-22 Teradata Us, Inc. Determining materialized view coverage for join transactions
US7469241B2 (en) * 2004-11-30 2008-12-23 Oracle International Corporation Efficient data aggregation operations using hash tables
US7409387B2 (en) * 2005-02-28 2008-08-05 International Business Machines Corporation Materialized query table matching with query expansion
US20070061287A1 (en) * 2005-09-09 2007-03-15 Jian Le Method, apparatus and program storage device for optimizing a data warehouse model and operation
US9043273B2 (en) * 2008-04-25 2015-05-26 International Business Machines Corporation Method and apparatus for declarative data warehouse definition for object-relational mapped objects
US8332389B2 (en) * 2009-12-04 2012-12-11 International Business Machines Corporation Join order for a database query
US9082127B2 (en) * 2010-03-31 2015-07-14 Cloudera, Inc. Collecting and aggregating datasets for analysis
US20120215810A1 (en) * 2011-02-11 2012-08-23 Prometheus Research, LLC Database query mechanism using links as an aggregate base
US10169442B1 (en) * 2012-06-29 2019-01-01 Open Text Corporation Methods and systems for multi-dimensional aggregation using composition
US9805095B2 (en) * 2012-09-28 2017-10-31 Oracle International Corporation State initialization for continuous queries over archived views
US8914343B2 (en) * 2012-12-04 2014-12-16 Ca, Inc. Aggregating keys of dependent objects for a given primary object
US9292571B1 (en) * 2013-01-18 2016-03-22 Microstrategy Incorporated Joining database tables
US20140279944A1 (en) * 2013-03-15 2014-09-18 University Of Southern California Sql query to trigger translation for maintaining consistency of cache augmented sql systems
EP3550444B1 (en) * 2018-04-02 2023-12-27 Thoughtspot Inc. Query generation based on a logical data model
US11544239B2 (en) * 2018-11-13 2023-01-03 Thoughtspot, Inc. Low-latency database analysis using external data sources
US20200183916A1 (en) * 2018-12-05 2020-06-11 Humana Inc. Multidimensional Multitenant System

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991754A (en) * 1998-12-28 1999-11-23 Oracle Corporation Rewriting a query in terms of a summary based on aggregate computability and canonical format, and when a dimension table is on the child side of an outer join
US20180075102A1 (en) * 2015-03-27 2018-03-15 Entit Software Llc Optimize query based on unique attribute

Also Published As

Publication number Publication date
FR3095706B1 (en) 2023-12-15
CA3048699C (en) 2023-01-03
US11080275B2 (en) 2021-08-03
US20210334281A1 (en) 2021-10-28
US11847115B2 (en) 2023-12-19
US20200349159A1 (en) 2020-11-05
CA3048699A1 (en) 2020-11-03

Similar Documents

Publication Publication Date Title
US9928281B2 (en) Lightweight table comparison
Marcus et al. Counting with the crowd
Soliman et al. Orca: a modular query optimizer architecture for big data
JP6377622B2 (en) Data profiling using location information
US9892026B2 (en) Data records selection
US9626393B2 (en) Conditional validation rules
AU2015369723B2 (en) Identifying join relationships based on transactional access patterns
US8533732B2 (en) Landscape reorganization algorithm for dynamic load balancing
US9009138B2 (en) Transparent analytical query accelerator
US10671627B2 (en) Processing a data set
US20180349251A1 (en) Automated Root Cause Detection Using Data Flow Analysis
US10664477B2 (en) Cardinality estimation in databases
CN112912872A (en) System and method for dependency analysis in a multidimensional database environment
FR2958059A1 (en) METHOD, COMPUTER PROGRAM, AND TASK EXECUTION VALIDATION DEVICE IN EVOLUTIVE COMPUTER SYSTEMS
FR3095706A1 (en) JUNCTION MODEL AGNOSTIC AGGREGATION CALCULATION IN DATABASE QUERY OPERATIONS
US7899776B2 (en) Explaining changes in measures thru data mining
US8548980B2 (en) Accelerating queries based on exact knowledge of specific rows satisfying local conditions
FR3096477A1 (en) JUNCTION MODEL AGNOSTIC AGGREGATION CALCULATION IN DATABASE QUERY OPERATIONS
FR3079646A1 (en) COLLABORATIVE NODE OF A SUPPLY CHAIN
FR3079648A1 (en) CONTENT MESSAGE ROUTING FOR INFORMATION SHARING WITHIN A SUPPLY CHAIN
US20240143586A1 (en) Database group-by query cardinality estimation
CN113157736B (en) Query plan optimization method and system in distributed database
Miyanaga et al. A real-time 256* 256 point two-dimensional FFT single-chip processor
FR3123479A1 (en) Device and method for processing a digital model of a system
CN117992516A (en) Real-time index data query method and device and readable storage medium

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

TP Transmission of property

Owner name: GOOGLE LLC, US

Effective date: 20210318

PLFP Fee payment

Year of fee payment: 3

PLSC Publication of the preliminary search report

Effective date: 20211008

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5