개발/데이터베이스

PostgreSQL FDW (Foreign Data Wrapper) foreign table 생성 방법

피터JK 2025. 4. 16. 13:48
728x90

PostgreSQL의 foreign table은 외부 데이터 소스(예: 다른 데이터베이스, 파일 등)에 접근할 수 있도록 해주는 가상 테이블이다.

쉽게 말해:

foreign table = 다른 시스템의 테이블을 PostgreSQL 안에서 마치 내 테이블처럼 사용할 수 있게 해주는 기능


 핵심 개념 요약

용어 설명
FDW (Foreign Data Wrapper) 외부 데이터를 PostgreSQL에서 읽을 수 있게 해주는 인터페이스
Foreign Table FDW를 통해 접근할 수 있게 만든 가상 테이블
예시 다른 PostgreSQL DB, Oracle, MySQL, CSV 파일 등

728x90

✅ 예시: PostgreSQL → 다른 PostgreSQL 테이블 연결

1. FDW 확장 설치

CREATE EXTENSION postgres_fdw;

2. 외부 서버 등록

CREATE SERVER 외부서버이름
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host '192.168.0.10', dbname 'otherdb', port '5432');

3. 사용자 매핑

CREATE USER MAPPING FOR CURRENT_USER
SERVER 외부서버이름
OPTIONS (user 'otheruser', password 'otherpass');

4. Foreign Table 생성

CREATE FOREIGN TABLE foreign_table_name (
    id INT,
    name TEXT
)
SERVER 외부서버이름
OPTIONS (schema_name 'public', table_name 'original_table');

이제 foreign_table_name을 일반 테이블처럼 SELECT, JOIN할 수 있다. (view 테이블도 가능)


✅ 다른 FDW 예시

  • mysql_fdw: MySQL 연결
  • oracle_fdw: Oracle 연결
  • file_fdw: CSV 같은 파일
  • odbc_fdw: ODBC 지원하는 다양한 데이터소스
  • mongo_fdw: MongoDB
  • redis_fdw: Redis

✅ 장점

  • 다양한 데이터 소스를 PostgreSQL 하나로 통합 가능
  • ETL 없이도 바로 조인하거나 조회 가능
  • PostgreSQL 쿼리 안에서 외부 데이터를 사용할 수 있음

❗주의점

  • 성능은 네트워크/외부 DB 성능에 따라 좌우
  • 일부 FDW는 INSERT, UPDATE, DELETE가 안 되는 read-only
  • 외부 DB 변경이 생기면 foreign table 정의도 맞춰줘야 함

 

2025.04.16 - [개발/데이터베이스] - PostgreSQL(FDW) -> Oracle DB를 foreign table로 연결 사용

 

PostgreSQL(FDW) -> Oracle DB를 foreign table로 연결 사용

✅ 1. oracle_fdw 설치 방법 (Linux 기준)# 필요한 라이브러리 설치sudo apt install postgresql-server-dev-14 # PostgreSQL 버전에 맞춰 설치sudo apt install libclntsh-dev libaio-dev # Oracle Client SDK 필요# oracle_fdw 다운로드 및

piterjk.tistory.com

 

728x90