FR3047580B1 - DATA BASE TABLE INDEX - Google Patents

DATA BASE TABLE INDEX Download PDF

Info

Publication number
FR3047580B1
FR3047580B1 FR1650922A FR1650922A FR3047580B1 FR 3047580 B1 FR3047580 B1 FR 3047580B1 FR 1650922 A FR1650922 A FR 1650922A FR 1650922 A FR1650922 A FR 1650922A FR 3047580 B1 FR3047580 B1 FR 3047580B1
Authority
FR
France
Prior art keywords
column
database table
rows
value
bitmap
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.)
Active
Application number
FR1650922A
Other languages
French (fr)
Other versions
FR3047580A1 (en
Inventor
Enrico Mano
Jose Morales Aragon
Marcos Rodriguez Palacios
Didier Spezia
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amadeus SAS
Original Assignee
Amadeus SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amadeus SAS filed Critical Amadeus SAS
Priority to FR1650922A priority Critical patent/FR3047580B1/en
Priority to ES17000126T priority patent/ES2930440T3/en
Priority to EP17000126.7A priority patent/EP3203388B1/en
Priority to CN201710056864.9A priority patent/CN107045535B/en
Publication of FR3047580A1 publication Critical patent/FR3047580A1/fr
Application granted granted Critical
Publication of FR3047580B1 publication Critical patent/FR3047580B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Un index pour table de base de données est fourni. L'index comprend une structure d'index pour chaque colonne de la table de base de données. Chaque structure d'index comprend un ensemble de tuples de pointeur pour chaque valeur qui apparaît dans la colonne et un bitmap qui indique les cellules sans valeur. Un premier tuple de pointeur indique une valeur et un second pointeur indique la rangée de la table de base de données avec la valeur. L'index indique également un ordre de spécificité des rangées de la table de base de données. Le système informatique procède à une demande en utilisant les bitmaps des structures d'index pour maintenir toutes les rangées de la table de base de données sans valeur et les tuples de pointeur pour filtrer toutes les rangées de la table de base de données qui ne comprennent pas la valeur d'entrée respective. La rangée qui est la plus en haut dans l'ordre de spécificité est sélectionnée parmi les rangées restantes et est retournée.An index for database table is provided. The index includes an index structure for each column of the database table. Each index structure includes a set of pointer tuples for each value that appears in the column, and a bitmap that indicates valueless cells. A first pointer tuple indicates a value and a second pointer indicates the row of the database table with the value. The index also indicates a specific order of rows in the database table. The computer system proceeds with a request using the bitmaps of the index structures to hold all rows of the valueless database table and the pointer tuples to filter all rows in the database table that do not include not the respective input value. The row that is the highest in the order of specificity is selected from the remaining rows and is returned.

Description

INDEX DE TABLE DE BASE DE DONNEESDATA BASE TABLE INDEX

DOMAINE DE L’INVENTIONFIELD OF THE INVENTION

De façon générale, la présente invention concerne la technologie de base de données. Plus spécifiquement, la présente invention est dirigée vers un index pour accéder à une table de base de données en réponse à une demande et pour déterminer l’enregistrement de données (rangée) le plus spécifique de la table de base de données conforme à la demande.In general, the present invention relates to database technology. More specifically, the present invention is directed to an index for accessing a database table in response to a request and for determining the most specific data record (row) of the request-compliant database table. .

CONTEXTECONTEXT

On connaît les tables de base de données d’index pour accéder aux enregistrements de données de manière directe ou accélérée. Un index est une structure de métadonnées qui améliore la vitesse des opérations d’extraction de données sur une table de données, aux dépens de l’espace de stockage pour maintenir la structure des données d’index. Les index sont utilisés pour localiser rapidement les données sans devoir chercher chaque rangée dans la table de base de données, à chaque fois que l’on accède à la table de base de données. Les index peuvent être créés en utilisant une ou plusieurs colonnes de la table de base de données et fournir à la fois la base pour les consultations aléatoires rapides et l’accès efficace aux enregistrements ordonnés.Index database tables are known to access data records in a direct or accelerated manner. An index is a metadata structure that improves the speed of data extraction operations on a data table, at the expense of storage space to maintain the structure of the index data. Indexes are used to quickly locate data without having to search each row in the database table each time you access the database table. Indexes can be created using one or more columns of the database table and provide both the basis for fast random browsing and efficient access to ordered records.

Une tâche particulière dans diverses applications liées à la base de données consiste à récupérer uniquement la rangée de la table de base de données la plus spécifique répondant à une demande d’extraction. Par conséquent, en réponse à une demande, l’application de base de données détermine donc la rangée de la table de base de données qui correspond aux paramètres ou aux critères d’entrée de la manière la plus spécifique. À cette fin, une hiérarchie de spécificité au sein de la rangée est généralement présente dans la table de base de données.A particular task in various database-related applications is to retrieve only the row of the most specific database table responding to a pull request. Therefore, in response to a request, the database application therefore determines the row of the database table that corresponds to the parameters or input criteria in the most specific manner. For this purpose, a hierarchy of specificity within the row is usually present in the database table.

Une approche connue pour déterminer la rangée la plus spécifique dans la table de base de données utilise l’algorithme Raite. L’algorithme Raite est un algorithme de mise en correspondance de motif qui est utilisé par ex. pour implémenter des systèmes de règles de production (par ex. la planification automatisée, les systèmes experts et les systèmes de sélection d’action). Il est utilisé pour déterminer toutes les règles qui correspondent aux critères d’entrée. Une prétendue « résolution de conflit » est ensuite réalisée. Elle utilise un ordre parmi les règles déterminées pour identifier la règle qui doit être retournée.A known approach to determining the most specific row in the database table uses the Raite algorithm. The Raite algorithm is a pattern matching algorithm that is used eg. to implement production rule systems (eg automated planning, expert systems, and action selection systems). It is used to determine all rules that match the input criteria. An alleged "conflict resolution" is then carried out. It uses an order among the rules determined to identify the rule to be returned.

RESUME DE L’INVENTION L’objet de la présente invention est de fournir un indice de table de base de données qui facilite particulièrement la détermination de la rangée de tables de base de données la plus spécifique remplissant les paramètres d’entrée d’une demande d’extraction. L’objet de la présente invention est également de fournir un index de table de base de données qui a une représentation de données particulièrement compactes et minimise ainsi les besoins en mémoire. L’objet de la présente invention est également de fournir un index de table de base de données qui s’occupe spécifiquement de l’architecture interne et de la mémoire de dimensionnement des systèmes informatiques ultramodemes et qui est optimisé pour être conservé dans un cache de processeur et facilite ainsi la détermination de haute performance de la rangée de table de base de données la plus spécifique. L’objet de la présente invention est également de fournir un index de table de base de données permettant le traitement de réponse déterministe.SUMMARY OF THE INVENTION The object of the present invention is to provide a database table index that particularly facilitates the determination of the most specific database table row that fills the input parameters of a request. extraction. The object of the present invention is also to provide a database table index that has a particularly compact data representation and thereby minimizes memory requirements. The object of the present invention is also to provide a database table index which deals specifically with the internal architecture and sizing memory of ultramodern computer systems and which is optimized to be kept in a cache of processor and thus facilitates the high-performance determination of the most specific database table row. The object of the present invention is also to provide a database table index for deterministic response processing.

Selon un aspect, ces objets sont résolus par une méthode de détermination de la rangée la plus spécifique dans la table de base de données. La table de base de données est maintenue par un système informatique. La table de base de données est constituée d’une pluralité de rangées et d’une pluralité de colonnes. Les rangées et les colonnes de la table de base de données forment des cellules. Chacune des cellules comprend soit une valeur au moins soit aucune valeur. Le système informatique maintient également un index pour la table de base de données. L’index comprend une structure d’index respective pour chaque colonne de la table de base de données. Chaque structure d’index comprend deux types de sous-structures, à savoir un ensemble respectif de tuples de pointeur pour chaque valeur apparaissant dans la colonne respective et un bitmap lié à la cellule de la colonne sans valeur. Chaque tuple de pointeur comprend un premier pointeur indiquant une des valeurs qui apparaît dans la colonne et un second pointeur indiquant la rangée de la table de base de données dans laquelle apparaît la valeur. Le bitmap indique toutes les cellules dans la colonne respective sans valeur. L’index indique également un ordre de spécificité des rangées de la table de base de données.In one aspect, these objects are solved by a method of determining the most specific row in the database table. The database table is maintained by a computer system. The database table consists of a plurality of rows and a plurality of columns. The rows and columns of the database table form cells. Each cell has either a value or at least one value. The computer system also maintains an index for the database table. The index includes a respective index structure for each column of the database table. Each index structure comprises two types of substructures, namely a respective set of pointer tuples for each value appearing in the respective column and a bitmap related to the cell of the valueless column. Each pointer tuple includes a first pointer indicating one of the values that appears in the column and a second pointer indicating the row of the database table in which the value appears. The bitmap indicates all cells in the respective column with no value. The index also indicates a specific order of rows in the database table.

La méthode de détermination de la rangée la plus spécifique comprend les activités suivantes :The most specific row determination method includes the following activities:

Le système informatique reçoit une demande indiquant les colonnes de la table de base de données associées à une valeur d’entrée respective. Le système informatique traite ensuite la demande de manière incrémentielle pour chaque colonne indiquée dans la demande. Pour chaque colonne, le système informatique utilise le bitmap de la structure d’index pour que la colonne maintienne toutes les rangées de la table de base de données qui ne contiennent pas de valeurs dans la cellule de la colonne considérée. De plus, pour chaque colonne, le système informatique utilise le tuple de pointeur de la structure d’index pour que la colonne filtre toutes les rangées de la table de base de données qui ne comprennent pas la valeur d’entrée respective. Une fois que toutes les colonnes avec les valeurs d’entrée respectives de la demande ont été traitées, le système informatique sélectionne la rangée la plus en haut dans l’ordre de spécificité parmi les rangées restantes, c-à-d les rangées qui n’ont pas été filtrées pendant le traitement incrémentiel des colonnes. Enfin, le système informatique retourne la valeur d’au moins une cellule de la rangée déterminée.The computer system receives a request indicating the columns of the database table associated with a respective input value. The computer system then processes the request incrementally for each column indicated in the request. For each column, the computer system uses the bitmap of the index structure for the column to maintain all rows in the database table that do not contain values in the cell of the column in question. In addition, for each column, the computer system uses the pointer tuple of the index structure for the column to filter all rows in the database table that do not understand the respective input value. Once all the columns with the respective input values of the request have been processed, the computer system selects the topmost row in the order of specificity among the remaining rows, i.e. the rows that have not been filtered during incremental column processing. Finally, the computer system returns the value of at least one cell of the determined row.

Selon un autre aspect, un système informatique agencé de façon à exécuter une méthode respective de détermination de la rangée la plus spécifique dans la table de base de données est fourni.In another aspect, a computer system arranged to execute a respective method of determining the most specific row in the database table is provided.

Selon encore un autre aspect, un programme informatique pour ordonner à un système informatique d’exécuter la méthode de détermination de la rangée la plus spécifique dans la table de base de données est fourni.In yet another aspect, a computer program for instructing a computer system to execute the method of determining the most specific row in the database table is provided.

BRÈVE DESCRIPTION DES DESSINSBRIEF DESCRIPTION OF THE DRAWINGS

La présente invention sera décrite en référence aux dessins annexés. Les numéros de référence similaires indiquent généralement des éléments identiques ou fonctionnellement similaires.The present invention will be described with reference to the accompanying drawings. Similar reference numbers generally indicate identical or functionally similar elements.

La figure 1 illustre une base de données avec une table de base de données.Figure 1 illustrates a database with a database table.

La figure 2 est un exemple générique d’une table de base de données et d’une demande.Figure 2 is a generic example of a database table and a request.

La figure 3 illustre la structure d’un index comme décrit dans les présentes.Figure 3 illustrates the structure of an index as described herein.

La figure 4 est un exemple générique d’un index pour la table de base de données de la figure 2.Figure 4 is a generic example of an index for the database table of Figure 2.

La figure 5 donne un exemple générique de traitement de demande utilisant l’indexFigure 5 gives a generic example of request processing using the index

La figure 6 est un organigramme d’un exemple de traitement de demandes.Figure 6 is a flowchart of an example of request processing.

La figure 7 est un exemple d’agencement d’un ensemble de tuples de pointeur en mémoire.Fig. 7 is an exemplary arrangement of a set of pointer tuples in memory.

La figure 8 illustre une recherche binaire sur un ensemble de tuples de pointeur.Figure 8 illustrates a binary search on a set of pointer tuples.

La figure 9 est un exemple de génération d’index.Figure 9 is an example of index generation.

La figure 10 est un organigramme de haut niveau d’un processus général comprenant la génération d’index et la détermination de la rangée la plus spécifique.Figure 10 is a high level flowchart of a general process including index generation and determination of the most specific row.

La figure 11 visualise de manière schématique l’entretien d’une table de base de données et l’index dans les mémoires d’un système informatique.Figure 11 schematically shows the maintenance of a database table and the index in the memories of a computer system.

La figure 12 montre une table de routage en guise d’exemple de table de base de données.Figure 12 shows a routing table as an example of a database table.

La figure 13 est un exemple de vue schématique de l’architecture interne d’un système informatique mettant en œuvre la base de données et/ou un client demandeur.FIG. 13 is an example of a schematic view of the internal architecture of a computer system implementing the database and / or a requesting client.

DESCRIPTION DÉTAILLÉE L’index décrit dans les présentes facilite l’accès à une table de base de données qui est maintenue par un système de base de données. Le terme base de données tel qu’utilisé dans les présentes inclut toutes sortes de référentiels de données conservant des données statiques ou dynamiques sous forme de tables. Ces sortes de référentiels de données comprennent, par exemple, des systèmes de base de données relationnelles tels que les bases de données Oracle®, Microsoft® SQL Server, Microsoft Access®, le système de base de données relationnelle objet tel que PostgreSQL, des systèmes de règles de production tels que des systèmes experts et des moteurs de systèmes de sélection d’action (par ex. des systèmes experts maintenant des actions d’entretien et de réparation pour des dispositifs techniques), les éléments de commande et de réseau tels que les routeurs (avec des tables de routage), les nœuds de gestion de réseau (avec journal et/ou des données de commande conservées dans des tables) ou les systèmes SCADA (qui conservent aussi le journal et/ou les données de commande sous forme de tables) ainsi que les systèmes propriétaires conservant les données par ex. dans de simples tables telles que les tableaux Microsoft Excel® ou les fichiers de texte tabulateur (par ex. fichiers csv). Généralement, la base de données est mise en œuvre sur un système informatique tel qu’un serveur de base de données ou un nœud de réseau. La base de données est agencée pour recevoir des demandes d’extraction (simplement ci-après dénommées « demandes ») précisant les critères de recherches (ci-après-dénommés « valeurs d’entrée ») pour traiter la demande en vérifiant les valeurs d’entrée par rapport à une table de base de données au moins, pour déterminer un enregistrement de données de la table de base de données qui remplit les valeurs d’entrée et pour retourner une ou plusieurs valeurs de cet enregistrement de données. À cette fin, la base de données utilise tout type de langage de base de données et est équipée de tout type d’interface de communication connu dans la technique. L’auteur de la demande, par ex. un client (ordinateur, station mobile, application, etc.) dans un réseau local (LAN) ou dans un réseau distant interrogeant la base de données 1.DETAILED DESCRIPTION The index described herein facilitates access to a database table maintained by a database system. The term database as used herein includes all kinds of data repositories retaining static or dynamic data in the form of tables. These kinds of data repositories include, for example, relational database systems such as Oracle® databases, Microsoft® SQL Server, Microsoft Access®, object relational database system such as PostgreSQL, systems production rules such as expert systems and action selection system engines (eg expert systems maintaining maintenance and repair actions for technical devices), control and network elements such as routers (with routing tables), network management nodes (with log and / or order data stored in tables) or SCADA systems (which also store the log and / or order data in the form of of tables) as well as the proprietary systems holding the data eg. in simple tables such as Microsoft Excel® tables or tab text files (eg csv files). Generally, the database is implemented on a computer system such as a database server or a network node. The database is arranged to receive retrieval requests (simply hereinafter referred to as "requests") specifying the search criteria (hereinafter-referred to as "input values") to process the request by checking the d entry to at least one database table to determine a data record of the database table that fills in the input values and returns one or more values of that data record. To this end, the database uses any type of database language and is equipped with any type of communication interface known in the art. The applicant, eg. a client (computer, mobile station, application, etc.) in a local area network (LAN) or in a remote network querying the database 1.

Comme le montre la figure 1, une base de données 1 maintient au moins une table de base de données 2. La table de base de données 2 est constituée d’un nombre de rangées 3 et d’un nombre de colonnes 4. Chaque rangée 3 de la table de base de données comprend un enregistrement de données et chaque colonne 4 de la table de base de données constitue un attribut des enregistrements de données, généralement conformément à un modèle de données (tel qu’un modèle de gestion de base de données relationnelle). L’association des rangées 3 et des colonnes 4 forme la cellule 5. Généralement, tout nombre de rangées 3 et de colonnes 4 peut être présent dans la table de base de données 2. Des enregistrements de données peuvent être ajoutés ou supprimés, le nombre de rangées 3 notamment n’est pas fixé, mais il peut changer au fil du temps. La base de données 2 peut également inclure des mécanismes pour redéfinir ou modifier le modèle de données, c-à-d que le nombre de colonnes peut aussi être adapté.As shown in FIG. 1, a database 1 maintains at least one database table 2. The database table 2 consists of a number of rows 3 and a number of columns 4. Each row 3 of the database table includes a data record and each column 4 of the database table is an attribute of the data records, generally in accordance with a data model (such as a basic business model of relational data). The association of rows 3 and 4 forms cell 5. Generally, any number of rows 3 and 4 may be present in database table 2. Data records may be added or deleted, number of rows 3 in particular is not fixed, but it can change over time. Database 2 may also include mechanisms to redefine or modify the data model, ie the number of columns may also be adapted.

Les cellules 5 de la table de base de données contiennent soit au moins une valeur soit aucune valeur (figure 2). Les valeurs dans les cellules sont généralement conformes à un type de données défini pour la colonne respective, comme prescrit par le modèle de données. Les types de données comprennent, par exemple, des données Booléennes (c-à-d que les valeurs sont « vraies » ou « fausses »), des nombres entiers, des nombres à virgule flottante, des caractères, des chaînes, des pointeurs ainsi que des types de données complexes, fonctionnelles telles que les dates. Plus d’une valeur peut être présente dans une cellule 5, c-à-d qu’une cellule 5 peut comprendre un vecteur ou une liste de valeurs, par ex. sous forme d’un ensemble, d’un enregistrement, d’une série, d’une énumération ou d’un objet de valeurs conformément à un type de données. Dans certains modes de réalisation, le système informatique est un routeur, la table de base de données est une table de routage, chaque rangée de la table de routage constitue une règle de routage pour acheminer une demande entrante vers une destination, la table de routage comprend une colonne de destination avec des valeurs de destination possibles et une colonne d’acheminement avec les valeurs correspondantes indiquant un acheminement vers la destinationThe cells 5 of the database table contain either at least one value or no value (FIG. 2). The values in the cells generally conform to a data type defined for the respective column, as prescribed by the data model. Data types include, for example, Boolean data (ie, values are "true" or "false"), integers, floating point numbers, characters, strings, pointers, and so on. than complex, functional data types such as dates. More than one value may be present in a cell 5, i.e. a cell 5 may comprise a vector or a list of values, e.g. as a set, record, series, enumeration, or value object according to a data type. In some embodiments, the computer system is a router, the database table is a routing table, each row of the routing table is a routing rule for routing an incoming request to a destination, the routing table includes a destination column with possible destination values and a routing column with the corresponding values indicating a route to the destination

Les cellules 5 sans valeur peuvent comprendre des caractères de remplacement tels que NUL ou *. Ces caractères de remplacement précisent l’absence de valeur, c-à-d qu’une cellule respective est considérée comme incluant toute valeur de la gamme de valeurs autorisée pour le type de données des colonnes correspondantes, comme prescrit dans le modèle de données. Un exemple d’enregistrement de données utilisant des caractères de remplacement est l’itinéraire standard dans une table de routage IP qui utilise l’adresse réseau « 0.0.0.0 » dans les colonnes d’adresse de destination et le masque de sous-réseau dans les colonnes de masque de sous-réseau comme caractère de remplacement pour toute adresse IP de destination possible (cf. exemple de table de routage de la figure 12).The valueless cells may include wildcards such as NUL or *. These wildcards specify the absence of a value, ie, a respective cell is considered to include any value in the range of values allowed for the data type of the corresponding columns, as prescribed in the data model. An example of a data record using wildcards is the standard route in an IP routing table that uses the network address "0.0.0.0" in the destination address columns and the subnet mask in the subnet mask columns as a wild card for any possible destination IP address (see example of the routing table in Figure 12).

La figure 2 montre un exemple générique de table de base de données 2 avec six rangées 3 (c-à-d six enregistrements de données) et sept colonnes 4 (c-à-d que les enregistrements de données ont sept attributs). Les colonnes de cette table de base de données exemplaire définissent tout type d’attributs pour les enregistrements de données conservés par les rangées. La première colonne 4A définit un attribut clé des enregistrements de données. La première rangée 3A définit, par exemple, un enregistrement de données par défaut avec des caractères de remplacement « * » dans les colonnes 4B à 4F et un « oui » dans la dernière colonne 4G qui est un type de donnée Booléenne. Par conséquent, la première rangée 3A précise « oui » comme réponse par défaut. Les autres rangées définissent des enregistrements de données plus spécifiques. Par exemple, la seconde rangée 3B précise un tuple de valeurs « A, B » comme attribut dans la seconde colonne 4B et « non » comme dernier attribut de l’enregistrement de données, tandis que toutes les autres cellules contiennent des caractères de remplacement (négligeant la colonne clé 4A), c-à-d que toute valeur pour ces attributs tombent dans l’enregistrement de données de la rangée 3B. Par exemple, le modèle de données peut définir des valeurs F, G, H, I, J et K comme plage de données autorisée pour la troisième colonne 4C. Par conséquent, le caractère de remplacement dans la troisième cellule du second enregistrement de données (rangée 3B, colonne 4C) représente toutes les valeurs possibles F, G, H, I, J et K de cet attribut du second enregistrement de données.Figure 2 shows a generic example of database table 2 with six rows 3 (ie, six data records) and seven columns 4 (ie, the data records have seven attributes). The columns of this exemplary database table define any kind of attributes for the data records held by the rows. The first column 4A defines a key attribute of the data records. The first row 3A defines, for example, a default data record with wildcards "*" in columns 4B to 4F and a "yes" in the last column 4G which is a Boolean data type. Therefore, the first row 3A specifies "yes" as the default answer. The other rows define more specific data records. For example, the second row 3B specifies a tuple of values "A, B" as attribute in the second column 4B and "no" as the last attribute of the data record, while all other cells contain wildcards ( neglecting key column 4A), ie any value for these attributes falls in the data record of row 3B. For example, the data model may define F, G, H, I, J, and K values as the allowed data range for the third column 4C. Therefore, the wild card character in the third cell of the second data record (row 3B, column 4C) represents all possible values F, G, H, I, J, and K of this attribute of the second data record.

La table de base de données 2 est généralement stockée dans la mémoire du système informatique, par exemple dans la mémoire principale (RAM).The database table 2 is generally stored in the computer system memory, for example in the main memory (RAM).

Comme exposé au départ, l’index de la table de base de données décrit dans les présentes est en particulier agencé pour permettre de déterminer la rangée la plus spécifique correspondant à une demande. En général, les rangées contenant plus de caractères de remplacement (c-à-d plus de non valeurs, moins de cellules avec valeurs) que les autres rangées sont considérées comme étant moins spécifiques que les rangées comprenant moins de caractères de remplacement (c-à-d moins de non valeurs, plus de cellules avec valeur). En d’autres termes, les rangées comprenant des enregistrements de données plus généraux sont définies pour être moins spécifiques que les rangées avec un contenu plus précis ; ces dernières sont définies pour être plus spécifiques. Afin de faciliter la détermination de la rangée la plus spécifique qui correspond aux valeurs d’entrée d’une demande, un ordre de spécificité parmi les rangées de la table de base de données 2 est soit donné, soit établi. En option, l’ordre de spécificité est implicite dans le tri de la rangée. Par exemple, les rangées sont triées dans la table de non spécifique à très spécifique, comme dans l’exemple de la table de base de données indiqué à la figure 2. Dans certains modes de réalisation, l’ordre de spécificité est explicitement défini, par ex. par une colonne spécifique indiquant le niveau respectif de spécificité des rangées, telle que les valeurs clés dans la colonne clé 4A de la table de base de données 2 à la figure 2. En option, l’ordre de spécificité strictement monotone, c-à-d que chaque rangée de la table de base de données a un ordre de spécificité unique. Dans d’autres exemples, les catégories de spécificité sont définies, et de multiples rangées peuvent partager un niveau commun de spécificité. Dans les derniers exemples, un mécanisme est présent pour s’assurer qu’une seule rangée de rangées multiples membre du même niveau de spécificité remplit les valeurs d’entrée dans la demande, par ex. les rangées définissent mutuellement des enregistrements de données exclusifs et les valeurs sont indiquées dans la demande pour un nombre minimum de rangées de la table de base de données.As explained at the outset, the index of the database table described herein is in particular arranged to determine the most specific row corresponding to a request. In general, rows containing more wildcards (ie more nonvalues, fewer cells with values) than the other rows are considered less specific than rows with fewer wildcards (c-). to less than no values, no more cells with value). In other words, the rows comprising more general data records are defined to be less specific than the rows with more accurate content; these are defined to be more specific. In order to facilitate the determination of the most specific row that corresponds to the input values of a request, an order of specificity among the rows of the database table 2 is either given or established. Optionally, the order of specificity is implicit in sorting the row. For example, the rows are sorted in the nonspecific to very specific table, as in the example of the database table shown in Figure 2. In some embodiments, the order of specificity is explicitly defined, eg. by a specific column indicating the respective level of row specificity, such as the key values in key column 4A of database table 2 in Figure 2. As an option, the strictly monotonic order of specificity, c-to -d that each row of the database table has a unique order of specificity. In other examples, the categories of specificity are defined, and multiple rows may share a common level of specificity. In the last examples, a mechanism is present to ensure that a single row of multiple rows member of the same level of specificity fills the input values in the request, e.g. the rows mutually define exclusive data records and the values are indicated in the request for a minimum number of rows of the database table.

