본문 바로가기
Study_DB

Postgresql FDW와 Oralce DB Link

by 타블로 2025. 3. 18.

PostgreSQL 외부 테이블(Foreign Table) vs. Oracle DB 링크(DB Link) 비교

PostgreSQL의 **외부 테이블(Foreign Table)**과 Oracle의 **DB 링크(DB Link)**는 둘 다 외부 데이터베이스와 연동하는 기능이지만, 방식과 사용 방법에서 차이가 있습니다.


🔹 공통점

공통점 설명

🔗 외부 데이터 접근 둘 다 외부 데이터베이스에 연결하여 데이터를 조회 가능
🔍 SELECT 지원 외부 데이터에 대한 SELECT 실행 가능
🔄 데이터 동기화 없음 두 기능 모두 단순 조회용이며, 내부 DB에 데이터를 자동으로 동기화하지 않음
🚀 성능 영향 네트워크와 외부 DB 상태에 따라 성능이 달라짐

🔸 차이점

항목 PostgreSQL 외부 테이블 Oracle DB Link

🔌 구현 방식 FDW (Foreign Data Wrapper) 사용 DB LINK 객체 생성
🎯 연결 대상 PostgreSQL, MySQL, Oracle, 파일 등 다양한 소스 오직 Oracle DB
🔄 DML 지원 여부 일부 FDW는 INSERT/UPDATE/DELETE 가능 (postgres_fdw) 기본적으로 INSERT/UPDATE/DELETE 가능
🔍 사용 방식 CREATE FOREIGN TABLE로 외부 테이블을 직접 생성 DB LINK를 이용하여 원격 쿼리 실행
📦 스키마 통합 외부 테이블을 로컬 테이블처럼 사용 원격 테이블을 직접 사용 (테이블명@DBLINK)
🔑 인증 방식 USER MAPPING을 통한 인증 CONNECT TO username IDENTIFIED BY password 사용
설정 필요 여부 CREATE SERVER, CREATE FOREIGN TABLE 등 설정 필요 CREATE DATABASE LINK 한 줄로 설정 가능

🔹 사용 예시 비교

PostgreSQL (외부 테이블)

PostgreSQL에서 외부 PostgreSQL 서버 연결 (postgres_fdw 사용)

-- 1. FDW 확장 설치
CREATE EXTENSION postgres_fdw;

-- 2. 외부 서버 등록
CREATE SERVER remote_pg_server
    FOREIGN DATA WRAPPER postgres_fdw
    OPTIONS (host '192.168.1.100', dbname 'remote_db', port '5432');

-- 3. 유저 매핑
CREATE USER MAPPING FOR current_user
    SERVER remote_pg_server
    OPTIONS (user 'remote_user', password 'password');

-- 4. 외부 테이블 생성
CREATE FOREIGN TABLE remote_table (
    id INT,
    name TEXT
) SERVER remote_pg_server
OPTIONS (schema_name 'public', table_name 'original_table');

-- 5. 외부 테이블 조회
SELECT * FROM remote_table;

Oracle (DB Link)

오라클에서 DB 링크를 통한 원격 테이블 조회

-- 1. DB 링크 생성
CREATE DATABASE LINK remote_db_link
CONNECT TO remote_user IDENTIFIED BY 'password'
USING 'remote_db';

-- 2. 원격 테이블 조회
SELECT * FROM remote_table@remote_db_link;

🔸 어떤 경우에 어떤 기능을 사용할까?

사용 시나리오 PostgreSQL 외부 테이블 Oracle DB Link

🔄 PostgreSQL → PostgreSQL 연결 ✅ 가능 (postgres_fdw) ❌ 불가능
🔗 PostgreSQL → MySQL, Oracle 연결 ✅ 가능 (mysql_fdw, oracle_fdw) ❌ 불가능
🔍 PostgreSQL → CSV 파일 조회 ✅ 가능 (file_fdw) ❌ 불가능
📌 Oracle → Oracle 연결 ❌ 불가능 ✅ 가능
🔄 DML(INSERT/UPDATE/DELETE) 실행 ⚠ 가능하나 제한적 ✅ 가능

결론

  1. PostgreSQL 외부 테이블(FDW)
    • PostgreSQL에서 외부 데이터 소스를 로컬 테이블처럼 사용할 수 있음.
    • 다양한 데이터베이스 및 파일 시스템과 연동 가능.
    • 설정이 다소 복잡하지만, 한 번 설정하면 투명한 데이터 조회가 가능.
  2. Oracle DB Link
    • 오직 Oracle DB 간 연결을 지원.
    • 설정이 간단하며 SELECT, INSERT, UPDATE, DELETE 모두 사용 가능.
    • 원격 테이블을 테이블@DBLINK 형식으로 직접 조회.

👉 PostgreSQL 외부 테이블은 범용적인 기능을 제공하지만, 설정이 더 복잡하고 Oracle DB Link는 오라클 전용이지만 설정이 간단하고 DML이 자유로움.
MSA 환경에서 여러 DBMS와 연결하려면 PostgreSQL의 FDW가 더 적합할 수도 있습니다. 🚀