知识卡片
FDW外部数据包装器:统一SQL接口的能力边界,不宜过度使用
内容
FDW(Foreign Data Wrapper,外部数据包装器)是PostgreSQL提供的一种统一SQL接口,允许在PostgreSQL内部直接用SQL语句双向读写Oracle、SQL Server、MySQL、MongoDB、Redis乃至Excel、CSV等异构外部数据源,相当于把这些外部系统”伪装”成PostgreSQL里的本地表来操作。它的价值在于把”接入一个新的异构数据源”这件事,从”为每个数据源单独开发专用的连接和转换代码”,收敛成”通过FDW声明一个外部表映射”,业务方仍然只需要写熟悉的SQL,不需要关心底层数据实际存放在哪个系统、用什么协议访问。但这种统一接口能力是有边界的:不同外部系统的能力和语义本身存在差异(如事务保证、性能特征各不相同),FDW只是提供了访问层的统一,不能消除底层系统能力上限的差异,过度依赖FDW把大量异构数据访问都堆到一个PostgreSQL实例上做接入层,也会让这个实例本身成为单点瓶颈,需要有节制地使用。
参考来源
- 位置:《高可用架构(第1卷)》第6章《大数据与数据库》"6.10 从Postgres95到PostgreSQL9.5:新版亮眼特性"节,"6.10.4 PostgresSQL还可以做什么"(源文件:_epub-src/OEBPS/Text/Chapter6_10_5.xhtml)
- 结论依据:原文说明"FDW是个万能插口,还可以双向操作Oracle、SQLServer、MySQL、MongoDB、Redis、Excel、CVS等数据库或文件。小心用电,FDW是万能的接口,但它再大也是有限的,不要过度使用",直接支撑本卡片结论。
- 原始内容:FDW是个万能插口,还可以双向操作Oracle、SQLServer、MySQL、MongoDB、Redis、Excel、CVS等数据库或文件。小心用电,FDW是万能的接口,但它再大也是有限的,不要过度使用。