En réponse à la réception d’une demande indiquant au moins des colonnes et des valeurs d’entrée respectives, la base de données 1 procède à la demande avec les valeurs d’entrée comprises dans la demande et compare les valeurs d’entrée avec la table de base de données 2 afin de déterminer la rangée la plus spécifique remplissant les valeurs d’entrée. En se référant à nouveau à la figure 2, un exemple générique de demande entrante 9 est reçu. Dans l’exemple de la figure 2, l’ordre de spécificité est explicitement défini par la colonne 4A qui trie les rangées conformément aux valeurs clés, tandis que la rangée 3A est la rangée la moins spécifique (étant donné qu’elle contient cinq caractères de remplacement et seulement une valeur dans la colonne 4G) et la rangée 3F est la valeur la plus spécifique (étant donné qu’elle ne contient aucun caractère de remplacement mais seulement des cellules avec valeurs). Dans l’exemple de la figure 2, la demande entrante 9 indique les cinq colonnes 4B, 4C, 4D, 4E et 4F ainsi que les valeurs d’entrée respectives. La base de données 1 détermine que la dernière rangée 3F est la rangée la plus spécifique correspondant à la demande entrante 9, étant donné que la valeur « A » dans la cellule 4B/3F correspond à la valeur d’entrée A pour la colonne 4B, la valeur « F » dans la cellule 4C/3F correspond à la valeur d’entrée F pour la colonne 4C, les valeurs « P, R » dans la cellule 4D/3F correspondent à la valeur d’entrée P pour la colonne 4D, la valeur « W » dans la cellule 4E/3F correspond à la valeur d’entrée W pour la colonne 4E et la valeur « Z » dans la cellule 4F/3F correspond à la valeur d’entrée Z pour la colonne 4F. Les deux autres rangées 3 A et 3B qui correspondent également aux valeurs d’entrée 6 de la demande entrante 9 sont moins spécifiques que la rangée 3F, étant donné qu’elles sont classées plus bas dans la spécificité de l’ordre défini implicitement de la table de base de données 2.In response to receiving a request indicating at least respective columns and input values, the database 1 proceeds with the request with the input values included in the request and compares the input values with the database table 2 to determine the most specific row that fills the input values. Referring again to Figure 2, a generic example of incoming request 9 is received. In the example of Figure 2, the order of specificity is explicitly defined by column 4A which sorts the rows according to the key values, while row 3A is the least specific row (since it contains five characters replacement and only one value in column 4G) and row 3F is the most specific value (since it contains no wildcards but only cells with values). In the example of FIG. 2, the incoming request 9 indicates the five columns 4B, 4C, 4D, 4E and 4F as well as the respective input values. The database 1 determines that the last row 3F is the most specific row corresponding to the incoming request 9, since the value "A" in the cell 4B / 3F corresponds to the input value A for the column 4B , the value "F" in cell 4C / 3F corresponds to the input value F for column 4C, the values "P, R" in cell 4D / 3F correspond to the input value P for column 4D the value "W" in cell 4E / 3F corresponds to the input value W for column 4E and the value "Z" in cell 4F / 3F corresponds to the input value Z for column 4F. The other two rows 3A and 3B which also correspond to the input values 6 of the incoming request 9 are less specific than the row 3F, since they are classified lower in the specificity of the implicitly defined order of the database table 2.

Une fois que la rangée 3 la plus spécifique est déterminée, au moins une valeur (attribut) de la rangée la plus spécifique est retournée. Dans l’exemple de la figure 2, la valeur de la colonne 4G de la rangée 3 F est retournée, c-à-d la valeur Booléenne « non ».Once the most specific row 3 is determined, at least one value (attribute) of the most specific row is returned. In the example of FIG. 2, the value of column 4G of row 3F is returned, ie the Boolean value "no".

La détermination de la rangée la plus spécifique correspondant à une demande utilise l’index 10 décrit dans le présent document (figure 3). L’index de la table de base de données 2 comprend les éléments suivants : - Il existe une structure d’index 11 pour chaque colonne 4 de la table de base de données pour laquelle les valeurs d’entrée dans une demande sont attendues. Une structure d’index 11 fait par conséquent également référence à une structure d’index spécifique à la colonne ci-après. Chaque structure d’index 11 spécifique à la colonne dispose de deux éléments, à savoir o un ensemble de tuples de pointeurs 12 et o un bitmap 13 (comme habituellement compris par la personne qualifiée, un bitmap est une collection de bits contigus, c-à-d un tableau de bits). - L’ensemble de tuples de pointeur 12 a pour fonction de se référer à toutes les valeurs dans les cellules de la colonne à laquelle la structure d’index 11 respective, spécifique à la colonne, fait référence. Chaque tuple de pointeur 14 dans l’ensemble 12 comprend un premier pointeur 15 et un second pointeur 16. o Le premier pointeur 15 fait référence à l’une des valeurs comprises dans la colonne. La valeur est stockée à un emplacement particulier dans la mémoire du système informatique hébergeant la base de données 1. Le premier pointeur fait référence à cet emplacement de mémoire. o Le second pointeur 16 indique la rangée de la table de base de données 2 dans laquelle la valeur apparaît. Par exemple, la rangée est identifiée par une valeur clé qui est encore stockée à un emplacement de mémoire particulier dans la mémoire du système informatique hébergeant la base de données 1. Le second pointeur fait référence à cet emplacement de mémoire.The determination of the most specific row corresponding to a request uses the index 10 described in this document (FIG. 3). The index of the database table 2 comprises the following elements: - There is an index structure 11 for each column 4 of the database table for which the input values in a request are expected. An index structure 11 therefore also refers to an index structure specific to the column below. Each column-specific index structure 11 has two elements, namely o a set of pointer tuples 12 and o a bitmap 13 (as usually understood by the qualified person, a bitmap is a collection of contiguous bits, c- to a bit array). The set of pointer tuples 12 has the function of referring to all the values in the cells of the column to which the respective column-specific index structure 11 refers. Each pointer tuple 14 in the set 12 includes a first pointer 15 and a second pointer 16. o The first pointer 15 refers to one of the values included in the column. The value is stored at a particular location in the memory of the computer system hosting the database 1. The first pointer refers to this memory location. o The second pointer 16 indicates the row of the database table 2 in which the value appears. For example, the row is identified by a key value that is still stored at a particular memory location in the memory of the computer system hosting the database 1. The second pointer refers to that memory location.

