PostgreSQL™ implémente des portions de la norme SQL/MED, vous permettant d'accéder à des données qui résident en dehors de PostgreSQL en utilisant des requêtes SQL standards. On utilise le terme de données distantes pour de telles données. (Notez que cet usage ne doit pas être confondu avec les clés étrangères qui sont un type de contrainte à l'intérieur d'une base de données.)
Les données distantes sont accédées grâce à un wrapper de données distantes. Ce dernier est une bibliothèque qui peut communiquer avec une source de données externe, cachant les détails de la connexion vers la source de données et de la récupération des données à partir de cette source. Il existe des wrappers de données distantes disponibles en tant que modules contrib. D'autres types de wrappers de données distantes peuvent faire partie de produits tiers. Si aucun des wrappers de données distantes ne vous convient, vous pouvez écrire le votre. Voir Chapitre 54, Écrire un wrapper de données distantes.
Pour accéder aux données distantes, vous devez créer un objet de type serveur distant qui définit la façon de se connecter à une source de données externes particulière suivant un ensemble d'options utilisées par un wrapper de données distantes. Ensuite, vous aurez besoin de créer une ou plusieurs tables distantes, qui définissent la structure des données distantes. Une table distante peut être utilisée dans des requêtes comme tout autre table, mais une table distante n'est pas stockée sur le serveur PostgreSQL. À chaque utilisation, PostgreSQL™ demande au wrapper de données distantes de récupérer les données provenant de la source externe, ou de transmettre les données à la source externe dans le cas de commandes de mise à jour.
Accéder à des données distantes pourrait nécessiter une authentification auprès de la source de données externes. Cette information peut être passée par une correspondance d'utilisateur, qui peut fournir des données comme les noms d'utilisateurs et mots de passe en se basant sur le rôle PostgreSQL™ actuel.
Pour plus d'informations, voir CREATE FOREIGN DATA WRAPPER(7), CREATE SERVER(7), CREATE USER MAPPING(7), CREATE FOREIGN TABLE(7) et IMPORT FOREIGN SCHEMA(7).