PostgreSQL
[PostgreSQL] postgres_fdw 설치 & 가이드
리거니
2023. 4. 12. 11:24
postgres_fdw
Oracle DB-Link 처럼 물리적으로 떨어져 있는 데이터베이스를 사용하기 위한 Extension
Postgresql은 DB Link 보안 취약점 타파를 위해 Oracle DB Link와 다르게 Link를 사용할 연동 테이블 별로 각각 Link 생성
전체 데이터베이스에 링크 생성 불가
extension 설치
create extension postgres_fdw;
extension 조회
experdb=# \dx+ postgres_fdw
Objects in extension "postgres_fdw"
-[ RECORD 1 ]------+--------------------------------------------
Object description | foreign-data wrapper postgres_fdw
-[ RECORD 2 ]------+--------------------------------------------
Object description | function postgres_fdw_disconnect(text)
-[ RECORD 3 ]------+--------------------------------------------
Object description | function postgres_fdw_disconnect_all()
-[ RECORD 4 ]------+--------------------------------------------
Object description | function postgres_fdw_get_connections()
-[ RECORD 5 ]------+--------------------------------------------
Object description | function postgres_fdw_handler()
-[ RECORD 6 ]------+--------------------------------------------
Object description | function postgres_fdw_validator(text[],oid)
postgres_fdw 사용 방법
※ superuser 권한이 있는 user 만 가능
foreign server 생성
experdb=# create server [Server Name] foreign data wrapper postgres_fdw options
( host '', port '', dbname '' );
( Target DB (연결 할 원격지))
Source DB 의 현 User 와 Target DB 간 mapping
experdb=# create user mapping for [Schema Name] server [Server Name] options ( user '', password '' );
( Target DB 의 계정 정보 (연결 할 원격지))
CREATE USER MAPPING
Source DB 에서 원격지로 연결할 User 에 대해 권한 부여
experdb=# grant usage on foreign server foreign_server TO [user] ; (접근 권한 부여)
GRANT
연결할 원격지에 있는 foregin table 생성 (Target DB의 Table 과 동일하게)
experdb=# create foreign table [Target DB의 table NAME] ( idx int, test_string text, random_string text ) server [Server Name];
( Target DB 의 Table Column )
CREATE FOREIGN TABLE
원격지 table 접속
experdb=# select * from [Target DB의 table NAME] ;
※ postgres 15v 부터 postgres_fdw 에서의 CASE WHEN 표현식이 가능하다 .
F.38. postgres_fdw
F.38. postgres_fdw F.38.1. FDW Options of postgres_fdw F.38.2. Functions F.38.3. Connection Management F.38.4. Transaction Management F.38.5. Remote Query Optimization F.38.6. Remote …
www.postgresql.org
fdw 조회 쿼리
experdb=# \deu
List of user mappings
-[ RECORD 1 ]-------------
Server | foreign_server
User name | experdba
experdb=# \des
List of foreign servers
-[ RECORD 1 ]--------+---------------
Name | foreign_server
Owner | experdba
Foreign-data wrapper | postgres_fdw
experdb=# \det
List of foreign tables
-[ RECORD 1 ]----------
Schema | experdba
Table | vacuum_test
Server | foreign_server
다음 주제는 이와 유사하게 원격지에 접속하여 연결이 가능한 db_link 를 통해서 뵙겠습니다 !!