Els Wrappers de dades externes (FDW, per les seves sigles en anglès) són una funcionalitat avançada de PostgreSQL que permet accedir a dades emmagatzemades en fonts externes com si fossin taules locals. Aquesta capacitat és especialment útil per integrar dades de diferents sistemes i bases de dades en una única interfície de consulta.
Conceptes clau
- Foreign Data Wrapper (FDW): És un mòdul que permet a PostgreSQL accedir a dades externes.
- Servidor extern: Representa la ubicació de les dades externes.
- Taula externa: Una taula en PostgreSQL que apunta a una taula o vista en una base de dades externa.
- Opcions de connexió: Paràmetres necessaris per connectar-se a la font de dades externa, com ara l'URL, el port, l'usuari i la contrasenya.
Instal·lació i configuració
- Instal·lació del mòdul FDW
Per utilitzar un FDW, primer cal instal·lar el mòdul corresponent. PostgreSQL ofereix diversos FDW per a diferents fonts de dades, com ara postgres_fdw
per a altres bases de dades PostgreSQL, mysql_fdw
per a MySQL, etc.
- Creació del servidor extern
Un cop instal·lat el mòdul, cal crear un servidor extern que representi la ubicació de les dades externes.
-- Crear un servidor extern per a una altra base de dades PostgreSQL CREATE SERVER foreign_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'foreign_host', dbname 'foreign_db', port '5432');
- Creació de l'usuari mapejat
Després de crear el servidor extern, cal definir un mapeig d'usuari per especificar les credencials d'accés a la base de dades externa.
-- Crear un mapeig d'usuari CREATE USER MAPPING FOR local_user SERVER foreign_server OPTIONS (user 'foreign_user', password 'foreign_password');
- Creació de la taula externa
Finalment, es crea una taula externa que apunta a una taula o vista en la base de dades externa.
-- Crear una taula externa CREATE FOREIGN TABLE foreign_table ( id integer, name text, value numeric ) SERVER foreign_server OPTIONS (schema_name 'public', table_name 'remote_table');
Exemple pràctic
Escenari
Suposem que tenim dues bases de dades PostgreSQL: local_db
i remote_db
. Volem accedir a la taula products
de remote_db
des de local_db
.
Passos
-
Instal·lar el mòdul
postgres_fdw
alocal_db
:CREATE EXTENSION IF NOT EXISTS postgres_fdw;
-
Crear el servidor extern a
local_db
:CREATE SERVER remote_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'remote_host', dbname 'remote_db', port '5432');
-
Crear el mapeig d'usuari a
local_db
:CREATE USER MAPPING FOR local_user SERVER remote_server OPTIONS (user 'remote_user', password 'remote_password');
-
Crear la taula externa a
local_db
:CREATE FOREIGN TABLE remote_products ( product_id integer, product_name text, price numeric ) SERVER remote_server OPTIONS (schema_name 'public', table_name 'products');
Consultar dades de la taula externa
Un cop configurada la taula externa, podem consultar les dades com si fos una taula local.
Exercicis pràctics
Exercici 1
Objectiu: Crear una taula externa que apunti a una taula employees
en una base de dades MySQL.
- Instal·la el mòdul
mysql_fdw
. - Crea un servidor extern per a la base de dades MySQL.
- Defineix un mapeig d'usuari.
- Crea una taula externa que apunti a la taula
employees
.
Solució
-- Instal·lar el mòdul mysql_fdw CREATE EXTENSION IF NOT EXISTS mysql_fdw; -- Crear un servidor extern per a MySQL CREATE SERVER mysql_server FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host 'mysql_host', dbname 'mysql_db', port '3306'); -- Crear un mapeig d'usuari CREATE USER MAPPING FOR local_user SERVER mysql_server OPTIONS (username 'mysql_user', password 'mysql_password'); -- Crear una taula externa CREATE FOREIGN TABLE mysql_employees ( employee_id integer, employee_name text, salary numeric ) SERVER mysql_server OPTIONS (dbname 'mysql_db', table_name 'employees');
Exercici 2
Objectiu: Consultar dades de la taula externa mysql_employees
creada en l'exercici anterior.
Conclusió
Els Wrappers de dades externes (FDW) són una eina poderosa per integrar dades de diverses fonts en una única base de dades PostgreSQL. Aquesta funcionalitat permet als desenvolupadors i administradors de bases de dades accedir i gestionar dades de manera eficient, independentment de la seva ubicació física. Amb la configuració adequada, les taules externes es poden utilitzar com si fossin taules locals, facilitant la integració i l'anàlisi de dades.
Curs de PostgreSQL
Mòdul 1: Introducció a PostgreSQL
Mòdul 2: Operacions bàsiques de SQL
Mòdul 3: Consultes SQL avançades
Mòdul 4: Disseny de bases de dades i normalització
Mòdul 5: Funcionalitats avançades de PostgreSQL
Mòdul 6: Optimització i millora del rendiment
- Optimització de consultes
- Estratègies d'indexació
- Analitzant el rendiment de les consultes
- Vacuuming i manteniment
Mòdul 7: Seguretat i gestió d'usuaris
- Rols d'usuari i permisos
- Mètodes d'autenticació
- Encriptació de dades
- Còpia de seguretat i restauració
Mòdul 8: Treballant amb JSON i funcionalitats NoSQL
Mòdul 9: Extensions i eines avançades
- PostGIS per a dades geoespacials
- Cerca de text complet
- Wrappers de dades externes
- PL/pgSQL i altres llenguatges procedimentals