Ainsi, le nombre de tuples de pointeur 14 compris dans l’ensemble 12 correspond au nombre de valeurs apparaissant dans la colonne à laquelle la structure d’index 11 respective, spécifique à la colonne, fait référence. - Le bitmap 13 précise les cellules dans la colonne à laquelle la structure d’index 11 respective, spécifique à la colonne, fait référence et qui n’a pas de valeurs, c-à-d qu’elle comprend des caractères de remplacement. Le bitmap 13 est par conséquent également appelé « bitmap sans valeur ». Le nombre de bits dans le bitmap sans valeur 13 correspond au nombre de rangées 3 de la table de base de données 2.Thus, the number of pointer tuples 14 included in the set 12 corresponds to the number of values appearing in the column to which the column-specific, respective index structure 11 refers. Bitmap 13 specifies the cells in the column to which the respective column-specific index structure 11 refers and which has no values, i.e. it includes wildcards. Bitmap 13 is therefore also called "valueless bitmap". The number of bits in the valueless bitmap 13 corresponds to the number of rows 3 of the database table 2.

La figure 4 est un exemple d’un index 10. L’exemple d’index donné avec la figure 4 est lié à l’exemple générique de table de base de données de la figure 2. L’index 10 indiqué par la figure 4 est composé de cinq structures d’index 11 correspondant aux colonnes 4B à 4F de table de base de données 2 de la figure 2 pour laquelle les valeurs d’entrée 6 sont attendues (la colonne 4G avec le type de données Booléennes ne peut pas être demandé dans l’exemple de la figure 2 : les valeurs de cette colonne sont des valeurs de retour). Chacune des structures d’index 11 contient un ensemble de tuples de pointeur 12 et le bitmap 13 sans valeur. L’ensemble de tuples de pointeur 12 dans chaque structure d’index 11 spécifique à la colonne constitue une liste compacte de toutes les valeurs comprises dans la colonne respective de table de base de données 2. Par exemple, l’ensemble 12B dans la structure d’index 11B liste la présence de toutes les valeurs A, B et C apparaissant dans la colonne 4B. La valeur A apparaît dans les rangées avec les valeurs clés R2, R4 et R6 ; la valeur B est présente dans les rangées avec les valeurs clés R2 et R5 et la valeur C est présente dans les rangées avec les valeurs clés R3 et R4 (cf. figure 2). Comme susmentionné, les premiers pointeurs dans les tuples de pointeurs font référence à l’adresse de mémoire respective des valeurs A, B et C dans la mémoire de l’ordinateur, tandis que les seconds pointeurs dans les tuples de pointeurs indiquent la rangée correspondante c-à-d font référence aux valeurs clés de la rangée dans cet exemple. La même chose est vraie pour les autres ensembles 12C à 12F dans les structures d’index 1 IC à 11F.Fig. 4 is an example of an index 10. The exemplary index given with Fig. 4 is related to the generic example of database table of Fig. 2. The index 10 indicated by Fig. 4 is composed of five index structures 11 corresponding to columns 4B to 4F of database table 2 of FIG. 2 for which input values 6 are expected (column 4G with the Boolean data type can not be asked in the example of Figure 2: the values of this column are return values). Each of the index structures 11 contains a set of pointer tuples 12 and the valueless bitmap 13. The set of pointer tuples 12 in each column-specific index structure 11 is a compact list of all the values in the respective column of database table 2. For example, the set 12B in the structure 11B index list the presence of all the values A, B and C appearing in column 4B. The value A appears in the rows with the key values R2, R4 and R6; the value B is present in the rows with the key values R2 and R5 and the value C is present in the rows with the key values R3 and R4 (see Figure 2). As mentioned above, the first pointers in the pointer tuples refer to the respective memory address of the values A, B and C in the computer memory, while the second pointers in the pointer tuples indicate the corresponding row c. -ref refer to the key values of the row in this example. The same is true for the other sets 12C to 12F in the index structures 1 IC to 11F.

En option, les tuples de pointeur 14 dans les ensembles 12 sont triés par la valeur référencée par les premiers pointeurs. Dans la figure 4, par exemple, les tuples de pointeur dans l’ensemble 12B sont triés par les valeurs A, B et C apparaissant dans la colonne 4B. Par conséquent, les trois premiers tuples de pointeur dans l’ensemble 12B définissent l’apparition de la valeur A dans la colonne 4B ; les deux prochains tuples de pointeurs définissent l’apparition de la valeur B dans la colonne 4B et les deux derniers tuples de pointeurs définissent l’apparition de la valeur C dans la colonne 4B. Trier les tuples de pointeur 14 dans l’ensemble facilite l’accès mémoire efficace, si on utilise l’index 10, par ex. pour réaliser une recherche linéaire sur les tuples de pointeur 14 parce que les valeurs respectives nécessitent seulement d’être chargées une fois à partir de la mémoire, si on traite le premier tuple de pointeur qui définit les apparitions d’une valeur, et sont ensuite disponibles par ex. dans le cache du processeur pour les tuples de pointeur suivants toujours liés à la même valeur. Trier les tuples de pointeur 14 facilite également une recherche binaire sur les tuples de pointeur qui sont utilisés dans certains modes de réalisation (plus amplement expliqués ci-dessous en référence à la figure 8).Optionally, pointer tuples 14 in sets 12 are sorted by the value referenced by the first pointers. In Fig. 4, for example, the pointer tuples in the set 12B are sorted by the values A, B and C appearing in column 4B. Therefore, the first three pointer tuples in the set 12B define the appearance of the value A in column 4B; the next two tuples of pointers define the appearance of the value B in column 4B and the last two tuples of pointers define the appearance of the value C in column 4B. Sorting the pointer tuples 14 in the set facilitates efficient memory access, if using the index 10, e.g. to carry out a linear search on the pointer tuples 14 because the respective values only need to be loaded once from the memory, if the first pointer tuple which defines the appearances of a value is processed, and are then available eg in the processor cache for the following pointer tuples always linked to the same value. Sorting the pointer tuples 14 also facilitates a binary search on the pointer tuples that are used in some embodiments (more fully explained below with reference to Figure 8).

Le bitmap 13 fournit une représentation compacte de l’apparition de la cellule sans valeur dans la table de base de données 2. Chaque bitmap 13 comprend six bits qui coïncident avec le nombre de rangées 3 dans la table de base de données 2 dans l’exemple de la figure 2. Par définition, la séquence des bits dans les bitmaps respectifs correspond à la séquence des rangées avec des valeurs clés RI à R6, c-à-d que le premier bit de chaque bitmap 13 fait référence à la rangée avec la valeur clé RI, le second bit dans chacun des bitmaps fait référence à la rangée avec la valeur clé R2 et ainsi de suite et le dernier bit dans chaque bitmap 13 fait référence à la dernière rangée avec la valeur clé R6. Dans l’exemple de la figure 4, les bits mis à « 1 » désignent toutes les rangées dans la colonne respective sans valeur (c-à-d avec des caractères de remplacement) tandis que les bits mis à « 0 » désignent des rangées dans la colonne respective avec valeurs (c-à-d sans caractère de remplacement). Par exemple, le bitmap 13B indique que seule la première rangée (valeur clé RI) dans la colonne 4B ne comprend pas de valeur tandis que les autres rangées (valeurs clés R2 à R6) comprennent des valeurs. La même chose s’applique aux autres bitmaps 13C à 13F de manière analogue pour les cellules sans valeur dans les colonnes 4C à 4F. L’index 10 comme décrit ci-dessus représente une structure de métadonnées particulièrement compacte (si comparé aux index ultramodemes actuellement connus). Dans certains modes de réalisation, l’index est stocké dans un cache de processeur du système informatique et reste stocké dans le cache de processeur après que la valeur d’au moins une cellule de la rangée déterminée ait été retournée pour être disponible pour d’autres demandes de traitement. L’emplacement des cellules sans valeur n’est pas stocké en tant que tuples de pointeur 14 mais sous la forme des bitmaps 13 qui diminue le nombre de tuples de pointeurs 14. La taille d’un tuple de pointeur 14 est toujours une puissance de 2. Par exemple, un pointeur a la taille de 8 octets dans une architecture de mémoire 64 bits, ce qui augmente la taille à 16 octets pour un tuple de pointeur 14. Dans la mesure où la multiplication d’entiers pour le nombre de taille en puissance de 2 est plus efficace que pour les nombres de taille en non puissance de 2, les accès aléatoires dans l’index 10 sont efficaces. Pour certaines catégories de tables de base de données (par ex. des tables avec 1 000 entrées ou moins), l’index 10 rentre dans les caches de CPU LI et/ou L2 et peut donc être disponible en permanence dans une mémoire à accès très rapide et la performance globale du traitement de la demande et de la détermination de la rangée est améliorée. De plus, l’index 10 facilite un algorithme de recherche binaire pour déterminer la rangée la plus spécifique, comme décrit plus loin ci-dessous (en référence à la figure 8). L’index 10 indique également un ordre de spécificité des rangées 3 de la table de base de données 2. Des manières différentes sont envisagées pour cette indication. Par exemple, comme susmentionné en référence à la figure 2, la table de base de données 2 elle-même est déjà triée conformément à son ordre de spécificité par ex. de la spécificité la plus basse à la plus élevée (cf. également activité 38 à la figure 9 et activité 17 à la figure 10). Dans de tels modes de réalisation, l’ordre de spécificité des rangées de la table de base de données est implicitement présent dans l’index 10 dans les bitmaps 13 sans valeur. Comme expliqué ci-dessus, les bitmaps 13 sans valeur comprennent un bit pour chaque rangée 3 de table de base de données 2 et l’ordre des bits dans les bitmaps 13 correspond à l’ordre des rangées 3 de la table de base de données 2. Ainsi, le premier bit respectif dans les bitmaps 13 fait référence à la première rangée (par ex. rangée 3 A dans la figure 2) qui est par ex. la rangée la moins spécifique et le dernier bit respectif dans les bitmaps 13 sans valeur fait référence à la dernière rangée (par ex. rangée 3F dans la figure 2) qui est par ex. la rangée la plus spécifique de la table de base de données 2. Dans d’autres modes de réalisation, les rangées de la table de base de données 2 ne sont pas triées par spécificité mais l’index 10 comprend une structure de données séparée définissant l’ordre de spécificité des rangées 3. Par exemple, les valeurs de pondération 7 (voir figure 3) sont associées aux rangées 3 quand elles génèrent l’index 10 (voir également activité 44 dans la figure 9) et sont explicitement maintenues en tant que métadonnées définissant l’ordre de spécificité des rangées 3 dans l’index 7.The bitmap 13 provides a compact representation of the occurrence of the valueless cell in the database table 2. Each bitmap 13 comprises six bits that coincide with the number of rows 3 in the database table 2 in the example of FIG. 2. By definition, the sequence of the bits in the respective bitmaps corresponds to the sequence of the rows with key values R1 to R6, ie the first bit of each bitmap 13 refers to the row with the key value RI, the second bit in each of the bitmaps refers to the row with the key value R2 and so on and the last bit in each bitmap 13 refers to the last row with the key value R6. In the example of FIG. 4, the bits set to "1" denote all the rows in the respective column with no value (ie with replacement characters) while the bits set to "0" denote rows. in the respective column with values (ie without wildcard). For example, bitmap 13B indicates that only the first row (key value RI) in column 4B does not include a value while the other rows (key values R2 to R6) include values. The same applies to the other bitmaps 13C to 13F analogously for the valueless cells in columns 4C to 4F. Index 10 as described above represents a particularly compact metadata structure (if compared to currently known ultramodern indexes). In some embodiments, the index is stored in a processor cache of the computer system and remains stored in the processor cache after the value of at least one cell of the determined row has been returned to be available for use. other treatment requests. The location of the valueless cells is not stored as pointer tuples 14 but in the form of bitmaps 13 which decreases the number of tuples of pointers 14. The size of a pointer tuple 14 is always a power of 2. For example, a pointer has the size of 8 bytes in a 64-bit memory architecture, which increases the size to 16 bytes for a pointer tuple 14. Since the multiplication of integers for the number of size in the power of 2 is more efficient than for non-power size numbers of 2, the random accesses in the index 10 are effective. For certain categories of database tables (eg tables with 1000 entries or less), the index 10 enters the CPU cache LI and / or L2 and can therefore be permanently available in an access memory very fast and the overall performance of demand processing and row determination is improved. In addition, index 10 facilitates a binary search algorithm to determine the most specific row, as described further below (with reference to FIG. 8). The index 10 also indicates a specific order of the rows 3 of the database table 2. Different ways are envisaged for this indication. For example, as mentioned above with reference to FIG. 2, the database table 2 itself is already sorted according to its order of specificity e.g. from the lowest specificity to the highest specificity (see also activity 38 in Figure 9 and activity 17 in Figure 10). In such embodiments, the order of specificity of the rows of the database table is implicitly present in the index 10 in the valueless bitmaps 13. As explained above, the valueless bitmaps 13 include one bit for each database table row 2 and the bit order in bitmaps 13 corresponds to the order of rows 3 of the database table. 2. Thus, the first respective bit in the bitmaps 13 refers to the first row (eg row 3A in Fig. 2) which is e.g. the least specific row and the last respective bit in the valueless bitmaps 13 refer to the last row (eg row 3F in Fig. 2) which is e.g. the most specific row of the database table 2. In other embodiments, the rows of the database table 2 are not sorted by specificity but the index 10 includes a separate data structure defining the order of specificity of the rows 3. For example, the weighting values 7 (see FIG. 3) are associated with the rows 3 when they generate the index 10 (see also activity 44 in FIG. 9) and are explicitly maintained as as metadata defining the order of specificity of rows 3 in index 7.

En réponse à la réception d’une demande entrante 9, le système informatique hébergeant la base de données 1 utilise l’index 10 pour déterminer la rangée la plus spécifique comme suit. En général, un processus incrémentiel est réalisé. Il traite la demande colonne par colonne, pour chaque colonne (et la valeur d’entrée respective 6) indiquée dans la demande entrante 9.In response to receiving an incoming request 9, the computer system hosting the database 1 uses the index 10 to determine the most specific row as follows. In general, an incremental process is performed. It processes the request column by column, for each column (and the respective input value 6) indicated in the incoming request 9.

En commençant par la première colonne 4 indiquée dans la demande entrante 9 (colonne 4B avec la valeur d’entrée « A » dans l’exemple de la figure 2), le système informatique utilise le bitmap 13 de la structure d’index 11 pour la première colonne (structure d’index 1 IB avec le bitmap 13B dans l’exemple de la figure 2) afin de s’assurer que toutes les rangées 3 de la table de base de données 2 qui ne contiennent aucune valeur ne sont pas rejetées parce que ces rangéefs] comprennent des caractères de remplacement qui incluent toute valeur d’entrée. Par conséquent, dans l’exemple des figures 2 et 4, la rangée RI (indiquée par le « 1 » dans le bitmap 13B) est définitivement maintenue. A ce stade, aucune décision n’est prise concernant le maintien ou le rejet des autres rangées marquées d’un « 0 » dans le bitmap 13B.Starting with the first column 4 indicated in the incoming application 9 (column 4B with the input value "A" in the example of FIG. 2), the computer system uses the bitmap 13 of the index structure 11 to the first column (index structure IB 1 with bitmap 13B in the example of Figure 2) to ensure that all rows 3 of database table 2 that do not contain any value are not rejected because these rows include wildcards that include any input value. Therefore, in the example of Figures 2 and 4, the row RI (indicated by the "1" in bitmap 13B) is permanently maintained. At this stage, no decision is made regarding the maintenance or rejection of the other rows marked with a "0" in bitmap 13B.

