|名词定义|
外部数据包装器FDW(Foreign Data Wrappers)是 SQL 标准 SQL/MED(SQL Management of External Data)开发的 Postgres 实现。FDW 提供了一系列统一的公共接口,使得扩展程序可以轻松地在优化、执行、扫描、更新和统计等核心部分和 Postgres 深度集成,从而可以用 SQL 语句直接查询和操作外部数据源。PostgreSQL实现了部分SQL/MED规范,允许用户使用常规SQL查询访问PostgreSQL的外部数据。用户可以在外部数据包装器FDW的帮助下访问PostgreSQL的外部数据。外部数据包装器是一个库,它可以与外部数据源通信,隐藏连接到数据源的细节并从中获取数据。其中,一些FDW能够作为contrib模块获取,用户也可以自己创建FDW或者使用第三方所提供的FDW。
| 发展历程 |
2003年,一个名为SQL/MED(“外部数据的SQL管理”)的新规范被添加到SQL标准中。它是处理从SQL数据库访问远程对象的标准化方法。
2011年,PostgreSQL 9.1发布时提供了该标准的只读支持。
2013年,PostgreSQL 9.3增加了写支持。
现在有各种各样的外部数据包装器(FDW)可供使用,使PostgreSQL服务器能够访问不同的远程数据存储。
| 技术特点 |
在PostgreSQL主要内置了两个Foreign Data Wrapper:
- file_fdw:用于创建表示平面文件(Postgres 9.1及以后版本)的外部表;
- postgres_fdw:用于创建表示另一个PostgreSQL数据库(Postgres 9.3及以后版本)中的表的外部表。
| 相关词 |
PostgreSQL - 是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统
dblink - 数据库的链接,跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据
oracle_fdw - 是Postgre的一个外部数据接口,可以使PostgreSQL轻松跨库操作Oracle
mysql_fdw - 是Postgre的一个外部数据接口,可以使PostgreSQL轻松跨库操作MySQL
tds_fdw - 是Postgre的一个外部数据接口,通过安装扩展可以在本地建立一个外表映射到其他不同类型的数据库
redis_fdw - 是Postgre的一个外部数据接口,可以使PostgreSQL轻松跨库操作Redis数据库
| 案例展示 |
使用基于FDW的数据库。
postgres-fdw – 基于PostgresSQL的外部数据包装器
mongo_fdw – 基于MongoDB的外部数据包装器
mysql_fdw – 基于MySQL的外部数据包装器
oracle_fdw – 基于Oracle的外部数据包装器
|资料来源|
PostgreSQL 11在线手册 http://postgres.cn/docs/11/postgres-fdw.html
PostgreSQL's Foreign Data Wrapper https://thoughtbot.com/blog/postgres-foreign-data-wrapper
Foreign Data https://www.postgresql.org/docs/9.5/ddl-foreign-data.html
Foreign data wrappers https://wiki.postgresql.org/wiki/Foreign_data_wrappers