FR2701322A1 - Process for parallel execution of relational database enquiries and use of this process - Google Patents

Process for parallel execution of relational database enquiries and use of this process Download PDF

Info

Publication number
FR2701322A1
FR2701322A1 FR9301320A FR9301320A FR2701322A1 FR 2701322 A1 FR2701322 A1 FR 2701322A1 FR 9301320 A FR9301320 A FR 9301320A FR 9301320 A FR9301320 A FR 9301320A FR 2701322 A1 FR2701322 A1 FR 2701322A1
Authority
FR
France
Prior art keywords
operations
local
control
nodes
propagation
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
FR9301320A
Other languages
French (fr)
Other versions
FR2701322B1 (en
Inventor
Bergsten Bjorn
Borla Salamet Pascalecha Carla
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.)
Bull SA
Original Assignee
Bull SA
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 Bull SA filed Critical Bull SA
Priority to FR9301320A priority Critical patent/FR2701322B1/en
Publication of FR2701322A1 publication Critical patent/FR2701322A1/en
Application granted granted Critical
Publication of FR2701322B1 publication Critical patent/FR2701322B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries

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)
  • Multi Processors (AREA)

Abstract

The present invention relates to a process for parallel execution of relational database enquiries within a parallel multiprocessor environment with distributed memory consisting in incorporating monitoring into the enquiry during its compilation, the monitoring being achieved by combining a set of atomic monitoring operations (lw, sw, gw, stp, sp, gp, mp) in order to construct a monitoring graph which is superimposed on the graph of the enquiry, this graph expressing the dependencies between the data through the links between the nodes (I1, I2, 3, I6) of operations and the types of sequencing dependence through builder nodes of two types (SEQ, PIPE).

Description

PROCEDE D'EXECUTION PARALLELE DE REQUETE DE BASES DE DONNEES
RELATIONNELLES ET UTILISATION DU PROCEDE.
METHOD FOR PARALLEL EXECUTION OF DATABASE QUERY
RELATIONAL AND USE OF THE PROCESS.

La présente invention concerne un procédé d'exécution parallèle de requête de bases de données relationnelles dans un environnement à multi processeurs à mémoire distribuée et l'utilisation d'un tel procédé.The present invention relates to a method for parallel execution of a request for relational databases in a multi-processor environment with distributed memory and the use of such a method.

S'il a été envisagé de traiter des requêtes de bases de données relationnelles de façon parallèle pour augmenter soit le nombre de transaction qu'il est possible de traiter par seconde, soit réduire le temps de réponse des requêtes complexes, une telle possibilité soulève des problèmes liés au contrôle nécessaire à la synchronisation des différentes parties de la requête et à la répartition du travail entre les différents processeurs d'une machine multi processeurs parallèles à mémoire distribuée. If it has been envisaged to process relational database requests in parallel to increase either the number of transactions that it is possible to process per second, or reduce the response time of complex requests, such a possibility raises problems related to the control necessary for the synchronization of the different parts of the request and the distribution of work between the different processors of a machine with multiple parallel processors with distributed memory.

Un premier but de l'invention est donc de résoudre les problèmes soulevés cidessus.A first object of the invention is therefore to solve the problems raised above.

Ce but est atteint par le fait que le procédé d'exécution parallèle de requête de bases de données relationnelles dans un environnement multi processeurs parallèle à mémoire distribuée consiste à intégrer le contrôle dans la requête lors de sa compilation, le contrôle étant obtenu en combinant un jeu d'opérations atomiques de contrôle pour matérialiser un graphe de contrôle qui se superpose au graphe de la requête, ce graphe exprimant les dépendances entre les données par les liens entre les noeuds d'opérations et les types de dépendance de séquencement par des noeuds constructeur de deux types.This object is achieved by the fact that the method of parallel execution of query of relational databases in a parallel multi-processor environment with distributed memory consists in integrating the control in the request during its compilation, the control being obtained by combining a set of atomic control operations to materialize a control graph which is superimposed on the query graph, this graph expressing the dependencies between the data by the links between the operation nodes and the types of sequencing dependency by constructor nodes of two types.

Selon une autre particularité, le graphe de contrôle exprime le groupement des noeuds en foyer (home) d'une relation de la base, la colocalisation de plusieurs opérations sur un même foyer de l'architecture multiprocesseur, la réunion de plusieurs opérations en opération locale et la réunion de plusieurs opérations locales en association.According to another particularity, the control graph expresses the grouping of nodes in focus (home) of a base relationship, the co-localization of several operations on the same focus of the multiprocessor architecture, the combination of several operations in local operation and the combination of several local operations in association.

Selon une autre particularité, le premier type de noeud constructeur (PIPE) permet l'exécution d'une opération suivante dès que l'opération précédente a produit un tuple. According to another particular feature, the first type of constructor node (PIPE) allows the execution of a next operation as soon as the previous operation has produced a tuple.

Selon une autre particularité, le deuxième type de noeud constructeur (SEQ) ne permet l'exécution de l'opération suivante qu'après l'achèvement complet de l'opération précédente.According to another particular feature, the second type of constructor node (SEQ) allows the execution of the next operation only after the complete completion of the previous operation.

Selon une autre particularité, la synchronisation entre des opérations exécutées sur des groupes de noeuds différents et des opérations exécutées sur un même groupe est effectuée par deux familles de primitives de contrôle permettant la mise en place d'un mécanisme de contrôle.According to another particular feature, the synchronization between operations executed on groups of different nodes and operations executed on the same group is carried out by two families of control primitives allowing the establishment of a control mechanism.

Selon une autre particularité, la première famille est constituée de primitives de propagation (stp, gp, mp, sp), l'autre famille de primitives d'attente (1w, gw, mw, sw), le mécanisme de contrôle ne pouvant être constitué que par la connexion de deux primitives de type opposé (attente,propagation). According to another particular feature, the first family consists of propagation primitives (stp, gp, mp, sp), the other family of waiting primitives (1w, gw, mw, sw), the control mechanism being unable to be constituted only by the connection of two primitives of opposite type (wait, propagation).

Selon une autre particularité, les primitives d'attente envoient à l'opération de contrôle suivante qui est une primitive de propagation, un message d'activation lorsqu'au moins un message de type fin de flot (EOS) est reçu.According to another particular feature, the waiting primitives send to the next control operation which is a propagation primitive, an activation message when at least one end of flow type (EOS) message is received.

Selon une autre particularité, une primitive d'attente multiple vérifie que le nombre de message fin de flot reçu est égal au nombre d'opération locale exécutées par un même noeud et produisant le message fin de flot.According to another particular feature, a multiple wait primitive verifies that the number of end-of-flow message received is equal to the number of local operations executed by the same node and producing the end-of-flow message.

Selon une autre particularité, une primitive d'attente globale vérifie que le nombre de message de fin de flot reçu est égal au nombre de noeud du foyer (home) sur lequel une ou plusieurs opérations s'exécutent en parallèle.According to another particular feature, a global wait primitive verifies that the number of end-of-flow message received is equal to the number of node of the home on which one or more operations are executed in parallel.

Selon une autre particularité, les primitives de propagation envoient un message de fin de flot à au moins une instance de l'opération de contrôle suivante lorsque le message d'activation est reçu.According to another particular feature, the propagation primitives send an end-of-flow message to at least one instance of the following control operation when the activation message is received.

Selon une autre particularité, une primitive de propagation multiple envoie autant de message de fin de flot que d'opération locale suivante.According to another particular feature, a multiple propagation primitive sends as many end-of-flow messages as there are next local operations.

Selon une autre particularité, une primitive de propagation globale envoie autant de message de fin de flot qu'il y a de noeuds de le foyer (home) sur lequel s'exécute la ou les opérations locales suivante(s). According to another particular feature, a global propagation primitive sends as many end-of-flow messages as there are nodes of the home on which the following local operation or operations are executed.

Selon une autre particularité, une primitive de propagation et de déclenchement envoie en outre un message de déclenchement à l'opération locale suivante, pour déclencher celle-ci.According to another particular feature, a propagation and trigger primitive also sends a trigger message to the next local operation, in order to trigger it.

Selon une autre particularité, des tables de portion de programme constituées à partir des primitives permettent de reconstituer par l'association successives de plusieurs tables le graphe correspondant à l'exécution parallèle d'une requête sur une base de données relationnelle dans un environnement multi processeurs à mémoire distribuée.According to another particularity, program portion tables formed from the primitives make it possible to reconstruct by the successive association of several tables the graph corresponding to the parallel execution of a query on a relational database in a multi-processor environment. with distributed memory.

Un autre but de l'invention est de proposer une utilisation du procédé selon l'invention.Another object of the invention is to propose a use of the method according to the invention.

Ce but est atteint par le fait que l'utilisation du procédé est effectué dans la phase de parallèlisation d'un gestionnaire de requêtes chargé de compiler les requêtes exprimées en langage E.S.Q.L. en exécutant une phase d'analyse, une phase d'optimisation physique une phase de parallèlisation et une phase de génération de code en langage C+ +. D'autres caractéristiques et avantages de la présente invention apparaitront plus clairement à la lecture de la description ci-après faite en référence aux dessins annexés dans lesquels
La figure 1 représente un graphe représentant une requête sur une base de données associé au graphe de contrôle,
La figure 2A représente la répartition d'une requête sur les noeuds d'un système multi processeurs parallèle,
La figure 2B représente un système multi processeurs parallèle à mémoire distribuée,
La figure 2C représente de façon schématique sous-forme de graphe les différentes possibilités de liaison entre les noeuds d'opérations et les noeuds constructeurs,
La figure 2D représente la matérialisation des graphes de la requête représentée à la figure 2C sous forme d'un graphe de contrôle représentant la séquence des primitives de contrôle,
La figure 3 représente de façon schématique une opération locale et l'allocation des processus à cette opération,
La figure 4 représente une requête contenant deux opérations locales regroupées dans deux associations,
Les figures 5 à 13 représentent les différentes possibilités de graphes de requêtes associant les différentes combinaisons entre les noeuds d'opérations et les noeuds constructeurs, et la traduction sous forme de graphe de contrôle est formée d'une séquence de primitives de contrôle correspondant au graphe de requête.
This goal is achieved by the fact that the use of the method is carried out in the parallelization phase of a request manager responsible for compiling the requests expressed in ESQL language by executing an analysis phase, a physical optimization phase a parallelization phase and a code generation phase in C ++ language. Other characteristics and advantages of the present invention will appear more clearly on reading the description below made with reference to the accompanying drawings in which
FIG. 1 represents a graph representing a request on a database associated with the control graph,
FIG. 2A represents the distribution of a request on the nodes of a parallel multi-processor system,
FIG. 2B represents a parallel multi-processor system with distributed memory,
FIG. 2C schematically represents in the form of a graph the different possibilities of connection between the operating nodes and the constructor nodes,
FIG. 2D represents the materialization of the graphs of the request represented in FIG. 2C in the form of a control graph representing the sequence of the control primitives,
FIG. 3 schematically represents a local operation and the allocation of the processes to this operation,
FIG. 4 represents a request containing two local operations grouped in two associations,
FIGS. 5 to 13 represent the different possibilities of query graphs associating the different combinations between the operation nodes and the constructor nodes, and the translation in the form of a control graph is formed of a sequence of control primitives corresponding to the graph request.

La figure 14 représente le schéma de principe d'un gestionnaire de requête dans lequel le procédé de parallèlisation est utilisé.FIG. 14 represents the block diagram of a request manager in which the parallelization method is used.

