Partage via


Extensions et modules

Les extensions et les modules dans PostgreSQL sont des outils puissants qui permettent aux utilisateurs d’étendre les fonctionnalités du système de base de données. Ils peuvent aller d’objets SQL simples à des bibliothèques binaires complexes, fournissant des fonctionnalités et des capacités supplémentaires qui ne sont pas disponibles dans la distribution PostgreSQL principale.

Extensions

Pour définir une extension, vous devez disposer d’au moins un fichier de script, qui contient les commandes SQL nécessaires pour créer les objets distribués par l’extension, et d’un fichier de contrôle, qui spécifie quelques propriétés de base de l’extension proprement dite.

Lorsque des extensions sont créées, installées ou chargées dans une base de données, elles déploient un ensemble d’objets groupés qui visent à étendre les fonctionnalités du moteur. Ces objets peuvent être des fonctions, des opérateurs, des rôles, des types de données, des méthodes d’accès et d’autres types d’objets de base de données.

Lorsque des extensions sont supprimées, désinstallées ou déchargées d’une base de données, tous les objets créés par l’extension sont supprimés. Une exception à ce cas est lorsqu’il existe d’autres objets dans la base de données avec des dépendances envers l’un des objets définis par l’extension.

L’implémentation des fonctionnalités fournies par ces objets distribués par l’extension peut être écrite en SQL ou PL/pgSQL. Mais ces fonctionnalités peuvent également être implémentées dans un fichier de bibliothèque partagée (binaire) distinct, qui est le résultat de la compilation du code source (généralement écrit en C ou Rust) qui implémente les fonctionnalités.

Dans PostgreSQL, les extensions sont gérées via les commandes CREATE EXTENSION, ALTER EXTENSION, DROP EXTENSION, et COMMENT ON EXTENSION.

  • CREATE EXTENSION crée, installe ou charge une extension dans la base de données dans laquelle la commande est exécutée.
  • ALTER EXTENSION met à jour l’extension vers une version plus récente.
  • DROP EXTENSION supprime, désinstalle ou décharge une extension de la base de données dans laquelle la commande est exécutée.
  • COMMENT ON EXTENSION stocke un commentaire sur l’extension en tant qu’objet de base de données.

Lorsque le serveur est démarré, il définit une zone de mémoire à laquelle tous les processus back-end peuvent accéder, pour exécuter de manière coopérative toutes les charges de travail. Dans le jargon PostgreSQL, cette zone de mémoire est appelée mémoire partagée.

Certaines extensions qui implémentent des fonctionnalités à l’aide de bibliothèques partagées nécessitent l’accès à cette mémoire partagée à partir du code intégré à ces bibliothèques. Ces extensions ont une exigence supplémentaire : leurs fichiers de bibliothèque partagée doivent être chargés par le processus principal du moteur, dès que le serveur démarre. Pour ces bibliothèques, vous devez suivre les instructions fournies dans Charger des bibliothèques.

Modules

Bien qu’elles ne soient pas considérées comme des extensions proprement dites, car elles n’ont pas de fichier de contrôle ni de fichier de script pour déployer des objets SQL groupés dans une base de données, une autre forme d’extensibilité dans PostgreSQL consiste à implémenter des fonctionnalités dans des fichiers de bibliothèque partagée autonomes.

Ces fichiers peuvent également être chargés en mémoire au démarrage du serveur, et ils peuvent implémenter du code qui contourne généralement le chemin d’exécution naturel de PostgreSQL et modifie le fonctionnement par défaut du moteur. Ces modifications comportementales visent normalement à amplifier certaines fonctionnalités limitées du moteur.

Azure Database pour PostgreSQL prend en charge les modules suivants :

  • auto_explain
  • pg_failover_slots
  • pg_partman_bgw
  • wal2json