Un Foreign Data Wrapper (FDW) es una extensión de la especificación SQL/MED (SQL Management of External Data) que proporciona una interfaz estandarizada para integrar y consultar datos de sistemas externos. Actúa como un proxy o adaptador, traduciendo las consultas SQL del DBMS local en operaciones apropiadas para la fuente de datos remota (por ejemplo, llamadas a API, consultas a otra base de datos, lectura de archivos). El FDW se encarga de la conexión, la autenticación, la traducción de tipos de datos y la optimización de las consultas, permitiendo que el optimizador de consultas local considere los datos externos como parte del plan de ejecución general.

La implementación más prominente de FDWs se encuentra en PostgreSQL, que ofrece una amplia gama de FDWs para diversas fuentes de datos. Ejemplos incluyen `postgres_fdw` para acceder a otras bases de datos PostgreSQL, `mysql_fdw` para MySQL, `oracle_fdw` para Oracle, `mongo_fdw` para MongoDB, `file_fdw` para archivos CSV o de texto, y `s3_fdw` para objetos en Amazon S3. Estos FDWs permiten a los usuarios realizar `SELECT`, `INSERT`, `UPDATE` y `DELETE` directamente sobre los datos remotos, facilitando la creación de vistas materializadas o la ejecución de consultas federadas que combinan datos de múltiples orígenes heterogéneos.

Para un Arquitecto de Sistemas, los FDWs son una herramienta estratégica para la integración de datos y la construcción de arquitecturas de datos federadas. Permiten crear una capa de abstracción unificada sobre fuentes de datos dispares sin necesidad de ETL complejos o duplicación de datos. Sin embargo, es crucial considerar los trade-offs: el rendimiento de las consultas sobre datos externos puede ser significativamente menor debido a la latencia de red, la capacidad de procesamiento de la fuente remota y la eficiencia del FDW en la 'pushdown' de operaciones. La seguridad y la gestión de credenciales para las fuentes externas también son consideraciones clave. Un arquitecto debe evaluar si la simplicidad de acceso supera los posibles cuellos de botella de rendimiento y si la fuente externa puede soportar la carga de consultas, optando a veces por soluciones de replicación o ETL tradicionales para cargas de trabajo de alta demanda o analíticas intensivas.