L'invention qui concerne un procédé d'exécution parallèle de requête de bases de données dans un environnement multi processeurs à mémoire distribuée tel que celui représenté à la figure 2B. Dans un tel environnement, chaque processeur 31, 3i, 3n est associé à une mémoire distribuée 11, 1i, 1n et les processeurs communiquent entre eux par des noeuds 41, 4i, 4n. Un système de gestion de base de données relationnelle étendue développé sur une telle machine à processeurs parallèles permet de tirer profit du parallélisme pour à la fois augmenter le nombre de transactions qu'il est possible de traiter par seconde et réduire le temps de réponse des requêtes complexes.The invention relates to a method for parallel execution of database requests in a multi-processor environment with distributed memory such as that shown in FIG. 2B. In such an environment, each processor 31, 3i, 3n is associated with a distributed memory 11, 1i, 1n and the processors communicate with each other by nodes 41, 4i, 4n. An extended relational database management system developed on such a machine with parallel processors makes it possible to take advantage of parallelism to both increase the number of transactions that can be processed per second and reduce the response time for requests complex.

Un exemple de base de données relationnelles est représenté à l'annexe 1.An example of a relational database is shown in Appendix 1.

Cette base comprend trois relations, une première "voiture" comportant les attributs suivants : numéro du véhicule (nO véh.), marque, type distribué par hachage sur l'attribut (nO véh.). Une deuxième relation "achète" comprend les attributs d'identification de la personne (nO de sécurité sociale), identification de l'auto (nO véh.) et la date (date). La relation achète est distribuée par hachage sur l'attribut n0 de véh. en association avec la relation voiture. Une troisième relation "contrôle" comporte les attributs identifieur d'auto (n véh.), identifieur d'organisation (nO d'organisme), et la date (date). This base includes three relationships, a first "car" comprising the following attributes: vehicle number (vehicle no.), Brand, type distributed by hash on the attribute (vehicle no.). A second "buy" relationship includes the attributes of identification of the person (social security number), identification of the car (vehicle number) and date (date). The buy relation is distributed by hash on the n0 attribute of veh. in association with the car relationship. A third "control" relation includes the attributes auto identifier (vehicle number), organization identifier (organization number), and the date (date).

Cette relation est distribuée par hachage sur l'attribut d'identification de l'organisme. This relation is distributed by hash on the identification attribute of the organization.

Chaque processeur (3i) a donc sa propre mémoire locale (li) et est le seul à accéder aux données dans la mémoire. Les processeurs communiquent par envoi de messages à travers les- noeuds (4i). Le stockage des données constituées par les attributs de la base est réparti sur l'ensemble des noeuds de la machine. Ainsi, chaque relation de la base est partitionnée en paquet, chaque paquet étant placé sur un noeud de la machine. Pour une relation donnée, par exemple voiture, un sous-ensemble des noeuds de la machine est utilisé pour le stockage de la relation. Ainsi la relation voiture sera par exemple stockée sur les trois premiers noeuds, 41, 42, 43 de la machine associée aux mémoires Ml, M2, M3. Ce sous-ensemble de noeuds de la machine est appelé le "home" (foyer) de la relation.Each processor (3i) therefore has its own local memory (li) and is the only one to access the data in the memory. The processors communicate by sending messages through the nodes (4i). The storage of the data constituted by the attributes of the base is distributed over all the nodes of the machine. Thus, each relation of the database is partitioned into a packet, each packet being placed on a node of the machine. For a given relation, for example car, a subset of the nodes of the machine is used for the storage of the relation. Thus the car relationship will for example be stored on the first three nodes, 41, 42, 43 of the machine associated with the memories M1, M2, M3. This subset of machine nodes is called the "home" of the relationship.

De même comme représenté à la figure 2A, une relation R est stockée sur un ensemble de noeuds Ni à Nn. Sur cette relation et par les processus associés au "home" de la relation on effectue une opération "select" de sélection qui est utilisée comme résultat dans une opération de jointure "join" avec une relation S stockée sur un ensemble Ni à Ni + n de noeuds constituant le "home" (foyer) de la relation S. La méthode la plus simple d'allocation de processus pour obtenir l'exécution parallèle de la requête consiste à attribuer à chaque noeud, opération du graphe de la requête, un ensemble de processus chargé de l'exécuter. Le nombre de processus utilisé pour le traitement d'une opération sur une relation dépendra en fait du nombre de noeuds utilisé pour le stockage de la relation, c'est-à-dire de la taille du "home" de la relation.Similarly, as shown in FIG. 2A, a relation R is stored on a set of nodes Ni to Nn. On this relation and by the processes associated with the "home" of the relation, a "select" selection operation is carried out which is used as result in a "join" operation with a relation S stored on a set Ni to Ni + n of nodes constituting the "home" of the relation S. The simplest method of allocation of process to obtain the parallel execution of the request consists in assigning to each node, operation of the graph of the request, a set process responsible for executing it. The number of processes used for the processing of an operation on a relation will depend in fact on the number of nodes used for the storage of the relation, ie the size of the "home" of the relation.

Le modèle d'exécution parallèle de l'invention supporte trois types de parallélisme.The parallel execution model of the invention supports three types of parallelism.

Le premier est le parallélisme intra-opération qui repose sur le partitionnement horizontal d'une relation en plusieurs paquets. Ceci permet d'effectuer un traitement (par ex. opération "select") sur une relation (R) par plusieurs processus qui s'exécutent en parallèle chacun sur un paquet (Sel 1, Seli,
Selm).
The first is intra-operation parallelism which is based on the horizontal partitioning of a relationship into several packets. This makes it possible to carry out a processing (for example "select" operation) on a relation (R) by several processes which execute in parallel each on a packet (Sel 1, Seli,
Selm).

Le modèle d'exécution parallèle de l'invention supporte deux autres types de parallélisme, le parallélisme inter-opération et le pipeline. Le parallélisme interopération peut être mis en oeuvre lorsque deux ou plusieurs opérations sont indépendantes en terme de partage de données intermédiaires par exemple les opérations "select" de sélection sur le "home" CONTROLE et sur le "home" (ACHETE) figure 1. Le pipeline (figure 3) est une forme de parallélisme à grain fin où deux opérations par exemple "Select" et "store" figure 3 échangent des données intermédiaires en mode producteurconsommateur.The parallel execution model of the invention supports two other types of parallelism, inter-operation parallelism and the pipeline. Interoperational parallelism can be implemented when two or more operations are independent in terms of sharing intermediate data, for example the "select" selection operations on the "home" CONTROL and on the "home" (PURCHASED) figure 1. The pipeline (figure 3) is a form of fine-grained parallelism where two operations, for example "Select" and "store" in figure 3 exchange intermediate data in producer-consumer mode.

Lorsque l'on formule une requête en langage SQL qui consiste par exemple à rechercher les automobiles Renault qui ont été achetées et non contrôlées depuis le ler Janvier 1986, une telle requête s'exprime en langage SQL comme représenté à la figure 2D. Un plan possible d'exécution d'une telle requête peut être généré par un programme optimiseur physique et correspondre au plan représenté à l'annexe 2.When formulating a query in SQL language which consists, for example, of finding Renault automobiles which have been purchased and not checked since January 1, 1986, such a query is expressed in SQL language as shown in Figure 2D. A possible plan for executing such a request can be generated by a physical optimizer program and correspond to the plan shown in appendix 2.

Ceci conduit à un programme représenté à l'annexe 3 et correspondant à la requête qui est représentée par un graphe à la figure 1 sur lequel la séquence du programme est représentée. Ce graphe de la figure 1 comporte dans les zones grisées en sombre, la représentation des opérations locales et dans les boites en gris plus clair, les constructions d'association.This leads to a program represented in appendix 3 and corresponding to the request which is represented by a graph in FIG. 1 on which the sequence of the program is represented. This graph of FIG. 1 includes in the shaded areas in dark, the representation of the local operations and in the boxes in lighter gray, the constructions of association.

Les constructions d'opérations locales isolent une entité d'exécution dans le programme par exemple le processeur Pj sur lequel s'exécute la sélection Selj du noeud Nj comme représenté à la figure 3. Cette construction regroupe les opérations de données qui communiquent localement avec chaque noeud d'un "home" donné, par exemple en échangeant des données intermédiaires dans un mode pipeline local que l'on nomme, pipeline local interne (internal local pipeline).The constructions of local operations isolate an execution entity in the program, for example the processor Pj on which the selection Selj of the node Nj is executed as represented in FIG. 3. This construction groups together the data operations which communicate locally with each node of a given "home", for example by exchanging intermediate data in a local pipeline mode which is called, internal local pipeline.

Les opérations de données qui font partie de l'opération locale représentent un sous-graphe qui a une racine simple, (soit à flux de données ou à messages d'activation) et une ou plusieurs feuilles (opération de communication de données : envoi, envoi local ou stockage). A chaque message reçu, toutes les opérations de données dans l'opération locale sont exécutées de façon synchrone.The data operations which are part of the local operation represent a sub-graph which has a simple root, (either with data flow or activation messages) and one or more sheets (data communication operation: sending, local shipment or storage). With each received message, all data operations in the local operation are performed synchronously.

Une association (Al, A2, figure 4) isole dans le graphe du plan d'exécution parallèle un composant qui est un sous-graphe de données et d'opérations de commandes localisées sur un "home". Ce composant A1 est composé d'opérations locales (Select, diff, transmit) et d'opérations de commandes associées qui communiquent localement sur chaque noeud du "home". An association (A1, A2, FIG. 4) isolates in the graph of the parallel execution plan a component which is a subgraph of data and of command operations located on a "home". This component A1 is composed of local operations (Select, diff, transmit) and associated command operations which communicate locally on each node of the "home".

Chaque élément d'une association est distribué sur tous les noeuds du "home" où l'association est située: Deux opérations locales situées dans la même association échangent des données dans un ou deux modes : le premier mode est un mode local pipeline (13, 16) appelé pipeline local externe (external local pipeline) et le second mode est à travers une relation intermédiaire stockée (SI). Each element of an association is distributed on all the nodes of the "home" where the association is located: Two local operations located in the same association exchange data in one or two modes: the first mode is a local pipeline mode (13 , 16) called external local pipeline and the second mode is through a stored intermediate relation (SI).

Dans une variante de l'invention, il est possible que l'opération soit exécutée sur un "home" appelé flottant où les noeuds faisant partie du "home" sont choisis au moment de l'exécution de la requête en fonction de critère tel que la charge des processeurs à cet instant et non en fonction de la localisation des données. Dans ce cas, les données utilisées par l'opération sont transférées vers ce "home" flottant.In a variant of the invention, it is possible that the operation is executed on a "home" called floating point where the nodes forming part of the "home" are chosen at the time of the execution of the request according to criteria such as the load of the processors at this moment and not according to the localization of the data. In this case, the data used by the operation are transferred to this floating "home".

La figure 2A illustre l'allocation de processus pour une requête comportant une sélection et une jointure. La sélection s'effectue sur le "home" de R, c'est-à-dire qu'un processus sur chaque noeud du "home" exécute la sélection sur un paquet de R et la jointure s'exécute sur le "home" de S, les résultats de la sélection étant envoyés sur le "home" de S. Il existe donc autant de processus exécutant la sélection que de noeuds "m" stockant la relation R et autant de processus exécutant la jointure que de noeuds stockant la relation S. Les processus correspondant à deux opérations distantes c'est-à-dire localisées sur des "homes" différents de la machine, telles que les opérations de sélection et de jointure de la figure 2A ont besoin d'échanger des données intermédiaires.Cette fonctionnalité est assurée par des opérations de communication qui permettent notamment de redistribuer les données d'un "home" vers un autre. Les envois de données s'effectuent toujours en pipeline, c'est-à-dire que les tuples sont envoyés à l'opération destinataire au fur et à mesure de leur production.FIG. 2A illustrates the allocation of processes for a query comprising a selection and a join. The selection is made on the "home" of R, that is to say that a process on each node of "home" executes the selection on a packet of R and the join is executed on the "home" of S, the results of the selection being sent to the "home" of S. There are therefore as many processes executing the selection as there are nodes "m" storing the relation R and as many processes executing the join as there are nodes storing the relation S. The processes corresponding to two remote operations, that is to say located on different "homes" of the machine, such as the selection and joining operations of FIG. 2A need to exchange intermediate data. functionality is ensured by communication operations which allow in particular to redistribute data from one "home" to another. Data sends are always carried out in pipeline, that is to say that the tuples are sent to the recipient operation as and when they are produced.

