PostgreSQL™ est extensible
parce qu'il opère grâce à un système de catalogues. Quiconque est
familier des systèmes de bases de données relationnelles standard
sait que les informations concernant les bases, les tables, les
colonnes, etc. y sont stockées 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
ressemblent à des tables ordinaires, mais le SGBD y enregistre ses registres internes. À la
différence des autres systèmes, PostgreSQL™ enregistre beaucoup
informations dans ses catalogues : non seulement l'information
concernant les tables et les colonnes, mais aussi l'information
concernant les types de données, les fonctions, les méthodes
d'accès, etc.
Ces tables peuvent être modifiées par l'utilisateur. Qui plus est,
puisque PostgreSQL™ fonde
ses opérations sur ces tables, il peut être étendu par les
utilisateurs. En comparaison, les systèmes de bases de données
conventionnels ne peuvent être étendus qu'en modifiant les
procédures dans le code source ou en installant des modules
spécifiquement écrits par le vendeur de SGBD.
De plus, le serveur PostgreSQL™ peut incorporer utilisateur
grâce au chargement dynamique. C'est-à-dire que l'utilisateur peut
indiquer un fichier de code objet (par exemple une bibliothèque
partagée) qui code un nouveau type ou une nouvelle fonction et
PostgreSQL™ le chargera au
besoin. Il est encore plus facile d'ajouter au serveur du code
écrit en SQL. La 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.