Ensuite, en plus de maintenir les rangées conformément à l’utilisation du bitmap sans valeur, les tuples de pointeur 14 de la structure d’index 11 pour la première colonne (structure d’index 1 IB avec un ensemble de tuples de pointeur 12B dans l’exemple de la figure 2) sont utilisés pour maintenir toutes les rangées 3 qui comprennent la valeur d’entrée respective (valeur d’entrée « A » dans l’exemple de la figure 2) et pour filtrer toutes les rangées 3 de la table de base de données 1 qui ne comprennent pas la valeur d’entrée 6. Dans l’exemple des figures 2 et 4, toutes les rangées qui comprennent la valeur « A » (à savoir les rangées R2, R4 et R6) sont maintenues tandis que les rangées restantes qui ne contiennent pas la valeur d’entrée « A » dans la colonne 4B (rangées R3 et R5) sont rejetées.Then, in addition to keeping the rows in accordance with the use of the valueless bitmap, the pointer tuples 14 of the index structure 11 for the first column (IB index structure 1 with a set of pointer tuples 12B in the example of Figure 2) are used to maintain all rows 3 which include the respective input value (input value "A" in the example of Figure 2) and to filter all rows 3 of the database table 1 which does not include the input value 6. In the example of FIGS. 2 and 4, all the rows which comprise the value "A" (namely the rows R2, R4 and R6) are maintained while the remaining rows that do not contain the input value "A" in column 4B (rows R3 and R5) are discarded.

Comptabiliser les décisions de maintien ou de rejet tout au long de ce processus incrémentiel est, dans certains modes de réalisation, basé sur des bitmaps temporaires supplémentaires (appelés bitmaps résultat, décrits plus en détail ci-dessous) indiquant les rangées qui sont encore maintenues et les rangées qui ont déjà été rejetées.Accounting for hold or reject decisions throughout this incremental process is, in some embodiments, based on additional temporary bitmaps (referred to as bitmaps result, described in more detail below) indicating the rows that are still maintained and rows that have already been rejected.

Ce processus est répété pour chaque colonne 4 indiquée dans la demande entrante 9. À chaque itération, aucune, une ou plusieurs rangées 3 de la table de base de données 2 est/sont rejetées. Une fois que toutes les colonnes 4 indiquées dans la demande entrante 9 ont été traitées, une ou plusieurs rangées 3 conformes aux valeurs d’entrée indiquées dans la demande restent. Le système informatique sélectionne ensuite, en utilisant l’index 10, la rangée 3 à partir de rangées restantes qui est la plus en haut dans l’ordre de spécificité. Dans l’exemple des figures 2 et 4, les rangées 3A, 3B et 3F (c-à-d les rangées avec les valeurs clés RI, R2 et R6) remplissent les valeurs d’entrée 6 de la demande entrante 9 en exemple à la figure 2. La rangée la plus spécifique est la rangée 3F (valeur clé R6). Dans l’exemple des figures 2 et 4, l’ordre de spécificité est donné par le tri des rangées qui se reflète aussi dans l’index 10 (dans les bitmaps 13 ainsi que dans les bitmaps résultats décrits ci-dessous). Ainsi, dans l’exemple des figures 2 et 4, le système informatique choisit la rangée restante avec la valeur clé de plus élevée (qui se situe le plus à droite dans les bitmaps 13 et dans le bitmap résultat décrit ci-dessous).This process is repeated for each column 4 indicated in the incoming request 9. At each iteration, none, one or more rows 3 of the database table 2 is / are rejected. Once all the columns 4 indicated in the incoming application 9 have been processed, one or more rows 3 conforming to the input values indicated in the application remain. The computer system then selects, using the index 10, the row 3 from the remaining rows which is the highest in the order of specificity. In the example of FIGS. 2 and 4, the rows 3A, 3B and 3F (ie the rows with the key values R1, R2 and R6) fill the input values 6 of the incoming request 9 as an example at Figure 2. The most specific row is row 3F (key value R6). In the example of FIGS. 2 and 4, the order of specificity is given by the sorting of the rows which is also reflected in the index 10 (in the bitmaps 13 as well as in the bitmaps results described below). Thus, in the example of FIGS. 2 and 4, the computer system chooses the remaining row with the highest key value (which is the most right in the bitmaps 13 and in the result bitmap described below).

Puis, un exemple de mise en œuvre du traitement de la demande incrémentielle et du processus de détermination de la rangée est décrit à la figure 5. Cet exemple réutilise l’exemple de la table de base de données 2 de la figure 2 et l’index 10 correspondant comme indiqué à la figure 4, ce dernier étant représenté à gauche de la figure 5. En général, l’exemple de traitement de la demande est basé sur deux bitmaps supplémentaires pour utiliser les tuples de pointeur 14 et les bitmaps sans valeur, c-à-d un bitmap colonne 23 et un bitmap résultat 25. À la fois le bitmap colonne 23 et le bitmap résultat 25 comprennent un nombre de bits qui correspond au nombre de rangées dans table de base de données 2. L’objet du bitmap colonne 23 est d’indiquer, lors de chaque itération à travers la colonne 4 et la valeur d’entrée 6 correspondante, indiquée dans la demande entrante 9, les rangées 3 de la table de base de données qui comprennent la valeur d’entrée respective. L’objet du bitmap résultat 25 est d’indiquer, à travers le traitement de la demande incrémentielle, les rangées 3 restantes de la table de base de données qui sont encore des rangées candidates remplissant éventuellement toutes les valeurs d’entrée 6 dans la demande entrante 9 et, en même temps, d’indiquer toutes les rangées 3 de la table de base de données 2 qui ont été filtrées parce qu’elles ne correspondent pas à une ou plusieurs valeurs d’entrée 6.Then, an example of implementation of the incremental request processing and the row determination process is described in Figure 5. This example reuses the example of the database table 2 of Figure 2 and the corresponding index 10 as shown in Figure 4, the latter being shown on the left of Figure 5. In general, the example of processing the request is based on two additional bitmaps to use pointer tuples 14 and valueless bitmaps , ie a column bitmap 23 and a result bitmap 25. Both the column bitmap 23 and the result bitmap 25 comprise a number of bits that corresponds to the number of rows in database table 2. The object bitmap column 23 is to indicate, during each iteration through column 4 and the corresponding input value 6, indicated in the incoming request 9, the rows 3 of the database table which include the value of enter e respective. The object of the result bitmap 25 is to indicate, through the processing of the incremental request, the remaining rows 3 of the database table which are still candidate rows possibly filling all the input values 6 in the request. incoming 9 and, at the same time, indicate all the rows 3 of the database table 2 that have been filtered because they do not correspond to one or more input values 6.

Le traitement de la demande commence avec l’initialisation du bitmap résultat 25, par ex. définir tous les bits du bitmap résultat 25 à « 1 », tandis que chaque « 1 » indique que la rangée 3 associée au bit respectif dans le bitmap résultat 25 n’a pas encore été filtrée, c-à-d qu’elle est encore une rangée candidate qui remplit éventuellement toutes les valeurs d’entrée 6 comprises dans la demande entrante 9. Par conséquent, au début du traitement de la demande, toutes les rangées 3 de la table de base de données sont des candidates valides.The processing of the request starts with the initialization of the bitmap result 25, e.g. set all the bits of the bitmap result 25 to "1", while each "1" indicates that the row 3 associated with the respective bit in the result bitmap 25 has not yet been filtered, ie it is still a candidate row that eventually fills all the input values 6 included in the incoming request 9. Therefore, at the beginning of the request processing, all rows 3 of the database table are valid candidates.

Ensuite, la première itération concernant la première colonne et la valeur d’entrée 6 respective (dans l’exemple des figures 2 et 4 : la colonne 4B avec valeur d’entrée 6B = « A ») est traversée. Elle se compose de deux activités utilisant la structure d’index respective (ici : structure d’index 11 B). La première activité concerne la détermination des rangées 3 de la table de base de données 2 qui remplissent l’actuelle valeur d’entrée 6B. La seconde activité concerne la comptabilisation des rangées candidates restantes maintenues à travers toutes les itérations.Then, the first iteration concerning the first column and the respective input value 6 (in the example of FIGS. 2 and 4: column 4B with input value 6B = "A") is traversed. It consists of two activities using the respective index structure (here: index structure 11 B). The first activity concerns the determination of the rows 3 of the database table 2 which fill the current input value 6B. The second activity is the counting of remaining candidate rows maintained across all iterations.

Concernant la première activité, le bitmap colonne 23B est initialisé avec les valeurs de bit du bitmap 13 sans valeur de la colonne 4 considérée pendant l’itération actuelle (ici : colonne 4B, bitmap sans valeur 13B). Ainsi, dans l’exemple, le bitmap colonne 23B est mis à 1-0-0-0-0-0 et indique par conséquent que la rangée 3A (valeur clé RI) doit absolument être maintenue (parce qu’elle comprend un caractère de remplissage dans la colonne 4B). Ensuite, l’ensemble de tuples de pointeur 12B fait l’objet d’une recherche pour toutes les rangées comprenant la valeur d’entrée « A ». Dans certains modes de réalisation, la recherche est une recherche binaire (expliquée plus loin ci-dessous à la figure 8). Dans d’autres modes de réalisation, la recherche est une recherche linéaire. Dans l’exemple, la recherche dans un ensemble de tuples de pointeur 12B indique que les rangées avec des valeurs clés R2, R4 et R6 comprennent un « A » dans la colonne 4B actuellement envisagée. Les bits dans le bitmap colonne 23B correspondant aux rangées qui ont été déterminées pour comprendre la valeur d’entrée 6B sont donc mis à « 1 », étant donné qu’ils remplissent la première valeur d’entrée 6B et qu’ils doivent donc être maintenus. Par conséquent, dans l’exemple, le second, le quatrième et le sixième bits du bitmap colonne 23B sont mis à « 1 », le bitmap colonne 23B est à présent fixé à 1-1 -0-1 -0-1 ; ce qui signifie que la première, la seconde, la quatrième et la sixième rangées (valeurs clés RI, R2, R4 et R6) sont toujours des rangées candidates tandis que la troisième et la cinquième rangées (valeurs clés R3 et R5) sont filtrées. À ce stade, le bitmap colonne 23B indique, pour l’itération actuelle, que toutes les rangées qui remplissent la première valeur d’entrée 6B sont comprises dans la demande entrante 9.Concerning the first activity, the column bitmap 23B is initialized with the bit values of the no-value bitmap 13 of the column 4 considered during the current iteration (here: column 4B, bitmap with no value 13B). Thus, in the example, the column bitmap 23B is set to 1-0-0-0-0-0 and therefore indicates that row 3A (key value RI) must absolutely be maintained (because it includes a character filling in column 4B). Then, the set of pointer tuples 12B is searched for all rows including the input value "A". In some embodiments, the search is a binary search (explained further below in Figure 8). In other embodiments, the search is a linear search. In the example, searching in a set of pointer tuples 12B indicates that the rows with key values R2, R4 and R6 include an "A" in the currently contemplated column 4B. The bits in the column bitmap 23B corresponding to the rows that have been determined to include the input value 6B are therefore set to "1", since they fill the first input value 6B and therefore must be maintained. Therefore, in the example, the second, fourth and sixth bits of the column bitmap 23B are set to "1", the column bitmap 23B is now set to 1-1 -0-1 -0-1; which means that the first, second, fourth and sixth rows (key values RI, R2, R4 and R6) are always candidate rows while the third and fifth rows (key values R3 and R5) are filtered. At this point, the column bitmap 23B indicates, for the current iteration, that all the rows which fill the first input value 6B are included in the incoming request 9.

Concernant la seconde activité, le bitmap colonne 23B établi est associé à la version actuelle du bitmap résultat 25 afin d’inclure le résultat de détermination de rangée de l’actuelle itération dans la comptabilisation globale des rangées candidates. Dans l’exemple, toutes les rangées candidates restantes sont indiquées par des bits mis à « 1 », tandis que toutes les rangées filtrées sont indiquées par des bits mis à « 0 ». Par conséquent, une opération ET logique bit à bit est réalisée entre le bitmap colonne 23B et la version actuelle du bitmap résultat 25, découlant d’une version 25B du bitmap résultat mise à jour. Dans l’exemple, la version 25B du bitmap résultat mise àjour est donc mise à 1-1-0-1-0-1.For the second activity, the established column bitmap 23B is associated with the current version of the result bitmap 25 to include the row-determination result of the current iteration in the global accounting of the candidate rows. In the example, all the remaining candidate rows are indicated by bits set to "1", while all the filtered rows are indicated by bits set to "0". Therefore, a bitwise logical AND operation is performed between the column bitmap 23B and the current version of the result bitmap 25, derived from a version 25B of the updated result bitmap. In the example, version 25B of the update result bitmap is set to 1-1-0-1-0-1.

Voilà qui conclut la première itération concernant la première colonne indiquée dans la demande entrante 9 et la valeur d’entrée 6 correspondantes. Les itérations suivantes sont réalisées de la même manière. Une fois de plus, lors de chaque itération suivante, le bitmap colonne 23 est réinitialisé avec les valeurs de bit des bitmaps respectifs sans valeur (dans l’exemple, les bitmaps sans valeur 13C à 13F, les versions d’initialisation 23C à 23F des bitmaps colonnes). Ensuite, on recherche des occurrences des valeurs d’entrée respectives comprises dans la demande entrante 9 (dans l’exemple, valeurs d’entrée 6C à 6F) dans l’ensemble respectif de tuples de pointeur (dans l’exemple, ensembles 12C à 12F). Les bits respectifs qui correspondent aux rangées incluant la valeur d’entrée 6 sont mis à « 1 » dans le bitmap colonne 23. La version respective en résultant 23C-23F du bitmap colonne est associée à la version actuelle respective 25C-25F du bitmap résultat par l’opération ET bit à bit.This concludes the first iteration concerning the first column indicated in the incoming application 9 and the corresponding input value 6. The following iterations are performed in the same way. Once again, during each subsequent iteration, the column bitmap 23 is reinitialized with the bit values of the respective bitmaps with no value (in the example, the bitmaps with no value 13C to 13F, the initialization versions 23C to 23F of the bitmaps columns). Next, occurrences of the respective input values included in the incoming request 9 (in the example, input values 6C to 6F) are searched for in the respective set of pointer tuples (in the example, sets 12C to 12F). The respective bits corresponding to the rows including the input value 6 are set to "1" in the column bitmap 23. The respective resulting version 23C-23F of the bitmap column is associated with the respective current version 25C-25F of the result bitmap. by bitwise AND operation.

Dans l’exemple, la version finale du bitmap résultat 25F indique que la première rangée, la seconde rangée et la sixième rangée remplissent toutes les valeurs d’entrée 6 comprises dans la demande entrante 9. La dernière activité du traitement de la demande concerne la sélection de la rangée la plus spécifique parmi les rangées restantes après la fin des itérations. À cette fin, l’indication de l’ordre de spécificité dans l’index 10 est utilisée. Dans l’exemple, l’ordre de spécificité est donné par le tri des rangées 3 de table de base de données 2 qui se reflète dans la séquence de bits (correspondant aux rangées) dans les bitmaps 13 sans valeur, dans le bitmap colonne 23 et dans le bitmap résultat 25. Ainsi, dans l’exemple, la rangée la plus spécifique parmi les rangées candidates restantes est donnée par le « 1 » le plus à droite (numéro de référence 27) dans la version finale 25F du bitmap résultat.In the example, the final version of the result bitmap 25F indicates that the first row, the second row and the sixth row fill all the input values 6 included in the incoming request 9. The last activity of the request processing concerns the selecting the most specific row from the remaining rows after the end of the iterations. For this purpose, the indication of the order of specificity in the index 10 is used. In the example, the order of specificity is given by the sorting of rows 3 of database table 2 which is reflected in the sequence of bits (corresponding to the rows) in the bitmaps 13 with no value, in the bitmap column 23 and in the result bitmap 25. Thus, in the example, the most specific row among the remaining candidate rows is given by the rightmost "1" (reference number 27) in the final version 25F of the result bitmap.

Bien que le traitement de la demande implique un nombre d’opérations de complexité O(n), il comporte de nombreuses caractéristiques techniques avantageuses. Un espace mémoire limité suffit pour exécuter les opérations. Les deux bitmaps supplémentaires, le bitmap colonne 23 et le bitmap résultat 25 comprennent un nombre de bits qui correspond au nombre de rangées dans table de base de données 2. Par conséquent, pour une table de base de données avec par ex. 1024 rangées, le bitmap colonne 23 et le bitmap résultat 25 ont une taille de 128 octets chacun. De plus, le traitement de la demande est déterministe parce que le nombre d’itérations de colonne de la base de données est prédéterminé respectivement par le nombre de colonnes de la table de base de données et de colonnes indiquées dans la demande. Par conséquent, pour les tables de base de données avec un certain nombre de rangées, le temps de réponse pour chaque traitement de demande est déterministe.Although the processing of the request involves a number of O (n) complexity operations, it has many advantageous technical characteristics. Limited memory space is sufficient to execute the operations. The two additional bitmaps, the column bitmap 23 and the result bitmap 25 comprise a number of bits which corresponds to the number of rows in database table 2. Therefore, for a database table with eg. 1024 rows, the 23 column bitmap and the 25 bitmap result have a size of 128 bytes each. In addition, the processing of the request is deterministic because the number of column iterations of the database is predetermined by the number of columns of the database table and columns indicated in the request, respectively. Therefore, for database tables with a number of rows, the response time for each request processing is deterministic.