Dans le modèle d'exécution, les données intermédiaires peuvent être soient consommées en pipeline (ex : 11, 12, 13, 16 figure 1) au fur et à mesure de leur arrivée sur le "home" de l'opération destinataire, soient stockées dans des relations intermédiaires (S1, S2, figure 1) dans le "home" de l'opération qui utilise la relation matérialisée. Dans ce cas, l'opération destinataire du pipeline est une opération "store" (loc op3, loc op4, figure 1) qui matérialise la relation intermédiaire. L'arrivée de données destinées à une opération provoque l'activation du processus qui est chargé d'exécuter cette opération. In the execution model, the intermediate data can be either consumed in pipeline (ex: 11, 12, 13, 16 figure 1) as and when they arrive on the "home" of the recipient operation, are stored in intermediate relationships (S1, S2, Figure 1) in the "home" of the operation that uses the materialized relationship. In this case, the recipient operation of the pipeline is a "store" operation (loc op3, loc op4, Figure 1) which materializes the intermediate relationship. The arrival of data intended for an operation causes the activation of the process which is responsible for executing this operation.

Les processus producteur et consommateur sont donc actifs simultanément et ne nécessitent pas de synchronisation.The producer and consumer processes are therefore active simultaneously and do not require synchronization.

Lorsque deux ou plusieurs opérations (Select, diff, figure 4) de la requête sont localisées sur le même "home" (ACHETE, VOITURE), exemple les noeuds i, a, n, M de la relation voiture (figure 4) et échangent localement sur ce "home" des données intermédiaires en pipeline 13, 16, l'exécution de ces opérations peut être effectuée par un processus unique sur chaque noeud du "home". C'est le cas des opérations "Select" et "Diff" sur les noeuds i, a, m qui sont effectuées par les processus Pi à Pm. Dans ce cas, le processus exécute successivement par appel de procédures, toutes les opérations pour un tuple en entrée de la première opération, avant que le tuple suivant ne soit traité. Ce mode d'exécution des opérations est appelé "Pipeline local interne".When two or more operations (Select, diff, figure 4) of the request are located on the same "home" (PURCHASED, CAR), example the nodes i, a, n, M of the car relationship (figure 4) and exchange locally on this “home” of intermediate data in pipeline 13, 16, the execution of these operations can be carried out by a unique process on each node of the “home”. This is the case of the "Select" and "Diff" operations on the nodes i, a, m which are carried out by the processes Pi to Pm. In this case, the process executes successively by calling procedures, all the operations for a tuple at the input of the first operation, before the next tuple is processed. This mode of execution of operations is called "Internal local pipeline".

Le sous-graphe d'opération est appelé "Opération localisée" ou "local op" . The operation subgraph is called "Localized operation" or "local op".

Un tel sous-graphe représenté à la figure 4 constitue l'entité minimale de synchronisation.Such a sub-graph represented in FIG. 4 constitutes the minimum synchronization entity.

Les résultats intermédiaires produits sur un noeud par l'opération de sélection sont donc les seuls qui peuvent joindre avec les tuples provenant de la relation Si présents sur le même noeud. Les deux opérations "select" et "Diff" appartiennent à la même opération locale "local op1" et sont donc exécutées par un seul processus pour chaque noeud.The intermediate results produced on a node by the selection operation are therefore the only ones which can join with the tuples coming from the relation Si present on the same node. The two operations "select" and "Diff" belong to the same local operation "local op1" and are therefore executed by a single process for each node.

Par ailleurs, deux opérations locales ("localppl", "local~op2") peuvent échanger localement des données intermédiaires comme représentées à la figure 4. La localité des échanges est délimitée par un constructeur association qui permet d'isoler dans le graphe de la requête un ensemble d'opérations qui échangent localement des données. Ainsi les opérations "locppl", "loc~op2"et "loc~op4" (figure 1) échangent des données, et sont regroupées dans l'association A3. Les opérations locales peuvent échanger les données soit en pipeline (pipeline locale asynchrone) (ex "loc~op1" avec "locpp2, fig 1), soit à travers une relation intermédiaire ("loc~op 4" avec "loc pp2 à travers S2).Les processus alloués aux deux opérations "loc op1" "loc#op2" sont différents et les communications entre ces processus sont explicites. Des mécanismes de synchronisation local sont alors nécessaires entre ces processus. In addition, two local operations ("localppl", "local ~ op2") can locally exchange intermediate data as shown in Figure 4. The locality of the exchanges is delimited by an association constructor which allows to isolate in the graph of the requests a set of operations that exchange data locally. Thus the operations "locppl", "loc ~ op2" and "loc ~ op4" (Figure 1) exchange data, and are grouped in the association A3. Local operations can exchange data either in pipeline (asynchronous local pipeline) (ex "loc ~ op1" with "locpp2, fig 1), or through an intermediate relationship (" loc ~ op 4 "with" loc pp2 through S2 ) .The processes allocated to the two operations "loc op1" "loc # op2" are different and the communications between these processes are explicit. Local synchronization mechanisms are then necessary between these processes.

En outre des opérations de communication permettent de redistribuer les données d'un "home" vers un autre ou d'envoyer les résultats d'une association sur une autre local~op d'une autre association.In addition, communication operations make it possible to redistribute data from one "home" to another or to send the results of an association to another local ~ op of another association.

Seules des opérations racine et feuille d'un sous-graphe peuvent communiquer avec des processus éloignés.Only root and leaf operations of a subgraph can communicate with distant processes.

Un exemple d'utilisation d'opération de communication "transmit, local~transmit, and, store" est donné ci-après pour une opération de communication qui transmet le résultat Il d'une opération précédente au noeud du "home" S par adressage calculé (hachage) "hash" sur le second attribut de Il. L'opération d'envoi est distribuée sur le "home" de R comme l'opération qui produit Il. An example of use of a "transmit, local ~ transmit, and, store" communication operation is given below for a communication operation which transmits the result II of a previous operation to the node of the "home" S by addressing. computed (hash) "hash" on the second attribute of Il. The send operation is distributed on R's "home" like the operation that produces it.

Il = {home(R)} 12 = {home(R)} tansmit (Il, home(S), hash on 11.2)
La requête de la figure 4 qui se traduit par le programme ci-après donne également un exemple d'utilisation de l'opération local~transmit thome(achète, voiture)}, Assoc A3 (loc~op1) 13 = Select (voiture, voiture.marque= "Renault", (voiture n0 véh.)) 16 = Difference (13, S1)Join thome(S)} (12, H on ..) 17 = local transmit (16) End~loc opi loc~op 2
Result= join (S2, 17, 17.nOvéh.=S2, novéh. (17.n véh)) End loc op 2
End assoc A3
Par ailleurs, la synchronisation des instances parallèles d'une même opération telles que par exemple les instances parallèles des différentes opération locales "loc~op1 (fig. 1) sur chaque noeud du "home" (voiture) ainsi que plus globalement la synchronisation des opérations d'une requête requièrent des mécanismes de contrôle. En effet, le déclenchement d'une opération est obtenu par le déclenchement de tous les processus associés à son exécution et sa terminaison est équivalente à la terminaison de tous ces processus. De plus, lorsqu'une opération consomme des données en pipeline, son déclenchement est lié à l'arrivée de tuple sur le pipeline et sa terminaison est liée à la fin des données pipelinée. Or, la fin des données pipelinées dépend elle-même de la fin de l'opération qui les produit.Les mécanismes de contrôle assurent toutes ces fonctionnalités par l'intermédiaire d'opérations de contrôle qui échangent des messages de contrôle.
Il = {home (R)} 12 = {home (R)} tansmit (Il, home (S), hash on 11.2)
The request of figure 4 which results in the program below also gives an example of use of the local operation ~ transmit thome (buy, car)}, Assoc A3 (loc ~ op1) 13 = Select (car, car.brand = "Renault", (car n0 vehicle)) 16 = Difference (13, S1) Join thome (S)} (12, H on ..) 17 = local transmit (16) End ~ loc opi loc ~ op 2
Result = join (S2, 17, 17.nOvéh. = S2, novéh. (17.n véh)) End loc op 2
End assoc A3
In addition, the synchronization of the parallel instances of the same operation such as for example the parallel instances of the different local operations "loc ~ op1 (fig. 1) on each node of the" home "(car) as well as more generally the synchronization of the operations of a request require control mechanisms, since the triggering of an operation is obtained by the triggering of all the processes associated with its execution and its termination is equivalent to the termination of all these processes. 'an operation consumes data in pipeline, its triggering is linked to the arrival of tuple on the pipeline and its termination is linked to the end of pipelined data. However, the end of pipelined data itself depends on the end of the The operation that produces them. The control mechanisms provide all of these functionalities through control operations that exchange control messages.

Certains de ces opérateurs de contrôle sont centralisés alors que d'autre sont distribués. Il existe trois classes d'opérations correspondant à trois types de parallélisme intra-requête supportés à savoir les opérations de contrôle liées au parallélisme intra-opération, celles liées au parallélisme inter-opération et celles liées au pipeline.Some of these control operators are centralized while others are distributed. There are three classes of operations corresponding to three types of intra-request parallelism supported, namely control operations related to intra-operation parallelism, those related to inter-operation parallelism and those related to the pipeline.

La mise en oeuvre d'une requête se traduit par un programme qui lui-même peut être représenté par une structure de graphe de séquencement. Un tel graphe est représenté à la figure 2C et comporte deux types de noeuds, des noeuds d'opération mentionnée opl, op2, op3, op4, op5, op6 et des noeuds constructeur qui comportent une étiquette (START, END, LPIPE, PIPE, SEQ,
LSEQ) qui correspond au type de dépendance de séquencement que le noeud constructeur représente.
The implementation of a query results in a program which itself can be represented by a sequencing graph structure. Such a graph is represented in FIG. 2C and comprises two types of nodes, operation nodes mentioned opl, op2, op3, op4, op5, op6 and manufacturer nodes which include a label (START, END, LPIPE, PIPE, SEQ,
LSEQ) which corresponds to the type of sequencing dependency that the constructor node represents.

Un noeud constructeur tel que LPIPE ou PIPE à n entrées et p sorties qui sont des noeuds d'opération. Chacune des entrées d'opérations s'exécute avec la dépendance de séquencement spécifiée par le constructeur. A constructor node such as LPIPE or PIPE with n inputs and p outputs which are operation nodes. Each of the operation inputs is executed with the sequencing dependency specified by the constructor.

Il est très important de noter qu'une opération de données ne peut jamais être la sortie d'un constructeur séquentiel tel que SEQ, LSEQ et d'un constructeur pipeline tel que PIPE, LPIPE. It is very important to note that a data operation can never be the output of a sequential constructor such as SEQ, LSEQ and a pipeline constructor such as PIPE, LPIPE.

