PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 14.11 » Internes » Index GIN » Introduction

67.1. Introduction

GIN est l'acronyme de Generalized Inverted Index (ou index générique inversé). GIN est prévu pour traiter les cas où les éléments à indexer sont des valeurs composites, et où les requêtes devant utiliser l'index doivent rechercher des valeurs d'éléments apparaissant dans ces éléments composites. Par exemple, les éléments pourraient être des documents, et les requêtes pourraient être des recherches de documents contenant des mots spécifiques.

Nous utilisons le mot élément (item en version originale) pour désigner une valeur composite qui doit être indexée, et le mot clé (clé en version originale) pour désigner une des valeurs d'un élément. GIN stocke et recherche toujours des clés, jamais des éléments eux même.

Un index GIN stocke un jeu de paires de (clé, liste), où liste (posting list en version originale) est un ensemble d'identifiants de ligne (row ID en version originale) où la clé existe. Le même identifiant peut apparaître dans plusieurs listes, puisqu'un élément peut contenir plus d'une clé. Chaque clé est stockée une seule fois, ce qui fait qu'un index GIN est très compact dans le cas où une clé apparaît de nombreuses fois.

GIN est générique dans le sens où la méthode d'accès GIN n'a pas besoin de connaître les opérations spécifiques qu'elle accélère. À la place, elle utilise les stratégies spécifiques définies pour des types de données. La stratégie définit comment extraire les clés des éléments à indexer et des conditions des requêtes, et comment déterminer si une ligne qui contient des valeurs de clés d'une requête répond réellement à la requête.

Un des avantages de GIN est la possibilité qu'il offre que des types de données personnalisés avec des méthodes d'accès appropriées soient développés par un expert du domaine du type de données, plutôt que par un expert en bases de données. La méthode GiST offre le même avantage.

L'implantation de GIN dans PostgreSQL est principalement l'œuvre de Teodor Sigaev et Oleg Bartunov. Plus d'informations sur GIN sont disponibles sur leur site web.