温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

数据库Foreign Data Wrapper是什么

发布时间:2026-11-09 06:56:57 来源:亿速云 阅读:102 作者:小樊 栏目:数据库

Foreign Data Wrapper(FDW,外部数据包装器) 是 PostgreSQL 等支持 SQL/MED(SQL Management of External Data)标准的数据库中的一项重要功能,用来在数据库内部访问和操作外部数据源,就好像它们是本地表一样。


一句话理解

FDW 让你在 PostgreSQL 里“挂载”其他数据库或数据文件,用 SQL 直接查询它们,而不用把数据搬进来。


核心概念

1. Foreign Data Wrapper(外部数据包装器)

  • 一个 插件/驱动
  • 负责连接某种外部数据源
  • 例子:
    • postgres_fdw:连接其他 PostgreSQL
    • mysql_fdw:连接 MySQL
    • file_fdw:读取 CSV / 文本文件
    • redis_fdw、mongo_fdw、s3_fdw 等

2. Foreign Server(外部服务器)

  • 定义 数据源在哪里
  • 包含连接信息(host、port、dbname 等)

3. User Mapping(用户映射)

  • 把 本地数据库用户 映射到 外部数据源用户
  • 用于权限和认证

4. Foreign Table(外部表)

  • 在本地数据库中定义的“虚拟表”
  • 数据实际存储在外部
  • 可以 SELECT / INSERT / UPDATE / DELETE(取决于 FDW 支持)

简单示例(PostgreSQL)

-- 1. 安装 FDW 扩展
CREATE EXTENSION postgres_fdw;

-- 2. 创建外部服务器
CREATE SERVER remote_pg
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host '192.168.1.10', dbname 'orders', port '5432');

-- 3. 用户映射
CREATE USER MAPPING FOR current_user
SERVER remote_pg
OPTIONS (user 'remote_user', password 'secret');

-- 4. 创建外部表
CREATE FOREIGN TABLE remote_orders (
    id int,
    amount numeric
)
SERVER remote_pg
OPTIONS (schema_name 'public', table_name 'orders');

-- 5. 像本地表一样查询
SELECT * FROM remote_orders WHERE amount > 100;

常见用途

✅ 跨数据库查询(PG ↔ MySQL ↔ Oracle)
✅ 数据集成 / 数据中台
✅ 不迁移数据的情况下做报表
✅ 读取 CSV / 日志文件
✅ 构建轻量级数据仓库


优点 vs 缺点

优点

  • 透明访问外部数据
  • 减少 ETL
  • SQL 标准化
  • 扩展生态丰富

缺点

  • 性能依赖网络和外部库
  • 事务一致性有限(部分 FDW)
  • 复杂查询可能被下推失败

和其他技术的区别

技术 区别
ETL FDW 不复制数据
dblink FDW 更规范、可像表使用
视图 视图是逻辑,FDW 是物理外部

如果你愿意,我可以:

  • 用 某个具体数据库(MySQL / PostgreSQL / Oracle) 举例
  • 讲 FDW 的查询下推与性能优化
  • 对比 FDW vs 数据中台方案
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手