Nous avons indiqué précédemment comment chaque opération est divisée en sous-opérations localisées. Toutes ces sous-opérations nécessitent d'être synchronisées et commandées pour garantir une exécution globale correcte.We previously indicated how each operation is divided into localized sub-operations. All these sub-operations need to be synchronized and controlled to guarantee correct overall execution.

Chaque mode d'exécution décrit précédemment nécessite un mécanisme de commande différent. En particulier, pour garantir une exécution séquentielle entre deux opérations, il faut garantir que la seconde opération soit seulement initialisée après la fin de la première. Ceci implique la capacité de détecter l'achèvement de l'exécution d'une opération et la capacité de lancer une opération. Pour la détection de l'achèvement, sachant qu'une opération est distribuée dans un nombre de sous-opérations, chacune localisée sur un noeud, il faut détecter l'achèvement local de chaque sous-opération et l'achèvement global de l'opération. Pour le lancement, il faut être apte à lancer toutes les sous-opérations d'une opération.Ceci implique la capacité de notifier explicitement la fin d'un flot de données par un signal (EOS) (End of Stream) à chaque sous-opération, la réception de ce signal autorisant alors la détection de l'achèvement local de se produire. Pour permettre les opérations de détection d'achèvement d'opérations, de lancement d'opération et de synchronisation entre les opérations, on a été amené à créer des opérations atomiques de commandes qui sont divisées en deux groupes d'opérations, les opérations d'attente et les opérations de propagation.Each embodiment described above requires a different control mechanism. In particular, to guarantee a sequential execution between two operations, it must be guaranteed that the second operation is only initialized after the end of the first. This implies the ability to detect the completion of the execution of an operation and the ability to initiate an operation. For the detection of the completion, knowing that an operation is distributed in a number of sub-operations, each located on a node, it is necessary to detect the local completion of each sub-operation and the global completion of the operation . To launch, you must be able to launch all the sub-operations of an operation. This implies the ability to explicitly notify the end of a data stream by a signal (EOS) (End of Stream) at each sub- operation, receipt of this signal then authorizes detection of local completion to occur. To allow operations to detect operations, launch operations and synchronize operations, we have created atomic command operations which are divided into two groups of operations, the operations of wait and spread operations.

Rappelons qu'une opération ou un élément atomique ne peut pas être décomposé. C'est le plus petit composant.Remember that an atomic operation or element cannot be decomposed. It is the smallest component.

Les opérations d'attente attendent les messages (EOS) de fin de flot de données et ensuite activent un propagateur qui propage les messages de fin de flot de données (EOS) et parfois initialise des messages. Les opérations d'attente consomment toujours des messages de fin de flot de données et produisent des messages d'activation, tandis que les propagateurs consomment des messages d'activation et produisent des messages de fin de flot de données, parfois avec une activation. Les opérations d'attente sont Iw qui signifie attente locale, est une opération de commande distribuée associée à une opération distribuée. Chaque instance de l'attente locale exécute la détection de l'achèvement local de l'une des sous-opérations de l'opération. Elle attend un message de fin de flot (EOS) pour l'accomplissement de la sous-opération.Waiting operations wait for end-of-data stream (EOS) messages and then activate a propagator that propagates end-of-data stream (EOS) messages and sometimes initializes messages. Standby operations always consume end of data stream messages and produce activation messages, while propagators consume activation messages and produce end of data flow messages, sometimes with activation. The standby operations are Iw which stands for local standby, is a distributed control operation associated with a distributed operation. Each instance of the local wait performs the detection of the local completion of one of the operation's sub-operations. It waits for an end of flow message (EOS) for the completion of the sub-operation.

C2:act = Iw(Cî :EOS,stream) équivaut à envoyer le message C2 d'activation (act) à l'opération de contrôle suivante lorsque le message Cl de type EOS est reçu, signifiant que l'opération produisant le flot (stream) est terminée. Sinon attendre la fin de l'opération produisant le flot (stream) pour envoyer C2.C2: act = Iw (Cî: EOS, stream) is equivalent to sending the C2 activation message (act) to the next control operation when the EOS type C1 message is received, signifying that the operation producing the flow ( stream) is complete. Otherwise wait for the end of the operation producing the stream to send C2.

gw qui signifie attente globale, est une opération de commande centralisée qui attend l'achèvement global d'une opération donnée, c'est à dire l'achèvement de toutes les sous-opérations. Chaque achèvement local est notifié par un message de fin de flot (EOS) produit par un propagateur.gw which means global wait, is a centralized control operation which waits for the global completion of a given operation, ie the completion of all the sub-operations. Each local completion is notified by an end-of-flow message (EOS) produced by a propagator.

C2:act = gw(Cî :EOS) équivaut à envoyer le message C2 d'activation (act) à l'opération de contrôle suivante si le nombre de messages C1 de type EOS reçus est égale au nombre de noeuds dans le home de l'opération de contrôle produisant les messages Cl. C2: act = gw (Cî: EOS) is equivalent to sending the C2 activation message (act) to the next control operation if the number of C1 EOS type messages received is equal to the number of nodes in the home of the control operation producing Cl messages.

Le nombre de noeud du home est déterminé à l'initialisation du programme de traitement de la requête et mémorisé par un paramètre qui est le home de l'opération locale précédente.The number of nodes of the home is determined at the initialization of the program for processing the request and memorized by a parameter which is the home of the previous local operation.

mw qui signifie attente multiple, est une opération de commande utilisée pour la synchronisation de la détection de l'achèvement. Elle attend n messages
EOS, n étant le nombre d'opérations à synchroniser qui peuvent être soient centralisées, soient distribuées.
mw which stands for multiple wait, is a control operation used for synchronization of the detection of completion. She waits for n messages
EOS, n being the number of operations to be synchronized which can be either centralized or distributed.

C2:act = mw(Cî :EOS) équivaut à envoyer le message C2 d'activation (act) à l'opération de contrôle suivante si le nombre de messages Cl de type EOS est égal au nombre d'opérations de contrôle produisant le message Cl. C2: act = mw (Cî: EOS) is equivalent to sending the C2 activation message (act) to the next control operation if the number of Cl messages of type EOS is equal to the number of control operations producing the message Cl.

N.B.: le nombre d'opérations de contrôle produisant Cl est > 1.N.B .: the number of control operations producing Cl is> 1.

sw qui signifie attente simple, attend un message de fin de flot (EOS). Cette opération est essentiellement utilisée pour la conversion d'un message de type EOS en un message d'activation. Elle peut être soit centralisée soit distribuée. sw which means simple wait, waits for an end of flow message (EOS). This operation is mainly used for the conversion of an EOS type message into an activation message. It can be either centralized or distributed.

C2:act = sw(C1:EOS) équivaut à envoyer le message C2 d'activation (act) à l'opération de contrôle suivante lorsque le message Cl de type EOS est reçu.C2: act = sw (C1: EOS) is equivalent to sending the C2 activation message (act) to the next control operation when the EOS type C1 message is received.

Les opérations de propagation sont sp qui signifie propagation simple, est une opération de propagation d'un message de fin de flot EOS à une opération d'attente.The propagation operations are sp which means simple propagation, is an operation of propagation of an EOS end-of-flow message to a wait operation.

C2:EOS =sp(Cl :act) équivaut à envoyer le message C2 de fin de flot à l'opération de contrôle suivant lorsque le message d'activation (act) est reçu.C2: EOS = sp (Cl: act) is equivalent to sending the C2 end of flow message to the next control operation when the activation message (act) is received.

stp qui signifie simple activation et propagation, est opération de commande distribuée associée à une opération distribuée. Chaque instance de l'opération stp effectue l'activation locale d'une sous-opération de l'opération et propage un message de fin de flot EOS à son opération d'attente (Iw) associée.stp which means simple activation and propagation, is a distributed command operation associated with a distributed operation. Each instance of the stp operation performs the local activation of a sub-operation of the operation and propagates an EOS end-of-flow message to its associated wait operation (Iw).

(D2:trigger,C2:EOS) = stp(CA:act) équivaut à envoyer le message D2 de déclenchement à la local op consommatrice du message D2 et le message C2 de fin de flot à l'opération de contrôle suivante lorsque le message Cl d'activation (act) est reçu.(D2: trigger, C2: EOS) = stp (CA: act) is equivalent to sending the D2 trigger message to the local op consuming the D2 message and the C2 end-of-flow message to the next control operation when the message Activation key (act) is received.

gp qui signifie opération de propagation globale, est une opération centralisée qui propage des messages de fin de flot EOS à une opération d'attente distribuée sur chaque noeud du home.gp which means global propagation operation, is a centralized operation which propagates EOS end-of-flow messages to a waiting operation distributed on each node of the home.

C2:EOS = gp(C1:act) équivaut à envoyer le message C2 de fin de flot à toutes les instances de l'opération de contrôle suivante lorsque le message Cl d'activation (act) est reçu. Il y a autant de messages envoyés que de noeuds dans le home de l'opération locale suivante, le nombre de message étant mémorisé par un paramètre déterminé à l'initialisation du programme par le cardinal du home de l'opération locale suivante.C2: EOS = gp (C1: act) is equivalent to sending the C2 end-of-flow message to all instances of the following control operation when the activation C1 message (act) is received. There are as many messages sent as there are nodes in the home of the next local operation, the number of messages being stored by a parameter determined at the initialization of the program by the cardinal of the home of the next local operation.

mp qui signifie propagation multiple, est utilisée pour la propagation de messages de fin de flot EOS de synchronisation. Cette opération propage n messages EOS, n étant le nombre d'opération à synchroniser. Cette opération peut être soit centralisée, soit distribuée. mp which means multiple propagation, is used for the propagation of synchronization EOS end-of-flow messages. This operation propagates n EOS messages, n being the number of operations to synchronize. This operation can be either centralized or distributed.

C2:EOS mp(Cî:act) équivaut à envoyer le message C2 de fin de flot à toutes les opérations de contrôle suivantes lorsque le message Cl d'activation (act) est reçu.C2: EOS mp (Cî: act) is equivalent to sending the message C2 of end of flow to all the following control operations when the message C1 of activation (act) is received.

N.B.: le nombre d'opérations de contrôle consommant C2 est > 1.N.B .: the number of control operations consuming C2 is> 1.