De plus, le nombre d’opérations de recherche et d’opérations de comparaison de valeur (comparant les valeurs d’entrée aux valeurs référencées par les premiers pointeurs 15 respectifs) pour chercher les ensembles de tuples de pointeur 12 en présence des valeurs d’entrée 6 est réduit en faveur des opérations de bitmap (telles que les opérations ET logiques bit à bit). Bien que les opérations de bitmap impliquent des opérations O(n), n est relativement petit (correspond au nombre de rangées 3) et l’opération de bitmap exploite en général pleinement les capacités du matériel informatique moderne. Par exemple, les instructions d’assemblages individuelles des architectures 64 bits traitent 64 bits à la fois. De plus, le traitement de la présente demande est spécifiquement adapté aux CPU équipés d’unités informatiques OOO (out-of-order, en désordre) qui ont la capacité d’effectuer plusieurs calculs par cycle d’horloge sur un seul noyau, à condition qu’il n’y ait aucune dépendance entre ces calculs. La dernière condition applique les opérations de bitmap parce chaque opération individuelle ET par bit dans une opération ET générale entre le bitmap colonne 23 et le bitmap résultat 25 est indépendante. Réduire la part de recherche et d’opérations de recherche au bénéfice d’une part accrue d’opérations de bitmap concerne spécifiquement un agencement d’extension de vecteur des CPU. Les CPU équipés d’un ensemble d’instructions SSE2 (extensions SIMD en continu, SIMD = une seule instruction, données multiples) offrent notamment la possibilité de traiter 128 bits en une instruction d’assemblage, un ensemble d’instructions AVX2 (Advanced Vector Extensions, extension de vecteur évolué) pour traiter 256 bits en une instruction d’assemblage ou AVX-512 (par ex. la génération « Knights Landing » d’Intel®) permettant le traitement de 512 bits en une instruction d’assemblage. Par exemple, avec le dernier ensemble d’instructions, une opération ET bit à bit entre le bitmap colonne 23 et le bitmap résultat 25 pour une table de base de données 2 avec 1 000 rangées peut être réalisée en deux cycles CPU.In addition, the number of search operations and value compare operations (comparing the input values to the values referenced by the respective first pointers) to search for sets of pointer tuples 12 in the presence of the values of Input 6 is reduced in favor of bitmap operations (such as bit-to-bit logical AND operations). Although bitmap operations involve operations O (n), n is relatively small (corresponds to the number of rows 3) and the bitmap operation generally exploits fully the capabilities of modern computer hardware. For example, the individual assembly instructions for 64-bit architectures process 64 bits at a time. In addition, the processing of the present application is specifically adapted to CPUs equipped with OOO (out-of-order) computer units which have the ability to perform multiple calculations per clock cycle on a single kernel, to provided that there is no dependence between these calculations. The last condition applies the bitmap operations because each individual AND bitwise operation in a general AND operation between the column bitmap 23 and the result bitmap 25 is independent. Reducing the share of search and search operations to the benefit of an increased share of bitmap operations specifically relates to a CPU vector extension arrangement. CPUs equipped with a set of SSE2 instructions (SIMD continuous extensions, SIMD = one instruction, multiple data) include the ability to process 128 bits into an assembly instruction, an AVX2 instruction set (Advanced Vector Extensions, Advanced Vector Expansion) to process 256 bits into an assembly instruction or AVX-512 (eg Intel's "Knights Landing" generation) allowing 512-bit processing into an assembly instruction. For example, with the last set of instructions, a bitwise AND operation between the column bitmap 23 and the result bitmap 25 for a database table 2 with 1000 rows can be performed in two CPU cycles.

Le fonctionnement de ce traitement de demande est illustré dans le graphique de la figure 6. Premièrement, à 20, le système informatique hébergeant la base de données 1 reçoit une demande entrante 9. En réponse à la réception de la demande, le bitmap résultat 25 est initialisé à 22. Ainsi, le processus incrémentiel 24 est réalisé. Dans l’itération colonne par colonne pour chaque colonne et valeur d’entrée respective 6 indiquée dans la demande entrante 9, le bitmap colonne 23 est initialisé à 24A, sur la base du bitmap respectif 13 sans valeur. Puis, à 24B, on recherche dans l’ensemble de tuples de pointeur 12 toutes les rangées 3 de la colonne actuelle 4 qui comprennent 1a valeur d’entrée 6 respective et le bitmap colonne 23 est mis à jour en conséquence. Puis, à 24C, le bitmap colonne 23 et la version actuelle du bitmap résultat 25 sont associées, par ex. par l’opération ET logique bit à bit afin d’obtenir un bitmap résultat mis à jour. Une fois que toutes les colonnes 4 et les valeurs d’entrée respectives 6 indiquées dans la demande entrante 9 ont été traitées de cette manière incrémentielle, la rangée la plus spécifique parmi les rangées restantes indiquée dans la version finale du bitmap de résultat 25 est sélectionnée à 26. Finalement, à 35, au moins une valeur de la rangée la plus spécifique déterminée est retournée. Il est également possible que le bitmap résultat ne contienne que « 0 » bit après la dernière itération du traitement de la demande. Dans ce cas, aucune des rangées dans la table de base de données ne remplit la demande et la valeur de retour est donc une valeur « de non-correspondance ».The operation of this request processing is illustrated in the graph of Fig. 6. First, at 20, the computer system hosting the database 1 receives an incoming request 9. In response to receiving the request, the result bitmap 25 is initialized to 22. Thus, the incremental process 24 is performed. In the column-by-column iteration for each column and respective input value 6 indicated in the incoming request 9, the column bitmap 23 is initialized to 24A, based on the respective bitmap 13 with no value. Then, at 24B, the set of pointer tuples 12 is searched for all rows 3 of the current column 4 which include the respective input value 6 and the column bitmap 23 is updated accordingly. Then, at 24C, the column bitmap 23 and the current version of the result bitmap 25 are associated, e.g. by bitwise AND logic operation to obtain an updated bitmap result. Once all the columns 4 and the respective input values 6 indicated in the incoming request 9 have been processed in this incremental manner, the most specific row among the remaining rows indicated in the final version of the result bitmap 25 is selected. 26. Finally, at 35, at least one value of the most specific row determined is returned. It is also possible that the result bitmap contains only "0" bit after the last iteration of the request processing. In this case, none of the rows in the database table fills the request, so the return value is a "non-match" value.

Dans certains modes de réalisation, l’attribution de bits dans les bitmaps 13 sans valeur est inverse (en comparaison à l’exemple de la figure 4), c-à-d que les bits mis à « 0 » désignent toutes les rangées dans la colonne respective sans valeur (c-à-d avec des caractères de remplacement) tandis que les bits mis à « 1 » désignent des rangées dans la colonne respective avec valeurs (c-à-d sans caractère de remplacement). Dans ces modes de réalisation, l’affectation de bits dans le bitmap colonne 23 et dans le bitmap résultat 25 est inversé, c-à-d que tous les bits mis à « 0 » dans le bitmap colonne 23 indiquent les rangées 3 de la colonne considérée qui comprennent la valeur d’entrée respective 6 et chaque « 0 » dans le bitmap résultat 25 indique que la rangée 3 associée au bit respectif n’a pas encore été filtrée, c-à-d qu’elle est encore une rangée candidate qui remplit potentiellement toutes les valeurs d’entrée 6 comprises dans la demande entrante 9. Par conséquent, dans ces modes de réalisation, le bitmap colonne 23 et le bitmap résultat 25 sont associés par une opération logique OU bit à bit.In some embodiments, the assignment of bits in the valueless bitmaps 13 is inverse (compared to the example of FIG. 4), ie the bits set to "0" designate all the rows in the respective column with no value (that is, with wildcards) while the bits set to "1" refer to rows in the respective column with values (ie without wildcards). In these embodiments, the bit assignment in the column bitmap 23 and the result bitmap 25 is reversed, ie all bits set to "0" in the column bitmap 23 indicate the rows 3 of the column considered which include the respective input value 6 and each "0" in the result bitmap 25 indicates that row 3 associated with the respective bit has not yet been filtered, ie it is still a row candidate which potentially fulfills all the input values 6 included in the incoming request 9. Therefore, in these embodiments, the column bitmap 23 and the result bitmap 25 are associated by a bitwise OR logical operation.

Dans certains modes de réalisation, le traitement de la demande incrémentielle (activité 24 dans la figure 6) et en particulier, la recherche des ensembles de tuples de pointeur 12 pour vérifier la présence d’une valeur d’entrée (activité 24B dans la figure 6) comprend une recherche binaire au sein des tuples de pointeur 14 stockés de façon adjacente dans une mémoire du système informatique hébergeant la base de données 1 (figures 7 et 8). La figure 7 donne un exemple générique de tuples de pointeur 14 qui sont stockés de façon adjacente à un endroit dans la mémoire 28 du système informatique hébergeant la base de données 1. Comme le montre la représentation schématique de la figure 7, chaque tuple de pointeur 14 unique est disposé consécutivement dans la mémoire 28 dans un ensemble de tuples de pointeur 14 sans trous entre. Cette disposition des tuples de pointeur 14 dans la mémoire 28 facilite l’accès direct au nième tuple de pointeur (c-à-d tout tuple de pointeur arbitraire avec l’ensemble 12) et facilite donc une recherche binaire pour chaque itération colonne par colonne de la demande entrante 9.In some embodiments, the processing of the incremental request (activity 24 in FIG. 6) and in particular the search of the sets of pointer tuples 12 for checking the presence of an input value (activity 24B in FIG. 6) includes a binary search within the pointer tuples 14 stored adjacently in a memory of the computer system hosting the database 1 (FIGS. 7 and 8). Figure 7 provides a generic example of pointer tuples 14 which are stored adjacent to a location in the memory 28 of the computer system hosting the database 1. As shown schematically in Figure 7, each pointer tuple 14 is consecutively disposed in memory 28 in a set of pointer tuples 14 without holes between. This arrangement of the pointer tuples 14 in the memory 28 facilitates direct access to the nth pointer tuple (ie any arbitrary pointer tuple with the set 12) and thus facilitates a binary search for each column-by-column iteration. the incoming demand 9.

La figure 8 est un exemple générique de recherche binaire pour l’activité 24B de la figure 6. Par exemple, comme susmentionné à la figure 4, les tuples de pointeur 14 dans l’ensemble 12 sont triés par les valeurs référencées par les premiers pointeurs 15 (qui trient pour les types de données respectifs de la colonne 4, par ex. l’ordre alphabétique pour les caractères et les chaînes). Cela permet l’exécution d’une recherche binaire sur les tuples de pointeur 14. Conformément au principe « diviser pour mieux régner », l’algorithme de recherche binaire entre le milieu de l’ensemble 12 et examine si la valeur référencée par le premier pointeur 15D du tuple de pointeur 14D situé au milieu de l’ensemble 12 correspond ou non à la valeur d’entrée 6. Dans l’exemple de la figure 8, la valeur d’entrée « A » est donc comparée à la valeur « D » référencée par le premier pointeur 15D. Si la valeur d’entrée 6 est plus faible que la valeur référencée par le premier pointeur 15 considéré, la même procédure est répétée dans la moitié supérieure (moitié gauche d’un ensemble 12 dans la figure 8, c-à-d avec le premier pointeur 15B). Si la valeur d’entrée 6 est plus élevée que la valeur référencée par le premier pointeur 15 considéré, la même procédure est répétée dans la moitié inférieure (moitié droite d’un ensemble 12 dans la figure 8, c-à-d avec le premier pointeur 15B).FIG. 8 is a generic example of a binary search for the activity 24B of FIG. 6. For example, as mentioned above in FIG. 4, the pointer tuples 14 in the set 12 are sorted by the values referenced by the first pointers 15 (which sort for the respective data types in column 4, eg alphabetical order for characters and strings). This allows the execution of a binary search on the pointer tuples 14. In accordance with the principle of "divide and conquer", the binary search algorithm enters the middle of the set 12 and examines whether the value referenced by the first pointer 15D of the pointer tuple 14D located in the middle of the set 12 or not corresponds to the input value 6. In the example of Figure 8, the input value "A" is compared to the value " D "referenced by the first pointer 15D. If the input value 6 is smaller than the value referenced by the first pointer 15 considered, the same procedure is repeated in the upper half (left half of a set 12 in Fig. 8, ie with the first pointer 15B). If the input value 6 is higher than the value referenced by the first pointer 15 considered, the same procedure is repeated in the lower half (right half of a set 12 in Fig. 8, ie with the first pointer 15B).

Comme montré dans les exemples des figures 4 et 5, il est possible que les premiers pointeurs multiples 15 se réfèrent à la même valeur. Dans l’exemple des figures 7 et 8, les premiers pointeurs 15A et 15B se réfèrent tous deux à la valeur « A ». Si la comparaison entre la valeur d’entrée 6 et la valeur référencée par le premier pointeur 15 actuellement considéré à un stade particulier de la recherche binaire montre que les deux valeurs sont égales, la recherche binaire n’est pas encore terminée à ce stade. La recherche binaire continue de déterminer d’autres tuples de pointeur 14 éventuels et les premiers pointeurs 15 qui font aussi référence à la valeur d’entrée 6. Par conséquent, après avoir trouvé une correspondance entre la valeur d’entrée 6 et la valeur référencée par un premier pointeur 15, les tuples de pointeur 14 voisins situés à gauche et à droite du tuple de pointeur actuellement considéré (dans la mesure où ils sont présents) sont examinés jusqu’à ce qu’il y ait une non-correspondance entre la valeur d’entrée 6 et la valeur référencée par le premier pointeur respectif soit déterminée ou jusqu’à ce que l’algorithme arrive à un tuple de pointeur 14 déjà considéré auparavant. Dans l’exemple de la figure 8, l’examen du premier pointeur 15B (qui est réalisé après l’examen du premier pointeur 15D) génère une correspondance entre la valeur d’entrée « A » et la valeur « A » référencée par le premier pointeur 15B. Dans cette situation, on détermine ensuite si les premiers pointeurs 15A et 15C font aussi référence ou non à la valeur « A ». La réponse est affirmative pour le premier pointeur 15A et négative pour le premier pointeur 15C. Par conséquent, la recherche binaire dans l’exemple de la figure 8 se termine après que la valeur « A » a été trouvée comme présente dans les rangées RI et R4 de la colonne 4 considérée. Les premiers pointeurs 15D, 15B, 15A et 15C ont été vérifiés pendant l’exécution de la recherche binaire.As shown in the examples of FIGS. 4 and 5, it is possible that the first multiple pointers 15 refer to the same value. In the example of FIGS. 7 and 8, the first pointers 15A and 15B both refer to the value "A". If the comparison between the input value 6 and the value referenced by the first pointer 15 currently considered at a particular stage of the binary search shows that the two values are equal, the binary search is not yet complete at this stage. The binary search continues to determine other possible pointer tuples 14 and the first pointers 15 which also refer to the input value 6. Therefore, after finding a match between the input value 6 and the referenced value by a first pointer 15, the neighboring pointer tuples 14 to the left and right of the currently considered pointer tuple (to the extent that they are present) are examined until there is a mismatch between input value 6 and the value referenced by the respective first pointer is determined or until the algorithm arrives at a pointer tuple 14 already considered before. In the example of FIG. 8, the examination of the first pointer 15B (which is carried out after the examination of the first pointer 15D) generates a correspondence between the input value "A" and the value "A" referenced by the first pointer 15B. In this situation, it is then determined whether the first pointers 15A and 15C also refer to the value "A" or not. The answer is affirmative for the first pointer 15A and negative for the first pointer 15C. Therefore, the binary search in the example of Fig. 8 ends after the value "A" has been found as present in the rows R1 and R4 of the column 4 under consideration. The first pointers 15D, 15B, 15A and 15C were checked during the execution of the binary search.

La recherche binaire utilisée par certains modes de réalisation a la complexité computationnelle de O(log n) et est par conséquent en général plus efficace que par ex. une recherche linéaire de complexité de O(n). Dans certains modes de réalisation, la recherche binaire est mise en œuvre de manière récursive. Dans certains modes de réalisation, la recherche binaire est mise en œuvre de manière itérative.The binary search used by some embodiments has the computational complexity of O (log n) and is therefore generally more efficient than eg. a linear search of complexity of O (n). In some embodiments, the binary search is implemented recursively. In some embodiments, the binary search is implemented iteratively.

Dans certains modes de réalisation, le système informatique hébergeant la base de données 1 est agencé pour générer l’index 10 à partir de la table de base de données 2. L’index 10 généré après la table de base de données 2 a été établi pour la première fois puis ensuite, en réponse à un changement de la table de base de données 2 tel qu’un changement d’une ou de plusieurs valeurs dans les cellules 5, le remplacement d’une ou de plusieurs valeurs par un caractère de remplacement et vice versa, ajoute ou supprime une rangée 3 ou une colonne 4, etc.In some embodiments, the computer system hosting the database 1 is arranged to generate the index 10 from the database table 2. The index 10 generated after the database table 2 has been established for the first time then thereafter, in response to a change in the database table 2 such as a change of one or more values in the cells 5, the replacement of one or more values by a character of replacement and vice versa, add or delete a row 3 or column 4, etc.

En général, la génération d’index comprend l’établissement d’une structure d’index 11 pour chaque colonne 4 de la table de base de données 2 pour laquelle les demandes entrantes 9 peuvent comprendre des valeurs d’entrée 6. Correspondant à la structure d’index 10, ce processus comprend principalement deux activités, à savoir l’initialisation et l’établissement de bitmaps 13 sans valeur de chaque structure d’index 11 et l’établissement d’un ensemble de tuples de pointeur 12 avec le premier pointeur respectif 15 et le second pointeur 16 dans les tuples de pointeur 14.In general, the index generation comprises the establishment of an index structure 11 for each column 4 of the database table 2 for which the incoming requests 9 may include input values 6. Corresponding to the index structure 10, this process mainly comprises two activities, namely the initialization and the establishment of valueless bitmaps 13 of each index structure 11 and the establishment of a set of pointer tuples 12 with the first one. respective pointer 15 and the second pointer 16 in the pointer tuples 14.

La figure 9 est un exemple de génération d’index. En option, pour les modes de réalisation avec un ordre de spécificité explicite ou implicite donné en triant les rangées 3 de la table de base de données 2 conformément à l’ordre de spécificité, les rangées de la table de base de données 2 sont triées à 38 (si cela n’a pas été fait au préalable). En général, trier les rangées de la table de base de données dépend du nombre de cellules dans chaque rangée 3 sans valeur (par ex. avec des caractères de remplacement) et/ou de la spécificité des valeurs dans les cellules 5 de la rangée 3. Plus spécifiquement, dans certains modes de réalisation, les rangées 3 de la table de base de données 2 sont pondérées. Chaque cellule contribue au poids d’une rangée dans laquelle une rangée sans valeur ajoute moins de poids que chaque cellule avec au moins une valeur et, dans certains modes de réalisation plus spécifiques, les cellules avec un nombre plus élevé de valeurs/des valeurs plus spécifiques ajoutent moins de poids à la rangée que les cellules avec un plus petit nombre de valeurs/des valeurs moins spécifiques. La séquence de rangées avec des valeurs de pondération identiques est choisie de manière arbitraire. Dans certains modes de réalisation, l’indication de l’ordre de spécificité est donnée par une rangée unique indiquant les rangées triées, telles que dans l’exemple de la figure 2 (colonne 4A). Cet ordre de rangée peut fonctionner comme une clé primaire de la table de base de données 2.Figure 9 is an example of index generation. Optionally, for embodiments with an explicit or implicit order of specificity given by sorting the rows 3 of the database table 2 according to the order of specificity, the rows of the database table 2 are sorted to 38 (if this has not been done beforehand). In general, sorting the rows of the database table depends on the number of cells in each row 3 without value (eg with wildcards) and / or the specificity of the values in cells 5 of row 3 More specifically, in some embodiments, the rows 3 of the database table 2 are weighted. Each cell contributes weight to a row in which a worthless row adds less weight than each cell with at least one value and, in some more specific embodiments, cells with a higher number of values / values more Specific ones add less weight to the row than cells with a smaller number of values / less specific values. The sequence of rows with identical weighting values is chosen arbitrarily. In some embodiments, the indication of the order of specificity is given by a single row indicating the sorted rows, such as in the example of Figure 2 (column 4A). This row order can function as a primary key of database table 2.

La génération d’index réelle commence ensuite avec l’initialisation du premier bitmap 13 sans valeur auquel peut renvoyer une demande entrante 9 (par ex. bitmap 13 lié à la colonne 4B, renvoyant à l’exemple de la figure 4). L’initialisation du bitmap est par ex. liée à l’allocation de la quantité de mémoire requise par ex. dans la mémoire principale du système informatique hébergeant la base de données 1 et par ex. au fait de mettre tous les bits dans le bitmap 13 à « 0 » en n’indiquant initialement aucune cellule dans la colonne 4 sans valeur. Ensuite, à 40, l’ensemble des tuples de pointeur 12 (par ex. ensemble 12B de la figure 4) est rempli avec les tuples de pointeur. Un tuple de pointeur 14 est ajouté à l’ensemble 12 pour chaque valeur apparaissant dans les rangées 3 de la colonne 4 considérée. À 41, le bitmap 13 sans valeur est mis àjour afin de refléter toutes les cellules dans la colonne sans valeur. Par exemple, tous les bits correspondant aux cellules sans valeur sont mis à « 1 ». En option, à 42, les tuples de pointeur 14 dans l’ensemble 12 sont triés par les valeurs référencées par les premiers pointeurs 15 respectifs. A ce stade, la structure d’index 11 pour la première colonne (c-à-d par ex. la structure d’index 1 IB dans l’exemple de la figure 4) est intégralement générée. À 43, on vérifie si la table de base de données 2 a ou non une autre colonne pour laquelle une structure d’index 11 doit être établie. Si la réponse est affirmative, les activités 39 à 42 sont répétées pour cette autre colonne 4 (par ex. la colonne 4C dans l’exemple de la figure 4) de la même manière, jusqu’à ce que les structures d’index 11 aient été générées pour toutes les colonnes 4 de la table de base de données qui peut être indiquée dans une demande entrante 9.The actual index generation then begins with the initialization of the first valueless bitmap 13 to which an incoming request 9 can be returned (eg bitmap 13 linked to column 4B, referring to the example of FIG. 4). The initialization of the bitmap is eg. related to the allocation of the required amount of memory eg. in the main memory of the computer system hosting the database 1 and e.g. setting all bits in bitmap 13 to "0" by initially not indicating any cells in column 4 without a value. Then, at 40, all of the pointer tuples 12 (eg, set 12B of Fig. 4) are filled with the pointer tuples. A pointer tuple 14 is added to the set 12 for each value appearing in the rows 3 of the column 4 in question. At 41, the valueless bitmap 13 is updated to reflect all cells in the valueless column. For example, all bits corresponding to invalid cells are set to "1". Optionally, at 42, the pointer tuples 14 in the set 12 are sorted by the values referenced by the respective first pointers. At this point, the index structure 11 for the first column (i.e., the index structure IB in the example of Fig. 4) is integrally generated. At 43, it is checked whether or not the database table 2 has another column for which an index structure 11 is to be established. If the answer is affirmative, activities 39 to 42 are repeated for this other column 4 (eg column 4C in the example of Figure 4) in the same way, until the index structures 11 have been generated for all columns 4 of the database table that can be specified in an incoming request 9.

En option, dans des modes de réalisation sans rangées 3 triées (par ex. l’activité 38 n’était pas exécutée), un ensemble de valeurs de pondération 7 indiquant explicitement l’ordre de spécificité des rangées 3 est établi à 44. Dans des modes de réalisation qui permettent à plusieurs rangées de partager la même valeur de pondération et où plusieurs rangées d’un poids identique correspondent à la demande entrante 9, soit une rangée arbitraire parmi les rangées avec le même poids est sélectionnée comme étant la rangée la plus spécifique soit un mécanisme est présent pour permettre uniquement des associations de valeurs disjointes pour les rangées avec le même poids, ce qui pour effet que seule une rangée à un certain niveau de pondération correspond à une demande entrante 9.Optionally, in tri-sorted non-row embodiments (e.g., activity 38 was not executed), a set of weighting values 7 explicitly indicating the order of specificity of rows 3 is set to 44. In embodiments that allow multiple rows to share the same weighting value and where multiple rows of an identical weight correspond to the incoming request 9, or an arbitrary row among the rows with the same weight is selected as the row more specific either a mechanism is present to allow only disjoint value associations for rows with the same weight, with the result that only one row at a certain level of weighting corresponds to an incoming request 9.

La figure 10 est un exemple du flux de haut niveau d’un processus général réalisé par le système informatique hébergeant la base de données 1 avec au moins une table de base de données 2. À 17, les rangées de la table de base de données trient pour constituer l’ordre de spécificité des rangées qui se reflète dans l’index 10. À 18, l’index 10 est généré (cf. exemple de la figure 9). Plus tard, une demande entrante 9 est reçue par le système informatique, la demande indique au moins une valeur d’entrée 6 pour une colonne 4 de la table de base de données 2. À 19, la demande est traitée sur la base de l’index 10 afin de déterminer toutes les rangées de la table de base de données 2 qui correspondent à la/aux valeur(s) d’entrée de la demande entrante 9, par ex. par l’activité 22 et l’activité incrémentielle 24 présentée à la figure 6. À 34, la rangée la plus spécifique est sélectionnée à partir des rangées restantes qui sont la sortie d’activité 19 en utilisant l’ordre de spécificité reflété dans l’index 10, par ex à la manière de l’activité 26 présentée à la figure 6. À 21, une ou plusieurs valeurs de la rangée la plus spécifique sélectionnée est/sont retoumée(s).Fig. 10 is an example of the high-level flow of a general process performed by the computer system hosting the database 1 with at least one database table 2. At 17, the rows of the database table Sort to form the order of row specificity reflected in the index 10. At 18, the index 10 is generated (see example in Figure 9). Later, an incoming request 9 is received by the computer system, the request indicates at least one input value 6 for a column 4 of the database table 2. At 19, the request is processed on the basis of the index 10 to determine all the rows of the database table 2 that correspond to the input value (s) of the incoming request 9, e.g. by activity 22 and incremental activity 24 shown in FIG. 6. At 34, the most specific row is selected from the remaining rows which are the output of activity 19 using the order of specificity reflected in FIG. index 10, for example in the manner of activity 26 shown in FIG. 6. At 21, one or more values of the most specific row selected is / are returned (s).

La disposition des diverses données de la table de base de données 1 dans la mémoire du système informatique 100 hébergeant la base de données 1 est représentée par la figure 11. Le système informatique 100 a une mémoire adressable 30 qui comprend par ex. la mémoire principale ou la mémoire d’exploitation (RAM) du système informatique 100. Le système informatique 100 conserve la table de base de données 2 dans la mémoire adressable 30, dans certains modes de réalisation dans la RAM. Le traitement de la demande et la détermination de la rangée la plus spécifique sont réalisés par l’unité centrale de traitement (CPU) 31. La CPU 31 comprend au moins un niveau de cache de processeur 32, dans certains modes de réalisation au moins trois niveaux (LI cache, L2, cache, L3) de différentes tailles et de vitesses d’accès. L’index 10 avec les structures d’index 11 pour les colonnes 4 de la table de base de données 2 se situe également dans la mémoire adressable 30 du système informatique 100, dans certains modes de réalisation dans au moins un des niveaux de cache de processeur.The arrangement of the various data of the database table 1 in the memory of the computer system 100 hosting the database 1 is shown in FIG. 11. The computer system 100 has an addressable memory 30 which comprises e.g. the main memory or the operating memory (RAM) of the computer system 100. The computer system 100 keeps the database table 2 in the addressable memory 30, in some embodiments in the RAM. The processing of the request and the determination of the most specific row are performed by the central processing unit (CPU) 31. The CPU 31 comprises at least one processor cache level 32, in some embodiments at least three levels (LI cache, L2, cache, L3) of different sizes and access speeds. The index 10 with the index structures 11 for the columns 4 of the database table 2 is also in the addressable memory 30 of the computer system 100, in some embodiments in at least one of the cache levels of processor.

La mise en œuvre de l’index présentée dans ce document est supérieure aux autres mécanismes d’index en termes de besoins en mémoire/compacité, comme ce sera le cas à partir de la comparaison suivante avec les mises en œuvre d’index ultramodemes. La comparaison se base sur une table de base de données 2 avec 1024 rangées et cinq colonnes qui peuvent être soumises à une demande entrante 9 avec des valeurs arbitraires. La table de base de données utilisée pour la comparaison comprend les rapports types du nombre de cellules sans valeur de 66 %, du nombre de cellules avec plus d’une valeur de 10 % et une taille moyenne des valeurs. La même table de base de données 2 est utilisée pour les mises en œuvre comparées. La mise en œuvre d’index présentée dans ce document est comparée à deux autres manières connues d’indexer les rangées de la table de base de données. — Les arbres rouges noirs sont une structure de données associative connue pour l’indexation. La mise en œuvre se base sur le C++ std:map, fourni avec GCC 4.3.2 STL. - Les arbres B sont une autre structure de données associative pour l’indexation. Ils sont utilisés pour améliorer la localité des données dans une mémoire ou sur un disque. La mise en œuvre se base sur « klib » par chaos attractif qui est connu pour ses bonnes performances (voir https://github.eom/attractivechaos/klib/blob/master/kbtree.h). Un facteur d’agrégation des 256 éléments qui est un bon compromis entre l’efficacité et la compacité a été choisi.The implementation of the index presented in this document is superior to the other index mechanisms in terms of memory / compactness requirements, as will be the case from the following comparison with ultramodern index implementations. The comparison is based on a database table 2 with 1024 rows and five columns that can be submitted to an incoming request 9 with arbitrary values. The database table used for the comparison includes the standard reports of the number of cells with no value of 66%, the number of cells with more than a value of 10% and an average size of the values. The same database table 2 is used for the compared implementations. The implementation of indexes presented in this document is compared to two other known ways of indexing the rows of the database table. - Black red trees are a known associative data structure for indexing. The implementation is based on the C ++ std: map, provided with GCC 4.3.2 STL. - B trees are another associative data structure for indexing. They are used to improve the locality of the data in a memory or on a disk. The implementation is based on "klib" by attractive chaos which is known for its good performance (see https: //github.eom/attractivechaos/klib/blob/master/kbtree.h). An aggregation factor of the 256 elements that is a good compromise between efficiency and compactness was chosen.

Les trois approches ont montré l’empreinte de mémoire suivante (1 octet de précision) pour les différents index (toutes les valeurs sont exprimées en octets).The three approaches showed the following memory footprint (1 precision byte) for the different indexes (all values are in bytes).

Arbres rougesRed trees

Index 10 noirs Arbres BIndex 10 black trees B

Structure d’index de la colonne 1 13824 94720 51040Index structure of column 1 13824 94720 51040

Structure d’index de la colonne 2 13984 93504 50240Index structure of column 2 13984 93504 50240

Structure d’index de la colonne 3 11936 88320 48400Index structure of column 3 11936 88320 48400

Structure d’index de la colonne 4 13040 91776 50400Index structure of column 4 13040 91776 50400

Structure d’index de la colonne 5 13104 91968 50080Index structure of column 5 13104 91968 50080

Total 65888 460288 250160Total 65888 460288 250160

La taille du cache LI de l’actuelle CPU Intel ultramodeme est de 32 KO. Ainsi chaque structure d’index de l’index 10 comme présentée dans le présent document pour une table de base de données 2 avec 1024 rangées et plus rentre dans le cache LI de cette taille alors que ça n’est pas le cas pour les mises en œuvre des Arbres rouges noirs et des arbres B.The size of the LI cache of the current ultramodern Intel CPU is 32 KB. Thus each index structure of the index 10 as presented in this document for a database table 2 with 1024 rows and more enters the LI cache of this size, whereas this is not the case for the stakes. Black Red Trees and B Trees.

La taille d’un cache L2 actuellement disponible est de 256 KO. Ainsi chaque structure d’index de l’index 10 comme présentée dans le présent document pour une table de base de données 2 avec 1024 rangées et plus rentre dans le cache L2 de cette taille alors que ça n’est pas le cas pour les mises en œuvre des Arbres rouges noirs et des Arbres B. Bien que l’index basé sur les Arbres B pour une table de base de données 2 avec 1024 rangées rentre dans le cache L2 de cette taille, il ne reste virtuellement plus d’espace dans le cache L2 pour les valeurs de la table de base de données 2 et les structures de données de comptabilisation telles que le bitmap colonne 23 et le bitmap résultat 25.The size of an L2 cache currently available is 256 KB. Thus each index structure of the index 10 as presented in this document for a database table 2 with 1024 rows and more enters the L2 cache of this size, whereas this is not the case for the stakes. Black Brees and Trees B. Although the T-tree-based index for a database table 2 with 1024 rows fits into the L2 cache of this size, there is virtually no space left in the cache. the L2 cache for the values of the database table 2 and the accounting data structures such as the column bitmap 23 and the result bitmap 25.

Tandis que les métadonnées d’index complètes et la table de base de données 2 complète rentre dans le cache L3 (plusieurs MO, en fonction du modèle de CPU) pour les trois mises en œuvre d’index comparées ci-dessus, il faut noter que le cache L3 est partagé entre les noyaux CPU et est soumis à une synchronisation en surdébit. L’accès au cache L3 est par conséquent considérablement plus lent en général que l’accès au cache LI (en général 10 à 20 fois plus lent) et plus lent que l’accès au cache L2 (en général 4 à 8 fois plus lent). Ainsi, la compacité de mémoire inhérente à l’index 10 présenté dans ce document permet de maintenir l’index complet ou au moins une partie significativement plus élevée de l’index (en comparaison aux deux autres mises en œuvre d’index connues susmentionnées) dans le cache LI et/ou dans le cache L2 qui constitue une performance très accrue du mécanisme de traitement de la demande pour déterminer la rangée la plus spécifique de la table de base de données 2 correspondant à la demande entrante 9. L’index 10 et les mécanismes de traitement de la demande basés sur l’index 10 présenté dans ce document peuvent s’appliquer à toutes sortes de base de données différentes et de systèmes de type base de données, par exemple un routeur avec une table de routage. La figure 12 montre une table de routage 33 d’un routeur IP (c-à-d un routeur au niveau de la couche réseau du modèle de référence OSI) mais le présent index 10 est également applicable à tout autre type de routeur ou à tout type de routeur plus spécifique tels que les routeurs logiques et les routeurs de logiciels (par ex. Enterprise Service Busses, ESB), les routeurs de matériels et backbone, les commutateurs haut de gamme, les routeurs DSL, les routeurs Wifi, etc.While the complete index metadata and the complete database table 2 go into the L3 cache (several MOs, depending on the CPU model) for the three index implementations compared above, it should be noted that the L3 cache is shared between the CPU cores and is subject to overhead synchronization. Access to the L3 cache is therefore considerably slower in general than access to the LI cache (typically 10 to 20 times slower) and slower than access to the L2 cache (typically 4 to 8 times slower ). Thus, the memory compactness inherent in the index 10 presented in this document makes it possible to maintain the full index or at least a significantly higher portion of the index (compared to the other two known index implementations mentioned above). in the LI cache and / or in the L2 cache which is a very enhanced performance of the request processing mechanism for determining the most specific row of the database table 2 corresponding to the incoming request 9. The index 10 and the request processing mechanisms based on the index 10 presented in this document can be applied to all kinds of different databases and database type systems, for example a router with a routing table. FIG. 12 shows a routing table 33 of an IP router (ie a router at the network layer of the OSI reference model) but the present index 10 is equally applicable to any other type of router or any type of more specific router such as logical routers and software routers (eg Enterprise Service Busses, ESB), hardware and backbone routers, high-end switches, DSL routers, WiFi routers, etc.

La table de routage 33 de la figure 12 est un exemple simple de table de base de données 2 qui a cinq rangées et cinq colonnes. Les colonnes, de gauche à droite, définissent l’adresse de destination, le masque de sous-réseau, le bond suivant (par ex. le routeur suivant), l’interface de réseau de sortie du routeur ainsi qu’une indication métrique. Connue de la personne du métier, l’adresse de destination et le masque de sous-réseau forment ensemble une adresse de réseau (le masque de sous-réseau indique la gamme de bit de préfixe qui constitue l’adresse de réseau tandis que les bits restant forment l’adresse hôte. Des paquets IP entrant devant être acheminés vers une destination forment les demandes entrantes 9. Le routeur examine l’adresse IP de destination d’un paquet IP entrant et le compare à la table de routage 33. À cet égard, le routeur détermine la rangée la plus spécifique de la table de routage 33 avec une adresse de réseau (c-à-d une adresse de destination dans la première colonne recouverte du masque de sous-réseau dans la seconde colonne) incluant l’adresse IP de destination du paquet IP entrant. Un index 10 avec au moins une structure d’index 11 représentant les adresses du réseau de destination (formé de l’adresse de destination de la première colonne recouverte du masque de sous-réseau dans la seconde colonne de la table de routage 33) et le traitement de la demande décrit en détail ci-dessus sont utilisés pour déterminer la rangée la plus spécifique correspondant à l’adresse IP de destination dans une demande entrante. Par exemple, un paquet IP avec une adresse de destination 192.168.1.23 est reconnu comme étant dirigé vers le réseau 192.168.1.0/24 (24 = masque de sous-réseau 225.225.225.0), c-à-d que la quatrième rangée est la rangée la plus spécifique de la table de routage 33 correspondant à cette demande entrante 9. D’un autre côté, pour un paquet IP avec un numéro de destination 123.123.123.123, la première rangée de la table de routage 33 précisant l’itinéraire standard sera déterminée comme étant la rangée la plus spécifique de table de routage 33 correspondant à cette demande entrante 9. Par conséquent, ce paquet IP sera acheminé vers le saut suivant 192.168.1.1 via l’interface de réseau de sortie 192.168.1.2. L’index 10 et les mécanismes de traitement de la demande basés sur l’index 10 présenté dans ce document sont également applicables à d’autres bases de données ou systèmes de type base de données, tels que les pare-feu avec des tables de filtrage (par ex. les filtres de paquet avec ou sans inspection à états, le filtre mandataire, le filtre de contenu), les moteurs de production, les moteurs de règles, (par ex. les référentiels de réparation précisant les procédures de réparation pour tout type de symptômes d’erreur des dispositifs techniques), les moteurs en continu, les moteurs de vérification de transaction, etc.The routing table 33 of Figure 12 is a simple example of a database table 2 that has five rows and five columns. Columns, from left to right, define the destination address, the subnet mask, the next hop (eg the next router), the router's output network interface, and a metric indication. As known to the person skilled in the art, the destination address and the subnet mask together form a network address (the subnet mask indicates the prefix bit range that constitutes the network address while the bits The incoming IP packets to be routed to a destination form the incoming requests 9. The router examines the destination IP address of an incoming IP packet and compares it to the routing table 33. In this regard, the router determines the most specific row of the routing table 33 with a network address (i.e., a destination address in the first column covered by the subnet mask in the second column) including the destination IP address of the incoming IP packet An index 10 with at least one index structure 11 representing the addresses of the destination network (consisting of the destination address of the first column covered by the subnetwork in the second column of the routing table 33) and the request processing described in detail above are used to determine the most specific row corresponding to the destination IP address in an incoming request. For example, an IP packet with a destination address of 192.168.1.23 is recognized as being directed to the 192.168.1.0/24 network (24 = subnet mask 225.225.225.0), ie the fourth row is the most specific row of the routing table 33 corresponding to this incoming request 9. On the other hand, for an IP packet with a destination number 123.123.123.123, the first row of the routing table 33 specifying the route standard will be determined as the most specific row of routing table 33 corresponding to this incoming request 9. Therefore, this IP packet will be routed to the next hop 192.168.1.1 via the 192.168.1.2 output network interface. Index 10 and demand-response mechanisms based on the index 10 presented in this document are also applicable to other databases or database-like systems, such as firewalls with data tables. filtering (eg packet filters with or without state inspection, proxy filter, content filter), production engines, rule engines, (eg repair repositories specifying repair procedures for any type of technical device error symptoms), streaming engines, transaction verification engines, etc.

Par conséquent, le système informatique 100 est, par exemple, un nœud de réseau hébergeant un pare-feu, auquel cas la table de base de données 2 est une table de filtrage, la demande entrante 9 est un paquet de données entrant et chaque rangée de la table de filtrage constitue une règle de filtrage pour permettre ou empêcher le paquet de données entrant d’être acheminé vers une destination. Les valeurs du paquet de données entrant (par ex. un paquet IP transportant un segment TCP ou UPC qui transporte un paquet de couches d’application tels qu’une demande HTTP) telles qu’une adresse IP de destination, des adresses de port source et destination et les caractéristiques du paquet de données, comme le fait de savoir si le paquet de données appartient ou non à une connexion existante, sont vérifiées par rapport aux règles de filtrage définies par les rangées de la table de filtrage. La table de filtrage comprend par ex. au moins une colonne de destination avec des adresses de destination possibles (telles que des adresses IP et/ou des adresses de port), par ex. une ou plusieurs colonnes sources avec des adresses sources possibles (telles que des adresses IP et/ou des adresses de port), par ex. une ou plusieurs colonnes avec des valeurs précisant les caractéristiques du paquet de données entrant (telles que « établies » faisant référence aux paquets appartenant à une connexion établie) et une colonne avec des valeurs Booléenne indiquant si le paquet de données entrant doit être transmis ou rejeté. La règle de filtrage (c-à-d rangée) la plus applicable (c-à-d la plus spécifique) est déterminée sur la base des valeurs d’entrée 6 dans le paquet de données et la valeur correspondante de la dernière colonne mentionnée (c-à-d oui ou non = accepter ou rejeter) est retournée.Therefore, the computer system 100 is, for example, a network node hosting a firewall, in which case the database table 2 is a filter table, the incoming request 9 is an incoming data packet, and each row The filter table is a filtering rule to allow or prevent the incoming data packet from being routed to a destination. The values of the incoming data packet (eg an IP packet carrying a TCP or UPC segment that carries a packet of application layers such as an HTTP request) such as a destination IP address, source port addresses and destination and the characteristics of the data packet, such as whether or not the data packet belongs to an existing connection, are checked against the filtering rules defined by the rows of the filtering table. The filtering table comprises e.g. at least one destination column with possible destination addresses (such as IP addresses and / or port addresses), e.g. one or more source columns with possible source addresses (such as IP addresses and / or port addresses), e.g. one or more columns with values specifying the characteristics of the incoming data packet (such as "established" referring to packets belonging to an established connection) and a column with Boolean values indicating whether the incoming data packet should be forwarded or discarded . The most applicable (ie the most specific) filter rule (ie, row) is determined based on the input values 6 in the data packet and the corresponding value of the last column mentioned. (ie yes or no = accept or reject) is returned.

Au cas où le système informatique 100 est, par exemple, un moteur de règles, la table de base de données 2 est une table de règles et chaque rangée de la table de règles constitue mie règle pour répondre à la demande. Les colonnes de la table de règles définissent les critères des règles. Les valeurs d’entrée 6 de la demande qui définissent des critères de règles particuliers sont vérifiées par rapport à la table de règles, la règle la plus spécifique conforme aux valeurs d’entrée 6 est déterminée et les valeurs de retour demandées de la rangée la plus spécifique déterminée de la table de règle sont retournées.In the case where the computer system 100 is, for example, a rule engine, the database table 2 is a rule table and each row of the rule table is a rule for responding to the request. The columns in the rule table define the criteria for the rules. The input values 6 of the request that define particular rule criteria are checked against the rule table, the most specific rule conforming to the input values 6 is determined, and the requested return values of the row more specific specific from the rule table are returned.

Enfin, la figure 13 est une représentation schématique d’un système informatique 100 qui fournit la fonctionnalité de la base de données 1 avec au moins une table de base de données 2. La base de données 1 peut comprendre un ensemble d’instructions pour amener le système informatique à exécuter toute méthode ou activité réalisée par la table de base de données 1 comme élaboré ci-dessus. Le système informatique 100 comprend un processeur 101, une mémoire principale 102 et un dispositif d’interface réseau 103 qui communiquent entre eux via un bus 104. Le processeur 101 comprend au moins un cache de CPU contenant au moins une partie de l’index 10, comme indiqué à la figure 11 et à la figure 13. La mémoire principale 102 comprend la base de données 1 (c-à-d le logiciel exécuté mettant en œuvre le système de base de données ainsi qu’une table de base de données 2 au moins) et, en option des parties de la table de base de données 2 sont aussi maintenues dans le cache de CPU du processeur 101. En option, le système informatique 100 peut encore comprendre une mémoire statique 105 et une unité d’entraînement de disque 106. Un écran vidéo 107, un dispositif d’entrée alphanumérique 108 et un dispositif de commande de curseur 109 forment une interface homme-machine pour faire fonctionner le système informatique 100. Le dispositif d’interface réseau 103 est une interface avec et/ou sans fils qui connecte la base de données 1 à tout nombre et type de dispositifs et applications client envoyant des demandes entrantes 9 à la base de données 1. Le client peut résider sur Internet et/ou tout autre réseau. Le dispositif d’interface réseau 103 utilise soit des protocoles de communication standards tels qu’une pile de protocoles HTTP/TCP/IP, IEEE 802.11 et/ou des protocoles de communication propriétaires. Un ensemble d’instruction (c-à-d logiciel) 100 incarnant tout ou toutes les méthodologies décrites ci-dessus, réside entièrement ou au moins partiellement dans ou sur un support lisible par machine, par ex. la mémoire principale 102 et/ou le processeur 101 avec au moins un cache de CPU. Parmi d’autres, les instructions peuvent mettre en œuvre les fonctions de la base de données 1 pour traiter les demandes entrantes 9, pour déterminer la rangée 3 la plus spécifique de la table de base de données 2 correspondant à une demande entrante 9, comme indiqué à la figure 6, ainsi que la génération d’index de la figure 9. Un support lisible par machine sur lequel réside le logiciel 110 peut également être un support de données non volatile 111 (par ex. un disque dur magnétique non amovible ou un disque amovible optique ou magnétique) qui fait partie de l’unité d’entraînement de disque 106. Le logiciel 110 peut de plus être transmis ou reçu comme un signal 112 propagé via Internet à travers le dispositif d’interface réseau 103.Finally, Fig. 13 is a schematic representation of a computer system 100 that provides the functionality of the database 1 with at least one database table 2. The database 1 may comprise a set of instructions for bringing a database the computer system to execute any method or activity performed by the database table 1 as elaborated above. The computer system 100 comprises a processor 101, a main memory 102 and a network interface device 103 which communicate with each other via a bus 104. The processor 101 comprises at least one CPU cache containing at least a portion of the index 10 as shown in Fig. 11 and Fig. 13. The main memory 102 includes the database 1 (ie the executed software implementing the database system as well as a database table). 2 at least) and, optionally, parts of the database table 2 are also maintained in the CPU cache of the processor 101. Optionally, the computer system 100 may further include a static memory 105 and a drive unit. A video screen 107, an alphanumeric input device 108, and a cursor control device 109 form a human-machine interface for operating the computer system 100. The interface device network 103 is a wired and / or wireless interface that connects the database 1 to any number and type of devices and client applications sending incoming requests 9 to the database 1. The client may reside on the Internet and / or any other network. The network interface device 103 uses either standard communication protocols such as an HTTP / TCP / IP, IEEE 802.11 protocol stack and / or proprietary communication protocols. An instruction set (ie software) 100 embodying all or all of the methodologies described above resides entirely or at least partially in or on a machine-readable medium, e.g. the main memory 102 and / or the processor 101 with at least one CPU cache. Among others, the instructions can implement the functions of the database 1 to process the incoming requests 9, to determine the most specific row 3 of the database table 2 corresponding to an incoming request 9, such as shown in FIG. 6, as well as the index generation of FIG. 9. A machine-readable medium on which the software 110 resides may also be a nonvolatile data carrier 111 (for example a non-removable magnetic hard disk or an optical or magnetic removable disk) which is part of the disk drive unit 106. The software 110 may further be transmitted or received as a signal 112 propagated via the Internet through the network interface device 103.

Bien que certains produits et méthodes construits conformément aux enseignements de l’invention ont été décrits dans ce document, la portée de couverture de ce brevet ne s’y limite pas. Au contraire, ce brevet couvre tous les modes de réalisation des enseignements de l’invention qui entrent dans la portée des revendications annexées soit littéralement, soit sous la doctrine d’équivalents.Although some products and methods constructed in accordance with the teachings of the invention have been described herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all the embodiments of the teachings of the invention which fall within the scope of the appended claims either literally or under the doctrine of equivalents.

Claims (17)

REVENDICATIONS 1. Un procédé de détermination de la rangée la plus spécifique dans une table de base de données maintenue par un système informatique, la table de base de données se compose d’une pluralité de rangées et d’une pluralité de colonnes, les rangées et les colonnes de la table de base de données forment des cellules, chaque cellule comprend au moins une valeur ou aucune valeur ; le système informatique maintient également un index pour la table de base de données ; chaque index comprend une structure d’index respective pour chaque colonne de la table de base de données ; chaque structure d’index comprend un ensemble respectif de tuples de pointeurs pour chaque valeur apparaissant dans la colonne respective et un bitmap dans lequel chaque tuple de pointeur comprend un premier pointeur indiquant une des valeurs qui apparaît dans la colonne et un second pointeur indiquant la rangée de la table de base de données dans laquelle la valeur apparaît, et où le bitmap indique des cellules dans la colonne respective sans valeur ; l’index indique un ordre de spécificité des rangées de la table de base de données ; le procédé comprend : - la réception par le système informatique d’une demande indiquant au moins une colonne de la table de base de données associée à une valeur d’entrée respective ; - incrémentiellement, pour chaque colonne, le système informatique : - utilise le bitmap de la structure d’index pour que la colonne maintienne toutes les rangées de la table de base de données qui ne contiennent aucune valeur dans la cellule de la colonne considérée, et - utilise le tuple de pointeur de la structure d’index pour que la colonne filtre toutes les rangées de la table de base de données qui ne comprennent pas la valeur d’entrée respective, - la sélection, par le système informatique, à partir des rangées restantes, de la rangée la plus en haut dans l’ordre de spécificité ; - le fait de retourner, par le système informatique, la valeur d’au moins une cellule de la rangée déterminée.1. A method of determining the most specific row in a database table maintained by a computer system, the database table consists of a plurality of rows and a plurality of columns, rows and the columns of the database table form cells, each cell includes at least one value or no value; the computer system also maintains an index for the database table; each index includes a respective index structure for each column of the database table; each index structure comprises a respective set of pointer tuples for each value appearing in the respective column and a bitmap in which each pointer tuple comprises a first pointer indicating one of the values that appears in the column and a second pointer indicating the row. of the database table in which the value appears, and where the bitmap indicates cells in the respective column with no value; the index indicates an order of specificity of the rows of the database table; the method comprises: - receiving by the computer system a request indicating at least one column of the database table associated with a respective input value; incrementally, for each column, the computer system: uses the bitmap of the index structure for the column to maintain all the rows of the database table that do not contain any value in the cell of the column considered, and - uses the pointer tuple of the index structure so that the column filters all the rows of the database table that do not understand the respective input value, - the selection, by the computer system, from the remaining rows from the top row in the order of specificity; - returning, by the computer system, the value of at least one cell of the determined row. 2. Le procédé selon la revendication 1 comprend par ailleurs : - en réponse à la réception de la requête, l’initialisation d’un bitmap résultat indiquant les rangées restantes ; dans laquelle l’utilisation des tuples de pointeur et du bitmap de la structure d’index pour chaque colonne indiquée dans la demande comprend : - l’établissement d’un bitmap colonne indiquant toutes les rangées qui remplissent la valeur d’entrée respective pour la colonne respective, et - la mise à jour du bitmap résultat en associant le bitmap résultat et le bitmap colonne.2. The method of claim 1 further comprises: - in response to the receipt of the request, the initialization of a result bitmap indicating the remaining rows; in which the use of the pointer tuples and the bitmap of the index structure for each column indicated in the request includes: - the establishment of a column bitmap indicating all the rows that fill the respective input value for the respective column, and - updating the result bitmap by associating the result bitmap and the column bitmap. 3. Le procédé selon la revendication 1 dans lequel l’ensemble respectif des tuples de pointeur est stocké de manière contiguë dans une mémoire du système informatique.The method of claim 1 wherein the respective set of pointer tuples is contiguously stored in a memory of the computer system. 4. Lea procédé selon l’une quelconque des revendications 1 à 3, dans leaquel l’utilisation des tuples de pointeur et du bitmap de la structure d’index pour chaque colonne indiquée dans la demande comprend par ailleurs la réalisation d’une recherche binaire sur l’ensemble respectif de tuples de pointeur.4. The method of any one of claims 1 to 3, wherein the use of the pointer tuples and the bitmap of the index structure for each column indicated in the request further comprises performing a binary search. on the respective set of pointer tuples. 5. Le procédé selon l’une quelconque des revendications 2 à 4 dans lequel toutes les rangées qui remplissent la valeur d’entrée respective sont indiquées par un « 1 » dans le bitmap colonne, toutes les rangées restantes sont indiquées par « 1 » dans le bitmap résultat et l’association du bitmap résultat et du bitmap colonne comprend une opération ET bit à bit;5. The method according to any of claims 2 to 4 wherein all the rows that fill the respective input value are indicated by a "1" in the column bitmap, all remaining rows are indicated by "1" in the result bitmap and the association of the result bitmap and the bitmap column includes a bitwise AND operation; 6. Le procédé selon l’une quelconque des revendications 1 à 5 comprenant par ailleurs : - la génération de l’index par : - l’initialisation du bitmap indiquant toutes les cellules dans la colonne respective sans valeur, - l’ajout d’un tuple de pointeur à l’ensemble de tuples de pointeur de la structure d’index respective pour chaque valeur dans la colonne, - la mise à jour du bitmap de la structure d’index respective pour refléter toutes les cellules sans valeur.6. The method according to any one of claims 1 to 5 further comprising: - the generation of the index by: - the initialization of the bitmap indicating all the cells in the respective column without value, - the addition of a pointer tuple to the set of pointer tuples of the respective index structure for each value in the column, - updating the bitmap of the respective index structure to reflect all the valueless cells. 7. Le procédé selon la revendication 6 dans lequel la génération d’index comprend par ailleurs : le tri des tuples de pointeur de chaque structure d’index par la valeur désignée par le premier pointeur.The method of claim 6 wherein the index generation further comprises: sorting the pointer tuples of each index structure by the value designated by the first pointer. 8. Le procédé selon Lune quelconque des revendications 1 à 7 dans lequel l’indication de l’ordre de spécificité des rangées de la table de base de données est réalisée en triant les rangées de la table de base de données en fonction du nombre de cellules dans chaque rangée sans valeur et/ou une spécificité des valeurs dans les cellules de la rangée.The method according to any one of claims 1 to 7 wherein the indication of the order of row specificity of the database table is performed by sorting the rows of the database table according to the number of rows of the database table. cells in each row with no value and / or a specificity of the values in the cells of the row. 9. Le procédé selon la revendication 8 dans lequel l’indication de l’ordre de spécificité est donnée par un ordre de rangée unique indiquant les rangées triées.The method of claim 8 wherein the indication of the order of specificity is given by a single row order indicating the sorted rows. 10. Le procédé selon l’une quelconque des revendications 1 à 7 dans lequel l’indication de la spécificité est donnée par des valeurs de pondération comprises dans l’index de la table de base de données.The method of any one of claims 1 to 7 wherein the indication of the specificity is given by weighting values included in the index of the database table. 11. Le procédé d’une quelconque des revendications 1 à 10 dans lequel le système informatique est un routeur, la table de base de données est une table de routage, chaque rangée de la table de routage constitue une règle de routage pour acheminer une demande entrante vers une destination, la table de routage comprend une colonne de destination avec des valeurs de destination possibles et une colonne d’acheminement avec les valeurs correspondantes indiquant un acheminement vers la destination.The method of any one of claims 1 to 10 wherein the computer system is a router, the database table is a routing table, each row of the routing table constitutes a routing rule for routing a request. Inbound to a destination, the routing table includes a destination column with possible destination values and a routing column with corresponding values indicating routing to the destination. 12. Le procédé d’une quelconque des revendications 1 à 10 dans lequel le système informatique est un pare-feu, la table de base de données est une table de filtrage, la demande est un paquet de données entrant et chaque rangée de la table de filtrage constitue une règle de filtrage pour permettre ou empêcher le paquet de données entrant d’être transmis vers une destination, où la table de filtrage comprend au moins une colonne de destination avec les adresses de destination possibles, au moins une colonne avec des valeurs précisant les caractéristiques du paquet de données entrant et une colonne avec des valeurs Booléennes indiquant si le paquet de données entrant doit être transmis ou rejeté.The method of any one of claims 1 to 10 wherein the computer system is a firewall, the database table is a filter table, the request is an incoming data packet and each row of the table filter is a filtering rule for allowing or preventing the incoming data packet from being transmitted to a destination, where the filtering table comprises at least one destination column with the possible destination addresses, at least one column with values specifying the characteristics of the incoming data packet and a column with Boolean values indicating whether the incoming data packet should be transmitted or rejected. 13. Le procédé d’une quelconque des revendications 1 à 10 dans lequel le système informatique est un moteur de règles, la table de base de données est une table de règles, chaque rangée de la table règles constitue une règle pour répondre à la demande, les colonnes de la table de règles définissent les critères de règles.The method of any one of claims 1 to 10 wherein the computer system is a rules engine, the database table is a rules table, each row of the rules table is a rule for responding to the request. , the columns of the rule table define the rule criteria. 14. Le procédé d’une quelconque des revendications 1 à 13 dans lequel l’index est stocké dans un cache de processeur du système informatique et reste stocké dans le cache de processeur après que la valeur d’au moins une cellule de la rangée déterminée ait été retournée pour être disponible pour d’autres demandes de traitement.The method of any one of claims 1 to 13 wherein the index is stored in a processor cache of the computer system and remains stored in the processor cache after the value of at least one cell of the determined row. has been returned to be available for other treatment requests. 15. Un système informatique pour déterminer la rangée la plus spécifique dans une table de base de données maintenue par le système informatique, la table de base de données se compose d’une pluralité de rangées et une pluralité de colonnes, les rangées et les colonnes de la table de base de données forment une cellule, chaque cellule comprend au moins une valeur ou aucune valeur ; le système informatique maintient également un index pour la table de base de données ; chaque index comprend une structure d’index respective pour chaque colonne de la table de base de données ; chaque structure d’index comprend un tuple de pointeurs respectif pour chaque valeur apparaissant dans la colonne respective et un bitmap dans lequel chaque tuple de pointeur comprend un premier pointeur indiquant une des valeurs qui apparaît dans la colonne et un second pointeur indiquant la rangée de la table de base de données dans laquelle la valeur apparaît, et où le bitmap indique des cellules dans la colonne respective sans valeur ; l’index indique un ordre de spécificité des rangées de la table de base de données ; le système informatique est configuré pour : - recevoir une demande indiquant au moins une colonne de la table de base de données associée à une valeur d’entrée respective ; - incrémentiellement, pour chaque colonne indiquée dans la demande : - utiliser les tuples de pointeur de la structure d’index pour que la colonne filtre toutes les rangées de la table de base de données qui ne comprennent pas la valeur d’entrée respective, et - utiliser le bitmap de la structure d’index pour que la colonne maintienne toutes les rangées de la table de base de données qui ne contiennent aucune valeur dans la cellule de la colonne considérée ; - sélectionner, à partir des rangées restantes, la rangée la plus en haut dans l’ordre de spécificité ; - retourner la valeur d’au moins une cellule de la rangée déterminée.15. A computer system for determining the most specific row in a database table maintained by the computer system, the database table consists of a plurality of rows and a plurality of columns, rows, and columns of the database table form a cell, each cell includes at least one value or no value; the computer system also maintains an index for the database table; each index includes a respective index structure for each column of the database table; each index structure comprises a respective tuple of pointers for each value appearing in the respective column and a bitmap in which each tuple of pointer comprises a first pointer indicating one of the values that appears in the column and a second pointer indicating the row of the database table in which the value appears, and where the bitmap indicates cells in the respective column with no value; the index indicates an order of specificity of the rows of the database table; the computer system is configured to: - receive a request indicating at least one column of the database table associated with a respective input value; - incrementally, for each column indicated in the request: - use the pointer tuples of the index structure so that the column filters all the rows of the database table that do not understand the respective input value, and - use the bitmap of the index structure for the column to maintain all the rows in the database table that do not contain any value in the cell of the column in question; - select, from the remaining rows, the top row in the order of specificity; - return the value of at least one cell of the determined row. 16. Le système informatique selon la revendication 15 est agencé pour exécuter le procédé d’une quelconque des revendications 2 à 14.The computer system of claim 15 is arranged to carry out the method of any one of claims 2 to 14. 17. Un programme d’ordinateur comprenant des instructions de code de programme pour l’exécution des étapes du procédé selon les revendications 1 à 14 lorsque ledit programme est exécuté sur un ordinateur.A computer program comprising program code instructions for performing the steps of the method of claims 1 to 14 when said program is run on a computer.
FR1650922A 2016-02-05 2016-02-05 DATA BASE TABLE INDEX Active FR3047580B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
FR1650922A FR3047580B1 (en) 2016-02-05 2016-02-05 DATA BASE TABLE INDEX
ES17000126T ES2930440T3 (en) 2016-02-05 2017-01-25 Database table index
EP17000126.7A EP3203388B1 (en) 2016-02-05 2017-01-25 Database table index
CN201710056864.9A CN107045535B (en) 2016-02-05 2017-01-26 Database table index

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1650922A FR3047580B1 (en) 2016-02-05 2016-02-05 DATA BASE TABLE INDEX
FR1650922 2016-02-05

Publications (2)

Publication Number Publication Date
FR3047580A1 FR3047580A1 (en) 2017-08-11
FR3047580B1 true FR3047580B1 (en) 2019-07-05

Family

ID=56101560

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1650922A Active FR3047580B1 (en) 2016-02-05 2016-02-05 DATA BASE TABLE INDEX

Country Status (1)

Country Link
FR (1) FR3047580B1 (en)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951651A (en) * 1997-07-23 1999-09-14 Lucent Technologies Inc. Packet filter system using BITMAP vector of filter rules for routing packet through network
US7386525B2 (en) * 2001-09-21 2008-06-10 Stonesoft Corporation Data packet filtering

Also Published As

Publication number Publication date
FR3047580A1 (en) 2017-08-11

Similar Documents

Publication Publication Date Title
US11601351B2 (en) Aggregation of select network traffic statistics
US10460250B2 (en) Scope in decision trees
US9077669B2 (en) Efficient lookup methods for ternary content addressable memory and associated devices and systems
US20130246698A1 (en) Hybrid Memory for Search Operations
US10095720B2 (en) Database table index
US10042875B2 (en) Bloom filter index for device discovery
CN104915717B (en) Data processing method, Analysis of Knowledge Bases Reasoning method and relevant apparatus
CN110226159B (en) Method for performing database functions on a network switch
US20150254249A1 (en) System and method for ranking content popularity in a content-centric network
CN107798106A (en) A kind of URL De-weight methods in distributed reptile system
EP3560148A1 (en) Database functions-defined network switch and database system
CN104253754A (en) ACL (access control list) fast matching method and equipment
EP1926032A1 (en) Hierarchical search method on a conditional graph
US10235420B2 (en) Bucket skiplists
FR3047580B1 (en) DATA BASE TABLE INDEX
Zhang et al. Sparx: Distributed outlier detection at scale
CN111143427B (en) Distributed information retrieval method, system and device based on online computing
CN111274457B (en) Network graph segmentation method and storage medium
RU2613034C2 (en) Rapid establishment of compliance with content addressing
EP3948579A1 (en) System and method for enriching data
EP3203388A1 (en) Database table index
EP1912408B1 (en) Method of managing a database partitioned in a communication network
WO2021218854A1 (en) Message classification method and apparatus, electronic device, and readable medium
Kniesburges et al. Hashed Patricia Trie: Efficient longest prefix matching in peer-to-peer systems
FR3101978A1 (en) System and method for detecting a DGA domain generation algorithm

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20170811

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9