Innovating today, leading tomorrow

OpenSQL_Technical Guide
[OpenSQL] postgres_fdw

[OpenSQL] postgres_fdw

postgres_fdw


postgres_fdw 란?

fdw는 Foreign Data Wrappers라고 하며 외부데이터 소스와 통신할 수 있는 PostgreSQL 데이터베이스 용 라이브러리로, 데이터 소스에 연결하고 데이터를 얻는 세부 정보를 추출하는데 사용합니다.
– PostgreSQL 공식 문서 –


설치 요구사항

  • 설치 요구사항
    • PostgreSQL contrib 에 포함되어 있는 Extension따로 설치 요구사항이 필요하지 않음

테스트

EXTENSION 사용 방법

CREATE EXTENSION [extension_name]

예시

CREATE EXTENSION postgres_fdw;
ERROR: permission denied to create extension “postgres_fdw”
HINT: Must be superuser to create this extension.

postgres_fdw를 사용하기 위해서는 extension 확장하는 User에게 superuser 권한이 있어야 함.

ostgres_fdw 사용 방법

외부데이터 서버 생성

/*
CREATE SERVER (1)
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host ‘(2)’, port ‘(3)’, dbname ‘(4)’);
*/
$ CREATE SERVER test FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host ‘192.168.0.10’, port ‘5432’, dbname ‘test’);
CREATE SERVER

psql 메타 명령 문법

  1. 서버명. 임의설정
  2. 원격 DB IP addr
  3. 원격 DB Port
  4. 원격 DB 데이터베이스 명

사용자 매핑 설정

/*
CREATE USER MAPPING FOR (1)
SERVER (2)
OPTIONS (user ‘(3)’, password ‘(4)’);
*/
$ CREATE USER MAPPING FOR test SERVER test OPTIONS (user ‘test’, password ‘1234’);
CREATE USER MAPPING

1. 현재 DB 사용자명
2. 임의 설정한 서버명
3. 원격 DB 사용자명
4. 원격 DB 사용자 비밀번호
1. 원격 테이블 생성

/*
CREATE FOREIGN TABLE (1) (
(5)
)
SERVER (2)
OPTIONS (schema_name ‘(3), table_name (4)’);
*/
$ CREATE USER MAPPING FOR test SERVER test OPTIONS (user ‘test’, password ‘1234’);
CREATE USER MAPPING

1. 사용할 테이블명
2. 임의 설정한 서버명
3. 원격 DB Schema
4. 원격 DB 테이블명
5. 원격 DB 테이블 column
1. 전체 테이블 사용

/*
IMPORT FOREIGN SCHEMA (1) FROM SERVER (2) INTO (3);
*/
$ CREATE SCHEMA ms;
CREATE SCHEMA
$ IMPORT FOREIGN SCHEMA public FROM SERVER test INTO ms;
IMPORT FOREIGN SCHEMA

1. 원격 DB Schema
2. 임의 설정한 서버명
3. 스키마명
1. 활용

/*
SELECT * FROM (1).(2);
*/
$ SELECT * FROM ms.members;

1. 스키마명
2. 원격
DB 테이블명

FDW Options 설정

/*
SELECT * FROM (1).(2);
*/
$ SELECT * FROM ms.members;

  1. 스키마명
  2. 원격 DB 테이블명

Server 설정 확인

$ des+
List of foreign servers
Name | Owner | Foreign-data wrapper | Access privileges | Type | Version | FDW options | Description
———-+——–+————————-+——————-+——+———+—————+————-
test | test | postgres_fdw | | | | (host ‘192.168.0.10’, port ‘5432’, dbname ‘test’, updatable ‘true’) |
(1 row)

foreign table 변경

$ alter foreign table test.members add column memo text;

foreign table 변경
foreign table 변경

  • 주의사항
    1. postgresfdw 사용을 위해 주체가 되는 디비 유저가 superuser 권한을 가지고 있어햐 함
      2. 외부 PostgreSQL 서버에 저장된 데이터에 액세스하는 데 사용되는 fdw맨 처음 프로시저만 생성하면 일반 테이블 사용과 다르지
      않음

지금까지 PostgreSQL의 ‘postgres_fdw’에 관해 알아보았습니다

‘pgbench’를 바로 이어서 확인해보세요!