Nous allons maintenant examiner les différents schémas de commande d'opération ou de constructeur qui sont représentés aux figures 5 à 13. La figure SA représente un exemple de graphe d'opération rattaché à des noeuds constructeur associés qui correspond au schéma d'opération de commande représenté à la figure 5B. Dans la figure 5 une opération 1 reçoit des entrées en mode séquentiel (SEQ) ou séquentiel local (LSEQ) et émet des sorties en mode pipeline (PIPE) ou pipeline local (LPIPE). L'opération recevant deux entrées constructeur, le schéma de contrôle associé de la figure 5B utilise une opération SP par entrée constructeur, ce qui permet pour chaque entrée constructeur de propager un message EOS à une opération d'attente qui est constitué par l'opération (mw) dans le cas où l'opération a plus d'une entrée constructeur.Cette opération atomique de commande (mw) active ensuite soit une opération de propagation (stp) qui déclenche l'exécution de chaque instance dans les sous-opérations d'une opérations dans le cas où les entrées constructeur sont séquentielle, soit lance une simple propagation (sp) représentée en pointillé fig. 5B dans le cas où les entrées constructeur sont du type pipeline (PIPE, LPIPE) représentée en pointillé fig. 5A. L'une de ces deux commandes de propagation envoie le message EOS à une commande d'attente locale (local wait) (Iw) qui envoie un message d'activation à l'opération atomique suivante qui est une commande de propagation multiple (mp) dans le cas où l'opération opî a plus d'une sortie constructeur. Cette opération de propagation multiple (mp) est associée avec une commande d'attente (sw) pour chaque branche de sortie. Dans le cas où l'opération (ope) a une seule sortie, l'opération atomique (mp) est remplacée, comme représenté à la figure 5B en pointillé par une opération de propagation simple (sp) associée à une opération d'attente simple (sw).We will now examine the different operation or constructor control diagrams which are represented in FIGS. 5 to 13. FIG. SA represents an example of an operation graph attached to associated constructor nodes which corresponds to the command operation diagram shown in Figure 5B. In FIG. 5, an operation 1 receives inputs in sequential (SEQ) or local sequential (LSEQ) mode and emits outputs in pipeline (PIPE) or local pipeline (LPIPE) mode. The operation receiving two constructor inputs, the associated control diagram in FIG. 5B uses an SP operation per constructor input, which makes it possible for each constructor input to propagate an EOS message to a wait operation which is constituted by the operation (mw) if the operation has more than one constructor entry. This atomic command operation (mw) then activates either a propagation operation (stp) which triggers the execution of each instance in the suboperations d 'an operation in the case where the constructor inputs are sequential, or launches a simple propagation (sp) shown in dotted fig. 5B in the case where the manufacturer inputs are of the pipeline type (PIPE, LPIPE) shown in dotted lines fig. 5A. One of these two propagation commands sends the EOS message to a local wait command (Iw) which sends an activation message to the next atomic operation which is a multiple propagation command (mp) in case the opi operation has more than one manufacturer output. This multiple propagation operation (mp) is associated with a wait command (sw) for each output branch. In the case where the operation (ope) has a single output, the atomic operation (mp) is replaced, as shown in FIG. 5B in dotted lines by a simple propagation operation (sp) associated with a simple waiting operation (sw).

La figure 6A représente le schéma d'une opération constructeur de type pipeline local (LPIPE), ayant comme entrée une opération (opi) et deux opérations en sortie (op2, op3). FIG. 6A represents the diagram of a local pipeline type constructor operation (LPIPE), having as input an operation (opi) and two operations as output (op2, op3).

La figure 6B représente le schéma d'opérations atomiques de commande générées par le graphes correspondant au schéma de la figure 6A. Ce schéma est également valable dans le cas d'un constructeur local du type séquentiel (LSEQ).FIG. 6B represents the diagram of atomic control operations generated by the graphs corresponding to the diagram of FIG. 6A. This diagram is also valid in the case of a local constructor of the sequential type (LSEQ).

La fin d'une opération opi génère comme on l'a vu pour la figure 5B une opération atomique (sw) qui active une opération atomique (mp) à propagation multiple pour propager deux messages EOS vers les opérations d'attente simple (sw) associées chacune avec le début des opérations respectives op2 et op3.The end of an opi operation generates, as we have seen for FIG. 5B, an atomic operation (sw) which activates an atomic operation (mp) with multiple propagation to propagate two EOS messages to the simple wait operations (sw) each associated with the start of the respective op2 and op3 operations.

La figure 7A représente un graphe de séquence d'opération débutant par un constructeur (START) qui lance trois opérations (opi, op2, op3) dont deux opl et op2 sont co-locales. On rappellera qu'un groupe d'opérations colocales désigne des opérations qui sont localisées sur le même "home" c'est à dire sur le même jeu de noeud (Ni à Nm). Ces opérations co-locales sont représentées sur la figure 7A par le fait qu'elles sont entourées d'un pointillé, et sont exécutées par le même processeur.FIG. 7A represents an operation sequence graph starting with a constructor (START) which launches three operations (opi, op2, op3) of which two opl and op2 are co-local. It will be recalled that a group of colocal operations designates operations which are located on the same "home", that is to say on the same set of nodes (Ni to Nm). These co-local operations are represented in FIG. 7A by the fact that they are surrounded by a dotted line, and are executed by the same processor.

Comme le constructeur start apparait au sommet d'un graphe de séquencement, ce constructeur n'a pas d'entrée d'opérations. C'est pourquoi aucune partie locale d'entrée apparait dans le schéma de contrôle. Les figures 7B et 7C représentent la traduction de ce graphe de séquencement en opérations atomiques.As the start constructor appears at the top of a sequencing graph, this constructor has no operations input. This is why no local input part appears in the control diagram. Figures 7B and 7C represent the translation of this sequencing graph into atomic operations.

La figure 7B représente la partie globale du noeud constructeur, le rôle du message sw est de recevoir le message système début. L'opération de propagation multiple (mp) duplique si nécessaire ce message en autant de messages qu'il y a de groupes d'opérations co-locales. Dans le cadre de la figure 7A, il y a deux groupes d'opérations co-locales, l'opération op3 et le groupe des opérations opi, op2 qui sont des opérations associées.FIG. 7B represents the global part of the constructor node, the role of the message sw is to receive the start system message. The multiple propagation operation (mp) duplicates this message if necessary in as many messages as there are groups of co-local operations. In the context of FIG. 7A, there are two groups of co-local operations, the operation op3 and the group of operations opi, op2 which are associated operations.

L'opération atomique (mp) est associée à autant d'opérations atomiques d'attente simple (sw), qu'il y a d'opérations co-locales. Puis une opération de propagation globale par groupe (gp) est utilisée pour distribuer les informations de commande à tous les noeuds d'un "home" du groupe. Ainsi une première opération atomique (gp) distribue l'information de commande au noeud N1, Nm du "home" des opérations opl et op2, alors que l'autre opération atomique (gp) distribue l'information de commande au noeud Ni,
Nn du "home" de l'opération op3.
The atomic operation (mp) is associated with as many atomic operations of simple waiting (sw), as there are co-local operations. Then a global propagation by group (gp) operation is used to distribute the control information to all the nodes of a "home" in the group. Thus a first atomic operation (gp) distributes the control information to the node N1, Nm of the "home" of the opl and op2 operations, while the other atomic operation (gp) distributes the control information to the node Ni,
Nn of the "home" of operation op3.

La figure 7C représente la partie locale des sorties sur les noeuds d'opérations co-locales (ope, op2). Une opération (sw) rassemble simplement localement sur chaque noeud N1, Nm du "home" du groupe concerné par les opérations, les informations de commande envoyées par la partie globale de l'opération (gp). Cette information de commande est dupliquée par la propagation multiple mp pour toutes les opérations du groupe. Chaque opération de propagation (mp) associée à un noeud (N1, Nm) génère deux opérations d'attente simple (sw) sur chaque noeud pour les deux opérations opi et op2.FIG. 7C represents the local part of the outputs on the nodes of co-local operations (ope, op2). An operation (sw) simply collects locally on each node N1, Nm of the "home" of the group concerned by the operations, the control information sent by the global part of the operation (gp). This control information is duplicated by the multiple propagation mp for all of the group's operations. Each propagation operation (mp) associated with a node (N1, Nm) generates two simple wait operations (sw) on each node for the two operations opi and op2.

Les figures 8 à 12 représentent le schéma de commande correspondant à deux constructeur globaux, l'un (SEQ) sur la figure 12, l'autre (PIPE) sur la figure 8 pipe. La seule différence entre le constructeur SEQ et le constructeur
PIPE est que le constructeur SEQ implique que les opérations de sortie doivent être activées, mais cette fonctionnalité apparait au niveau du schéma de commande d'opération. Ici le schéma de commande est composé de trois parties : la partie entrée locale, la partie globale et la partie sortie locale. La partie entrée locale de la figure 8 comporte deux opérations co-locales (ope, op2) car entourées d'un pointillé.
Figures 8 to 12 show the control diagram corresponding to two global manufacturers, one (SEQ) in Figure 12, the other (PIPE) in Figure 8 pipe. The only difference between the manufacturer SEQ and the manufacturer
PIPE is that the constructor SEQ implies that the output operations must be activated, but this functionality appears at the level of the operation command diagram. Here the control diagram is made up of three parts: the local input part, the global part and the local output part. The local entry part of Figure 8 has two co-local operations (ope, op2) because surrounded by a dotted line.

La partie entrée locale illustrée à la figure 9A comprend une opération de simple propagation (sp) (single propagate) pour chaque opération (ope, op2) d'un groupe. Cette opération de propagation (sp) est suivie d'une opération mw (multiple wait) dans le cas où les entrées du groupe d'opérations colocalisées a plus d'une opération, ce qui est représentée à la figure iOA où les opérations opl et op2 sont co-localisées ou autrement dit associées et donc chaque (sp) provenant d'une opération est attendu par l'opération (mw).The local entry part illustrated in FIG. 9A comprises a single propagate operation for each operation (ope, op2) of a group. This propagation operation (sp) is followed by an operation mw (multiple wait) in the case where the entries of the group of co-located operations has more than one operation, which is represented in the figure iOA where the operations opl and op2 are co-located or in other words associated and therefore each (sp) coming from an operation is expected by the operation (mw).

Cette opération est suivie d'une propagation simple (sp) vers la partie globale représentée à la figure 1 OA. Dans le cas où l'opération est répartie sur plusieurs noeuds comme représentée à la figure 9B, chaque noeud génère après l'exécution de l'opération, par exemple l'opération op3 de la figure 9B ou l'opération opî de la figure 9C une opération atomique de simple propagation (sp) (single propagate). This operation is followed by a simple propagation (sp) towards the global part represented in FIG. 1 OA. In the case where the operation is distributed over several nodes as represented in FIG. 9B, each node generates after the execution of the operation, for example the operation op3 in FIG. 9B or the operation opî in FIG. 9C a single propagate atomic operation (sp).

La partie globale est représentée pour une opération PIPE à la figure 10A et pour une opération SEQ à la figure 10B. Cette partie globale comporte un rassemblement global effectué par deux opérations de rassemblement (gw) dans le cas de la figure 10A qui permettant d'attendre les signaux EOS de la fin des opérations co-localisées opl, op2 ou des opérations op3 réparties sur plusieurs noeuds. Dans le cas où plusieurs opérations de rassemblement global sont utilisées, chaque opération d'attente globale (gw) est suivie d'une opération sp (single propagate) qui se regroupent sur une opération d'attente multiple (mw) (multiple wait) dans le cas où il y a plus d'un groupe d'entrée pour les opérations co-localisées. L'opération (mw) est suivie par une opération gp de propagation globale associée à chaque groupe d'opérations co-localisées.The global part is represented for a PIPE operation in FIG. 10A and for an SEQ operation in FIG. 10B. This global part comprises a global gathering carried out by two gathering operations (gw) in the case of FIG. 10A which makes it possible to wait for the EOS signals from the end of the co-localized operations opl, op2 or of the operations op3 distributed over several nodes . In the case where several global gathering operations are used, each global waiting operation (gw) is followed by an sp (single propagate) operation which regroups on a multiple wait operation (mw) (multiple wait) in the case where there is more than one input group for co-located operations. The operation (mw) is followed by a global propagation gp operation associated with each group of co-located operations.

La figure 10B représente le cas d'une partie globale ayant plusieurs graphes d'opérations en sortie, et une opération en entrée . Dans ce cas le schéma débute par une opération de rassemblement global (gw) à laquelle succède une opération de propagation multiple (mp) qui permet d'initialiser plusieurs opérations d'attente simple (sw), par groupe d'opérations de sortie.FIG. 10B represents the case of a global part having several graphs of output operations, and an input operation. In this case, the scheme begins with a global gathering operation (gw) which is followed by a multiple propagation operation (mp) which makes it possible to initialize several simple waiting operations (sw), by group of exit operations.

