Extensions et modules du serveur flexible Azure Database pour PostgreSQL

Les extensions et les modules dans PostgreSQL sont des outils puissants que vous pouvez utiliser pour étendre les fonctionnalités du système de base de données. Ils vont d’objets SQL simples à des bibliothèques binaires complexes et fournissent des fonctionnalités et des fonctionnalités supplémentaires qui ne sont pas disponibles dans la distribution PostgreSQL principale.

Extensions

Pour définir une extension, vous avez besoin d’au moins 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 des propriétés de base de l’extension elle-même.

Lorsque vous créez, installez ou chargez des extensions dans une base de données, ils 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 vous supprimez, désinstallez ou déchargez des extensions d’une base de données, le processus supprime tous les objets créés par l’extension. 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.

Vous pouvez écrire l’implémentation des fonctionnalités fournies par ces objets distribués par l’extension dans SQL ou PL/pgSQL. Mais vous pouvez également l’implémenter 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, vous gérez les extensions à l’aide des 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 vous exécutez la commande.
  • 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 vous exécutez la commande.
  • COMMENT ON EXTENSION stocke un commentaire sur l’extension en tant qu’objet de base de données.

Au démarrage du serveur, 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 doivent 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, suivez les instructions de chargement des bibliothèques.

Modules

Bien qu’elles ne soient pas considérées comme des extensions, 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 implémente des fonctionnalités dans les fichiers de bibliothèque binaire partagé autonome.

Vous pouvez charger ces fichiers en mémoire au démarrage du serveur. Ils peuvent implémenter du code qui détoure généralement 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