天天看點

資料庫必知詞彙:FDW

|名詞定義|

外部資料包裝器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