Chaque attente simple (sw) est suivie d'une opération de propagation globale (gp) par groupe d'opérations co-localisées qui permet d'initialiser les opérations de chaque groupe.Each simple wait (sw) is followed by a global propagation operation (gp) per group of co-located operations which allows the initialization of the operations of each group.

La partie locale de sortie du schéma de contrôle est représentée à la figure il 8 pour plusieurs groupes d'opération en sorties. Ce schéma comporte à la suite de l'opération de propagation global (gp), une opération de rassemblement simple (sw), suivie d'une opération de propagation multiple (mp) qui permet d'initialiser une opération d'attente simple (sw) par opération du groupe d'opérations co-localisées.The local output part of the control diagram is represented in FIG. 8 for several groups of operation in outputs. This diagram includes following the global propagation operation (gp), a simple gathering operation (sw), followed by a multiple propagation operation (mp) which allows to initialize a simple waiting operation (sw ) by operation of the group of co-located operations.

Pour les autres opérations (op2, figure 1 1 C, ou op4, figure il A) la partie locale de sortie est constituée par une opération atomique de simple attente (sw).  For the other operations (op2, figure 1 1 C, or op4, figure il A) the local part of exit is constituted by an atomic operation of simple waiting (sw).

Le dernier élément est constitué par l'élément constructeur FIN dont le schéma est représentée fig. 13A et les commandes correspondantes représentées fig. 13B comportent une opération de rassemblement global (gw) par groupe d'entrée d'opérations co-localisées. Chaque opération (gw) active une opération de rassemblement multiple (mw) qui commence par une opération de simple propagation (sp) associée à chaque (gw). Les différentes opérations (sp) activent une opération d'attente multiple (mw) qui elle-même active l'opération de propagation simple (sp) lancant l'opération de fin de traitement par le message de fin de flot (EOS).Ainsi, grâce aux schémas de commande correspondants aux différentes figures 5 à 13 et aux tables d'opération de commande correspondant aux commandes associées à ces graphes, on arrive dans le cas d'un graphe de séquencement tel que celui représenté à la figure 2C, à traduire ce graphe de séquencement en une succession d'opérations de commandes qui sont représentée à la figure 2D et qui consistent en un regroupement des différentes opérations de commandes élémentaires que nous avons vu précédemment.The last element consists of the constructor element FIN, the diagram of which is shown in fig. 13A and the corresponding commands shown in fig. 13B include a global gathering operation (gw) per entry group of co-located operations. Each operation (gw) activates a multiple gathering operation (mw) which begins with a single propagation operation (sp) associated with each (gw). The various operations (sp) activate a multiple wait operation (mw) which itself activates the simple propagation operation (sp) launching the end of processing operation by the end of flow message (EOS). , thanks to the control diagrams corresponding to the various FIGS. 5 to 13 and to the control operation tables corresponding to the commands associated with these graphs, we arrive in the case of a sequencing graph such as that represented in FIG. 2C, translate this sequencing graph into a succession of command operations which are represented in FIG. 2D and which consist of a grouping of the various elementary command operations which we have seen previously.

Le noeud de début, qui est le premier noeud du programme est le premier noeud à être traité. Ce traitement utilise la table qui stocke le schéma global des constructeurs globaux et génère une opération (sw) pour l'entrée du constructeur et ensuite une opération (mp), étant donné que le constructeur a deux opérations de sortie qui ne seront pas co-localisées, ensuite, une opération (sw) suivie par une opération (gp) sont produites pour chaque opération de sortie et associée avec l'opération (mp). Toutes les opérations de commandes produites à ce moment sont globales, la table correspondant au schéma local de sortie des constructeurs globaux appliqués à la sortie du constructeur START indique alors qu'une opération (sw) pour chaque opération co-localisée avec cette opération est produite et associée à l'opération (gp) correspondante.Le noeud suivant à être traiter est le noeud de l'opération opl. Pour cette opération qui a une entrée constructeur START et sortie constructeur LPIPE, une opération (stp) est alors générée lorsque l'on traite le début de l'opération (opl) Cette opération (stp) est associée à l'opération (sw) générée précédemment. Le traitement de la sortie de l'opération (ope) produit une opération (Iw). Toutes les opérations générées sont co-locales avec l'opération opi. The start node, which is the first node in the program, is the first node to be processed. This processing uses the table which stores the global schema of the global constructors and generates an operation (sw) for the input of the constructor and then an operation (mp), since the constructor has two output operations which will not be co- localized, then, an operation (sw) followed by an operation (gp) are produced for each output operation and associated with the operation (mp). All the command operations produced at this time are global, the table corresponding to the local diagram of output of the global constructors applied to the output of the manufacturer START then indicates that an operation (sw) for each operation co-located with this operation is produced and associated with the corresponding operation (gp). The next node to be processed is the opl operation node. For this operation which has a manufacturer input START and manufacturer output LPIPE, an operation (stp) is then generated when processing the start of the operation (opl) This operation (stp) is associated with the operation (sw) previously generated. Processing the operation output (ope) produces an operation (Iw). All the operations generated are co-local with the opi operation.

Le contexte de l'opération op2 étant exactement le même que l'opération opl, avec simplement le remplacement d'un constructeur PIPE par un constructeur LPIPE, les opérations de commandes générées sont identiques.The context of the op2 operation being exactly the same as the opl operation, with simply the replacement of a PIPE constructor by an LPIPE constructor, the command operations generated are identical.

Le noeud constructeur LPIPE ayant une entrée et une opération de sortie.The LPIPE constructor node having an input and an output operation.

Ainsi, aucune opération de commande n'est à ajouter car les seules commandes nécessitées par les constructeurs locaux concernent la synchronisation.Thus, no command operation is to be added because the only commands required by the local manufacturers concern synchronization.

Le traitement du noeud PIPE qui a aussi une entrée et une opération de sortie génère une opération (sp) suivie par deux opérations globales (gw) et (gp) qui assurent respectivement la détection de l'achèvement global de l'opération op2 sur les différents noeuds (N1 à Nn) et la propagation globale à l'opération op3 sur les noeuds (N1 à Nm). Une opération (sw) co-locale avec l'opération op3 est alors générée lors du traitement de sortie du constructeur PIPE.The processing of the PIPE node which also has an input and an output operation generates an operation (sp) followed by two global operations (gw) and (gp) which respectively ensure the detection of the overall completion of the op2 operation on the different nodes (N1 to Nn) and the global propagation to the op3 operation on the nodes (N1 to Nm). An operation (sw) co-local with the operation op3 is then generated during the output processing of the PIPE constructor.

L'opération suivante est l'opération op3 qui a deux constructeurs pipeline en entrée et une sortie constructeur séquentielle (SEQ). Les informations EOS issues des deux constructeurs pipeline ont besoin d'être synchronisées. Cette synchronisation est assurée par les deux opérations (sp), une pour chaque constructeur suivie par une opération (mw) et une opération (sp) introduite pendant le traitement de la partie globale utilisant la table globale. Pour la sortie du traitement de l'opération op3, une opération (Iw) est générée.The next operation is the op3 operation which has two pipeline constructors as input and a sequential constructor output (SEQ). EOS information from the two pipeline manufacturers needs to be synchronized. This synchronization is ensured by the two operations (sp), one for each manufacturer followed by an operation (mw) and an operation (sp) introduced during the processing of the global part using the global table. For the exit from the processing of the op3 operation, an operation (Iw) is generated.

Finalement, on notera que toutes les opérations de commandes introduites dans cette phase sont co-locales avec l'opération op3 et donc distribuées sur la même association. Le constructeur SEQ a une entrée et deux opérations (op4, op5) de sortie co-locales. Ceci signifie qu'une propagation multiple se produira. Pour l'entrée, une opération (sp) est introduite pour propager l'achèvement local de l'opération op3. Les opérations globales correspondant au constructeur SEQ sont introduites en utilisant la table globale. Ces opérations sont respectivement une opération (gw) qui détecte l'achèvement de l'opération op3 suivie par une opération globale (gp) (les opérations de sortie de SEQ appartiennent au même groupe d'opérations co-locales).Le traitement des sorties du constructeur génère alors les opérations de commandes distribuées relatives aux opérations de sortie du constructeur et co-locales avec ces opérations. Elles consistent en des opérations (sw) et (mp) suivies par une opération (sw) pour chacune des opérations op4 et op5.Finally, it will be noted that all of the command operations introduced in this phase are co-local with the op3 operation and therefore distributed over the same association. The constructor SEQ has a co-local input and two co-local output operations (op4, op5). This means that multiple propagation will occur. For entry, an operation (sp) is introduced to propagate the local completion of operation op3. The global operations corresponding to the constructor SEQ are introduced using the global table. These operations are respectively an operation (gw) which detects the completion of the op3 operation followed by a global operation (gp) (the SEQ exit operations belong to the same group of co-local operations). of the manufacturer then generates the distributed command operations relating to the manufacturer's output operations and co-local with these operations. They consist of operations (sw) and (mp) followed by an operation (sw) for each of the op4 and op5 operations.

Le traitement des opérations op4 et op5 génère les mêmes opérations de commandes, sachant que chacune de ces opérations a une entrée constructeur SEQ et une sortie constructeur LSEQ. Ces opérations de commandes co-locales avec les opérations op4 et op5 sont une première opération (stp) et ensuite une opération (Iw) pour chacune des opérations op4 et op5. The processing of op4 and op5 operations generates the same command operations, knowing that each of these operations has a manufacturer input SEQ and a manufacturer output LSEQ. These co-local command operations with the op4 and op5 operations are a first operation (stp) and then an operation (Iw) for each of the op4 and op5 operations.

Le constructeur LSEQ a deux opérations d'entrée et une opération de sortie.The LSEQ constructor has two input operations and one output operation.

Les deux opérations d'entrée doivent être synchronisées chacune par une opération (sp) et une opération (mu). Aucune commande pour la sortie est nécessaire.The two input operations must each be synchronized by an operation (sp) and an operation (mu). No command for exit is required.

L'opération op6 est prévue en entrée avec un constructeur LSEQ et en sortie avec un constructeur FIN. Le traitement de l'entrée de ce noeud introduit une opération (stp) et la sortie une opération (il). Finalement le constructeur FIN avec l'aide des tables d'entrée et du constructeur global achève le graphe de commande avec une opération distribuée (sp) relative à l'opération op6 et les opérations centralisées (gw) et (sp).Operation op6 is scheduled for input with an LSEQ constructor and for output with a FIN constructor. Processing the input to this node introduces an operation (stp) and the output an operation (il). Finally the FIN constructor with the help of the input tables and the global constructor completes the command graph with a distributed operation (sp) relating to the op6 operation and the centralized operations (gw) and (sp).

Ce procédé d'exécution parallèle de requête de base permet aisément à l'aide d'un graphe de séquencement et de tables traduisant à chacun des noeuds constructeur ou des noeuds d'opération de transformer ce graphe de séquencement en séquence d'instruction permettant l'exécution d'une requête sur des processus parallèles.This method of parallel execution of basic request easily makes it possible, using a sequencing graph and tables translating to each of the constructor nodes or of the operation nodes, to transform this sequencing graph into an instruction sequence allowing the execution of a query on parallel processes.

Ainsi on a vu comment à partir d'une requête représentée par un graphe transformer cette requête en une succession d'opérations de commande atomique permettant l'exécution parallèle de cette requête dans un environnement multi processeurs à l'aide d'un langage parallèle-lera (langage for extended relational algebra). Ce procédé sera utilisé dans un gestionnaire de requêtes qui compile les requêtes formulées en langage ESQL (Extended queries langage) en une version de code généré de langage parallèle LERA.So we have seen how, starting from a request represented by a graph, transform this request into a succession of atomic control operations allowing the parallel execution of this request in a multi-processor environment using a parallel language. lera (language for extended relational algebra). This process will be used in a request manager which compiles requests formulated in ESQL language (Extended queries language) in a version of generated code of parallel LERA language.

