PostgreSQLLa base de données la plus sophistiquée au monde.

32. Extension de SQL

Dans cette section, nous discutons de la façon d'étendre le langage de requêtes PostgreSQL™ en ajoutant des :

32.1. Comment fonctionne l'extensibilité

PostgreSQL™ est extensible parce qu'il opère grâce à un catalogue. Si vous êtes familier avec les systèmes standards de bases de données, vous savez qu'ils enregistrent les informations concernant les bases de données, les tables, les colonnes, etc., dans ce qu'on nomme communément des catalogues systèmes (certains systèmes appellent cela le dictionnaire de données). Pour l'utilisateur, les catalogues apparaissent comme des tables ordinaires mais le SGBD y enregistre ses écritures internes. Une différence essentielle entre PostgreSQL™ et les systèmes de bases de données relationnelles est que PostgreSQL™ enregistre beaucoup plus d'informations dans ses catalogues : pas seulement l'information à propos des tables et des colonnes, mais aussi l'information au sujet des types de données, des fonctions, des méthodes d'accès, etc. Ces tables peuvent être modifiées par l'utilisateur et, puisque PostgreSQL™ fonde ses opérations sur ces tables, cela signifie que PostgreSQL™ peut être étendu par les utilisateurs. En comparaison, les systèmes de bases de données conventionnels peuvent seulement être étendus en modifiant les procédures dans le code source ou en installant des modules spécifiquement écrits par le vendeur de SGBD.

Encore mieux, le serveur PostgreSQL™ peut s'ajouter du code écrit par l'utilisateur grâce au chargement dynamique. C'est-à-dire que l'utilisateur peut spécifier un fichier de code objet (par exemple une bibliothèque partagée) qui implémente un nouveau type ou une nouvelle fonction et que PostgreSQL™ chargera à la demande. Il est encore plus évident d'ajouter au serveur du code écrit en SQL. Cette possibilité de modifier son fonctionnement « à la volée » fait de PostgreSQL™ un outil unique pour le prototypage rapide de nouvelles applications et de structures de stockage.