Foreign Data Wrapper(FDW)の機能強化


Foreign Data Wrapper(FDW)は外部データにアクセスするためのしくみです。OS上のファイルに直接アクセスする「file_fdw」と外部のPostgreSQLのテーブルにアクセスする「postgresql_fdw」が標準で提供されています。

非公式ですがOracleやMySQL、MongoDBなどのFDWもあり、それらもPostgreSQLのテーブルのようにアクセスできます。

🐰 FDWの利用手順

外部サーバの定義

CREATE SERVERコマンドでアクセス先の外部サーバを定義します。

次の例はサーバpg_svr、ポート5432でアクセスできるPostgreSQLのDBdatabase_aに対してremote_serverという外部サーバを定義する例です。

CREATE SERVER remote_server FOREIGN DATA WRAPPER postgresql_fdw OPTIONS (host 'pg_svr', port '5432', dbname 'postgres');

外部サーバのユーザーマップ定義

CREATE USER MAPPINGコマンドでローカルユーザーと外部サーバのユーザーを紐付けます。

さきほど定義した外部サーバremote_serverのリモートユーザーpostgres、パスワード****を設定する例です。

CREATE USER MAPPING FOR public SERVER remote_server option (user 'postgres', password '****')

外部テーブルの作成

外部データにアクセスするためには、PostgreSQL上に外部テーブル(Foreign Table)を作成する必要があります。この外部テーブルの作成はIMPORT FOREIGN SCHEMAコマンドを使います。

あらかじめ定義した外部サーバremote_servertable_aをスキーマ情報を取得して、外部テーブルとして定義する例は次のとおりです。

IMPORT FOREIGN SCHEMA table_a FROM SERVER remote_server INTO table_a;

🍄 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)