Cette compilation s'effectue en plusieurs phases successives comme représentées à la figure 14 qui sont respectivement l'analyse, l'optimisation, la parallèlisation et la génération du code. Les résultats de ces transformations diverses effectués par ces étapes de compilation sont toutes exprimées dans différentes variantes du même langage intermédiaire (LERA).This compilation is carried out in several successive phases as shown in FIG. 14 which are respectively the analysis, the optimization, the parallelization and the generation of the code. The results of these various transformations carried out by these compilation steps are all expressed in different variants of the same intermediate language (LERA).

L'analyse de la requête ESQL génère un programme LERA-SEM (SEM pour sémantique) qui est ensuite optimiser par un optimiseur physique en un programme LERA-PHY (PHY pour physique). Le résultat de l'optimisation est un plan d'exécution de la requête qui minimise une fonction coût exprimée en terme des caractéristiques d'environnement de l'exécution parallèle. Le plan d'exécution décrit en LERA consiste en de simples opérations atomiques pour lesquelles les opérations de localisation et les algorithmes globaux et locaux utilisés sont exprimés par des annotations. Ceci est formulé sous forme de graphes. L'étape de parallèlisation ensuite compile le plan d'exécution de façon à générer un programme d'exécution parallèle où les communications de données et les processus de commande nécessaires pour le séquencement du programme sont explicités.Une phase de génération de code transforme ensuite le programme LERA-PAR en code C + + qui est compilé par un compilateur standard C+ +. Les modules résultant sont soit stockés dans un catalogue pour exécution ultérieure, soit directement exécutés par le gestionnaire de données. The analysis of the ESQL query generates a LERA-SEM program (SEM for semantics) which is then optimized by a physical optimizer into a LERA-PHY program (PHY for physics). The result of the optimization is a query execution plan which minimizes a cost function expressed in terms of the environmental characteristics of the parallel execution. The execution plan described in LERA consists of simple atomic operations for which the localization operations and the global and local algorithms used are expressed by annotations. This is formulated as graphs. The parallelization step then compiles the execution plan so as to generate a parallel execution program where the data communications and the control processes necessary for the sequencing of the program are explained. A phase of code generation then transforms the LERA-PAR program in C ++ code which is compiled by a standard C ++ compiler. The resulting modules are either stored in a catalog for later execution, or directly executed by the data manager.

Ainsi, si l'on reprend l'exemple de la requête figurant à l'annexe 1, qui peut générer par l'optimiseur physique un plan d'exécution correspondant à l'annexe 2, ce plan d'exécution s'exprimera sous la forme d'un graphe représenté à la figure 1 dans lequel les associations et les opérations locales sont représentées ainsi que les pipelines globaux et les algorithmes locaux correspondant à la requête. A ce graphe les tables qui correspondent à chacun des graphes élémentaires représentés aux figures SA à 13 et traduisant ces graphes sous forme de séquence d'opérations atomiques de communication et de commande vont permettre la traduction du graphe en différentes séquences d'opérations atomiques qui seront chacune adressée au processeur des noeuds correspondant au traitement à effectuer.Ceci permet de générer la succession d'opérations atomiques figurant en annexe 3. Le programme qui incorpore à la fois les opérations correspondant à l'exécution de la requête et les opérations atomiques de contrôle qui permettent une exécution parallèle de cette requête avec le séquencement souhaité.Thus, if we take again the example of the request appearing in appendix 1, which can generate by the physical optimizer an execution plan corresponding to annex 2, this execution plan will be expressed under the form of a graph represented in FIG. 1 in which the associations and the local operations are represented as well as the global pipelines and the local algorithms corresponding to the request. To this graph, the tables which correspond to each of the elementary graphs represented in FIGS. SA to 13 and translating these graphs in the form of sequence of atomic communication and command operations will allow the translation of the graph into different sequences of atomic operations which will be each addressed to the processor of the nodes corresponding to the processing to be carried out. This makes it possible to generate the succession of atomic operations appearing in appendix 3. The program which incorporates both the operations corresponding to the execution of the request and the atomic control operations which allow a parallel execution of this request with the desired sequencing.

D'autres modifications à la portée de l'homme de métier font également partie de l'esprit de l'invention. Other modifications within the reach of the skilled person are also part of the spirit of the invention.

