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) 실행 | ⚠ 가능하나 제한적 | ✅ 가능 |
✅ 결론
- PostgreSQL 외부 테이블(FDW)
- PostgreSQL에서 외부 데이터 소스를 로컬 테이블처럼 사용할 수 있음.
- 다양한 데이터베이스 및 파일 시스템과 연동 가능.
- 설정이 다소 복잡하지만, 한 번 설정하면 투명한 데이터 조회가 가능.
- Oracle DB Link
- 오직 Oracle DB 간 연결을 지원.
- 설정이 간단하며 SELECT, INSERT, UPDATE, DELETE 모두 사용 가능.
- 원격 테이블을 테이블@DBLINK 형식으로 직접 조회.
👉 PostgreSQL 외부 테이블은 범용적인 기능을 제공하지만, 설정이 더 복잡하고 Oracle DB Link는 오라클 전용이지만 설정이 간단하고 DML이 자유로움.
MSA 환경에서 여러 DBMS와 연결하려면 PostgreSQL의 FDW가 더 적합할 수도 있습니다. 🚀