Partager 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, il s’agit au moins d’un fichier de script qui contient les commandes SQL pour créer les objets distribués par l’extension et un fichier de contrôle qui spécifie quelques propriétés de base de l’extension elle-même.

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 les 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 accessible à tous les processus back-end 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, ont besoin d’accéder à cette zone de mémoire partagée à partir du code généré dans ces bibliothèques. Ces extensions ont une exigence supplémentaire, c’est-à-dire que 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 telles, car elles n’ont pas de fichier de contrôle et un 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 binaire partagée autonomes.

Ces fichiers peuvent également être chargés en mémoire lorsque le serveur démarre et peuvent implémenter du code qui, généralement, détoure le chemin d’exécution naturel de PostgreSQL pour modifier 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