ANNEXE 1
SELECT ACHETE.n veh FROM ACHETE, VOITURE
WHERE ACHETE.date > '010186'
and ACHETE.n veh = VOITURE.n veh
and VOlTURE.marque = "Renault"
and VOlTURE.n veh not in
select C.n)veh from CONTROLE C where C.date > '010186'
ANNEXE 2
Selectionner les véhicules contrôlés depuis Je 01/01/86
Il = select #home(CONTROLE), allselect, scanselect}
(CONTROLE C, C.date > '010186", (C.n veh))
Sélectionner les véhicules achetés depuis le 01/01/86 12 = select{home(VOITURE,01/01/86 ACHETE), allselect, scanselect}
(ACHETE, ACHETE.date > '010186', (ACHETE.n veh))
Sélectionner les véhicules Renault 13 = select {home(VOITURE, ACHETE), allselect, scanselect}
(VOITURE, VOITURE. marque = "Renault", (VOITURE.n veh))
Sélectionner tes véhicules Renauit non contrôlés depuis le 01/01/86 par différence des résultats intermédiaires 14 = difference {home(VOlTURE, ACHETE), assocdiff (|1.n veh), scandiff}
(@3{| pipe~int},@1 (materialized})
Joindre le résultat avec le résultat de la sélection sur Achat 15 = join {home(VOITURE, ACHETE), assocjoin (14.n veh), nestedloop}
(12 {materialized}, 14{|pipe~ext},12 .n veh = 14.n veh, (12.n veh))
ANNEXE 3 {Spread(l)} ASSOC
C1 = sw (START)
C2 = mp(C1)
C23 = sw (C2)
C3 = gp (C23)
C24 = sw(C2)
C4 = gp(C24)
End~ASSOC {home(CONTROL)}
ASSOC
C5 = sw(C4)
(T1 ,C6) =stp(C5)
Local~op(T1)
I1 = select{scanselect}(CONTROL C, C.date > '010186".(C.n veh))
12 = send(ll, home(ACHETE), distribute~on I1.n veh)
End~Local~op
C7 = Iw(C6,12)
C8 = sp(C7)
End~ASSOC {spread(1 )}
ASSOC
C9 = gw(C8)
C10 = gp (C9)
End~ASSOC {home(ACHETE,VOITURE)}
ASSOC
C11=sw(C3)
(T2,C12) = stp (C11)
Local~op(T2)
13 = select {scanselect}(ACHETE, ACHETE.date > '010186", (ACHETE,n veh))
S2 = store(l3)
End~Local~op
C13 = Iw (C12,S2)
C14 = sp (Cl 3)
Local~op(12 )
Si = store(12)
End~Local~op
C15 = |w (C10,S1)
C14 = sp (C15)
ANNEXE 3 (suite)
C15 = Iw (C10,S1)
C14 = sp (C15)
C16 = mw (C14)
(T3,C17) = stp (C16)
Local~op (T3)
14 = select {scanselect}
(VOITURE, VOITURE.marque = 'Renault", (VOITURE,n veh))
15 = difference (14,S1)
16 = local~send (15)
End~Local~op
C18 = Iw (C17,16)
C19 = sp (C18)
Loca~op (16)
Result = join {nestedloop} (S2,#6, #6.n veh = S2.n veh, (#6.n veh))
End~Loca~op
C20 = #w (C19, Result)
C21 = sp (C20)
End~ASSOC {spread (1)}
ASSOC
C22 = gw (C21)
END = sp (C22)
End~ASSOC
ANNEX 1
SELECT PURCHASE.n veh FROM PURCHASE, CAR
WHERE PURCHASED. Date>'010186'
and PURCHASE.n veh = CAR.n veh
and VOlTURE.marque = "Renault"
and VOlTURE.n veh not in
select Cn) veh from CONTROLE C where C.date>'010186'
APPENDIX 2
Select vehicles checked since 01/01/86
Il = select #home (CONTROLE), allselect, scanselect}
(CHECK C, C. date>'010186", (Cn veh))
Select vehicles purchased since 01/01/86 12 = select {home (CAR, 01/01/86 PURCHASED), allselect, scanselect}
(PURCHASED, PURCHASED.date>'010186', (PURCHASED.n veh))
Select Renault 13 vehicles = select {home (CAR, PURCHASED), allselect, scanselect}
(CAR, CAR. Brand = "Renault", (CAR.nve))
Select your Renauit vehicles not checked since 01/01/86 by difference in intermediate results 14 = difference {home (CAR, PURCHASED), assocdiff (| 1.n veh), scandiff}
(@ 3 {| pipe ~ int}, @ 1 (materialized})
Join the result with the result of the selection on Purchase 15 = join {home (CAR, PURCHASED), assocjoin (14.n veh), nestedloop}
(12 {materialized}, 14 {| pipe ~ ext}, 12 .n veh = 14.n veh, (12.n veh))
APPENDIX 3 {Spread (l)} ASSOC
C1 = sw (START)
C2 = mp (C1)
C23 = sw (C2)
C3 = gp (C23)
C24 = sw (C2)
C4 = gp (C24)
End ~ ASSOC {home (CONTROL)}
ASSOC
C5 = sw (C4)
(T1, C6) = stp (C5)
Local ~ op (T1)
I1 = select {scanselect} (CONTROL C, C. date>'010186". (Cn veh))
12 = send (ll, home (PURCHASED), distribute ~ on I1.n veh)
End ~ Local ~ op
C7 = Iw (C6,12)
C8 = sp (C7)
End ~ ASSOC {spread (1)}
ASSOC
C9 = gw (C8)
C10 = gp (C9)
End ~ ASSOC {home (PURCHASED, CAR)}
ASSOC
C11 = sw (C3)
(T2, C12) = stp (C11)
Local ~ op (T2)
13 = select {scanselect} (PURCHASED, PURCHASED.date>'010186", (PURCHASED, n veh))
S2 = store (l3)
End ~ Local ~ op
C13 = Iw (C12, S2)
C14 = sp (Cl 3)
Local ~ op (12)
If = store (12)
End ~ Local ~ op
C15 = | w (C10, S1)
C14 = sp (C15)
APPENDIX 3 (continued)
C15 = Iw (C10, S1)
C14 = sp (C15)
C16 = mw (C14)
(T3, C17) = stp (C16)
Local ~ op (T3)
14 = select {scanselect}
(CAR, CAR.brand = 'Renault ", (CAR, n veh))
15 = difference (14, S1)
16 = local ~ send (15)
End ~ Local ~ op
C18 = Iw (C17.16)
C19 = sp (C18)
Loca ~ op (16)
Result = join {nestedloop} (S2, # 6, # 6.n veh = S2.n veh, (# 6.n veh))
End ~ Loca ~ op
C20 = #w (C19, Result)
C21 = sp (C20)
End ~ ASSOC {spread (1)}
ASSOC
C22 = gw (C21)
END = sp (C22)
End ~ ASSOC

Claims (15)

REVENDICATIONS: 1. Procédé d'exécution parallèle de requête de bases de données relationnelles dans un environnement multi processeurs parallèle à mémoire distribuée consistant à intégrer le contrôle dans la requête lors de sa compilation, le contrôle étant obtenu en combinant un jeu d'opérations atomiques (Iw, sw, gw, stp, sp, gp, mp) de contrôle pour matérialiser un graphe de contrôle qui se superpose au graphe de la requête, ce graphe exprimant les dépendances entre les données par les liens entre les noeuds (11, 12, 3, 16) d'opérations et les types de dépendance de séquencement par des noeuds constructeur de deux types (SEQ, PIPE).CLAIMS: 1. Method for parallel execution of a query of relational databases in a parallel multi-processor environment with distributed memory consisting of integrating the control into the request during its compilation, the control being obtained by combining a set of atomic operations (Iw, sw, gw, stp, sp, gp, mp) control to materialize a control graph which is superimposed on the query graph, this graph expressing the dependencies between the data by the links between the nodes (11, 12 , 3, 16) of operations and types of sequencing dependency by constructor nodes of two types (SEQ, PIPE). 2. Procédé selon la revendication 1 caractérisé en ce que le graphe de contrôle exprime le groupement des noeuds en foyer (home, achète, voiture) d'une relation de la base, la colocalisation de plusieurs opérations sur un même noeud (select, store, figure 3) de l'architecture multi processeur, la réunion de plusieurs opérations (selected store, selected diff local transmit) en opération locale (loc~op4, loc~opl) et la réunion de plusieurs opérations locales (loc~op1, loc~op2, loc~op4) en association (A3).2. Method according to claim 1 characterized in that the control graph expresses the grouping of the nodes in focus (home, buy, car) of a relation of the base, the co-localization of several operations on the same node (select, store , figure 3) of the multi processor architecture, the meeting of several operations (selected store, selected diff local transmit) in local operation (loc ~ op4, loc ~ opl) and the meeting of several local operations (loc ~ op1, loc ~ op2, loc ~ op4) in association (A3). 3. Procédé selon la revendication 1 ou 2 caractérisé en ce que le premier type de noeud constructeur (PIPE) permet l'exécution d'une opération suivante dès que l'opération précédente à produit un tuple.3. Method according to claim 1 or 2 characterized in that the first type of constructor node (PIPE) allows the execution of a following operation as soon as the previous operation produces a tuple. 4. Procédé selon la revendication 2 caractérisé en ce que le deuxième type de noeud constructeur (SEQ) ne permet l'exécution de l'opération suivante qu'après l'achèvement complet de l'opération précédente.4. Method according to claim 2 characterized in that the second type of constructor node (SEQ) allows the execution of the following operation only after the complete completion of the previous operation. 5. Procédé selon la revendication 3 ou 4 caractérisé en ce que la synchronisation entre des opérations exécutées sur des groupes de noeuds différents et des opérations exécutées sur un même groupe est effectuée par deux familles de primitives de contrôle permettant la mise en place d'un mécanisme de contrôle.5. Method according to claim 3 or 4 characterized in that the synchronization between operations executed on groups of different nodes and operations executed on the same group is performed by two families of control primitives allowing the establishment of a control mechanism. 6. Procédé selon la revendication 5 caractérisé en ce que une première famille est constituée de primitives de propagation (stp, gp, mp, sp), l'autre famille de primitives d'attente (Iw, gw, mw, sw), le mécanisme de contrôle ne pouvant être constitué que par la connexion de deux primitives de type opposé (attente,propagation).6. Method according to claim 5 characterized in that a first family consists of propagation primitives (stp, gp, mp, sp), the other family of waiting primitives (Iw, gw, mw, sw), the control mechanism which can only be constituted by the connection of two primitives of opposite type (wait, propagation). 7. Procédé selon la revendication 6 caractérisé en ce que les primitives d'attente envoient à l'opération de contrôle suivante qui est une primitive de propagation, un message d'activation lorsqu'au moins un message de type fin de flot (EOS) est reçu.7. Method according to claim 6 characterized in that the waiting primitives send to the next control operation which is a propagation primitive, an activation message when at least one end of flow type message (EOS) is received. 8. Procédé selon la revendication 7 caractérisé en ce que une primitive d'attente multiple vérifie que le nombre de messages fin de flot reçu est égal au nombre d'opérations locales exécutées par un même noeud et produisant le message fin de flot.8. Method according to claim 7 characterized in that a multiple waiting primitive verifies that the number of end-of-flow messages received is equal to the number of local operations executed by the same node and producing the end-of-flow message. 9. Procédé selon la revendication 7 caractérisé en ce que une primitive d'attente globale (gw) vérifie que le nombre de messages de fin de flot reçu est égal au nombre de noeuds du foyer (home) sur lequel une ou plusieurs opérations s'exécutent en parallèle.9. Method according to claim 7 characterized in that a global waiting primitive (gw) verifies that the number of end-of-flow messages received is equal to the number of nodes in the home (home) on which one or more operations are run in parallel. 10. Procédé selon la revendication 6, caractérisé en ce que les primitives de propagation envoient un message de fin de flot à au moins une instance de l'opération de contrôle suivante lorsque le message d'activation est reçu.10. Method according to claim 6, characterized in that the propagation primitives send an end-of-flow message to at least one instance of the following control operation when the activation message is received. 11. Procédé selon la revendication 10 caractérisé en ce que une primitive de propagation multiple (mp) envoie autant de message de fin de flot que d'opération locale suivante.11. Method according to claim 10 characterized in that a multiple propagation primitive (mp) sends as many end-of-flow messages as the following local operation. 12 Procédé selon la revendication 10 caractérisé en ce que une primitive de propagation globale (gp) envoie autant de message de fin de flot qu'il y a de noeuds de le foyer (home) sur lequel s'exécute une ou plusieurs opérations locales suivante(s).12 Method according to claim 10 characterized in that a global propagation primitive (gp) sends as many end-of-flow messages as there are nodes of the home on which one or more local operations is executed following (s). 13. Procédé selon la revendication 10 caractérisé en ce que une primitive de propagation et de déclenchement (stp) envoie en outre un message de déclenchement à l'opération locale suivante, pour déclencher celle-ci.13. The method of claim 10 characterized in that a propagation and trigger primitive (stp) further sends a trigger message to the next local operation, to trigger it. 14. Procédé selon la revendication 5 caractérisé en ce que des tables de portion de programme constituées à partir des primitives et correspondant au séquence de primitive de contrôle décrivant des morceaux de graphe formés de noeuds d'opérations associés au noeud constructeur permettent de reconstituer par l'association successive de plusieurs tables le graphe correspondant à l'exécution parallèle d'une requête sur une base de données relationnelle dans un environnement multi processeurs à mémoire distribuée.14. Method according to claim 5 characterized in that program portion tables formed from the primitives and corresponding to the sequence of control primitive describing pieces of graph formed from operation nodes associated with the constructor node make it possible to reconstruct by l successive association of several tables the graph corresponding to the parallel execution of a query on a relational database in a multi-processor environment with distributed memory. 15. Utilisation du procédé selon l'une des revendications précédentes caractérisé en ce qu'elle est effectuée dans la phase de parallèlisation d'un gestionnaire de requêtes chargé de compiler les requêtes exprimées en langage E.S.Q.L. par exécution d'une phase d'analyse, d'une phase d'optimisation physique, d'une phase de parallèlisation et d'une phase de génération de code en langage C+ +.  15. Use of the method according to one of the preceding claims, characterized in that it is carried out in the parallelization phase of a request manager responsible for compiling the requests expressed in E.S.Q.L. by executing an analysis phase, a physical optimization phase, a parallelization phase and a code generation phase in C ++ language.
FR9301320A 1993-02-05 1993-02-05 Method for parallel execution of relational database queries and use of this method. Expired - Fee Related FR2701322B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR9301320A FR2701322B1 (en) 1993-02-05 1993-02-05 Method for parallel execution of relational database queries and use of this method.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9301320A FR2701322B1 (en) 1993-02-05 1993-02-05 Method for parallel execution of relational database queries and use of this method.

Publications (2)

Publication Number Publication Date
FR2701322A1 true FR2701322A1 (en) 1994-08-12
FR2701322B1 FR2701322B1 (en) 1995-03-17

Family

ID=9443800

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9301320A Expired - Fee Related FR2701322B1 (en) 1993-02-05 1993-02-05 Method for parallel execution of relational database queries and use of this method.

Country Status (1)

Country Link
FR (1) FR2701322B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7543281B2 (en) * 2002-07-22 2009-06-02 National Instruments Corporation Disabling and conditionally compiling graphical code in a graphical program

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PROCEEDINGS OF THE FIRST INTERNATIONAL CONFERENCE ON PARALLEL AND DISTRIBUTED INFORMATION SYSTEMS 4 Décembre 1991, MIAMI BEACH, FLORIDA pages 226 - 234 BERGSTEN ET AL 'Prototyping DBS3, a Shared-Memory Parallel Database System' *
PROCEEDINGS OF THE FIRST INTERNATIONAL CONFERENCE ON PARALLEL AND DISTRIBUTED INFORMATION SYSTEMS 4 Décembre 1991, MIAMI BEACH, FLORIDA pages 271 - 279 BORLA-SALAMET ET AL 'Compiling Control into Database Queries for Parallel Execution Management' *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7543281B2 (en) * 2002-07-22 2009-06-02 National Instruments Corporation Disabling and conditionally compiling graphical code in a graphical program

Also Published As

Publication number Publication date
FR2701322B1 (en) 1995-03-17

Similar Documents

Publication Publication Date Title
US9990399B2 (en) Low latency query engine for apache hadoop
CN107463635B (en) Method for inquiring picture data and distributed NewSQL database system
CN103177057B (en) Many accounting methods for internal memory column storage database
CN104885077B (en) Utilize the relation management continuous-query of filing
CN110942387B (en) Method and system for constructing electric ticket business function based on micro-service
US8489474B2 (en) Systems and/or methods for managing transformations in enterprise application integration and/or business processing management environments
US10452632B1 (en) Multi-input SQL-MR
US20090164985A1 (en) Compiling workflows into instructions for a state correlation engine
CN110908641B (en) Visualization-based stream computing platform, method, device and storage medium
CN109725926B (en) Method and device for managing baseline and data processing method
EP1444611A2 (en) Semantic web portal graphic interface
CN101287040A (en) Action prediction based on interactive history and context between sender and recipient
EP0601917A1 (en) Multimedia data management system
FR2780178A1 (en) PROCESS FOR TRANSFORMING AND FORWARDING DATA BETWEEN SERVERS OF AGENTS PRESENT ON MACHINES AND A CENTRAL AGENT SERVER PRESENT ON ANOTHER MACHINE
JP2000339287A (en) Concentrated affinity maintenance device and method therefor in client/server.data processing system managed by work load
FR2891077A1 (en) Business application implementing system for large enterprise, has automatic service calling server, with intermediation module, calling services, receiving data related to services and transforming them to be treated in application server
EP1515239A1 (en) Method and System for handling data extracted from multidimensional databases using a spreadsheet
CN112379884B (en) Method and system for realizing flow engine based on Spark and parallel memory calculation
CN101145163A (en) Method and system for obtaining data from a plurality of data pool
CN101202792B (en) Method and apparatus for processing messages based on relationship between sender and recipient
CN108431766A (en) Method and system for object-oriented/functional language to be mapped to database language
CA2699397A1 (en) Method of interrogating a database and interrogation device
FR2701322A1 (en) Process for parallel execution of relational database enquiries and use of this process
Fatouros et al. Knowledge Graphs and interoperability techniques for hybrid-cloud deployment of FaaS applications
Kühn et al. Contextual and relational role-based modeling framework

Legal Events

Date Code Title Description
ST Notification of lapse