CREATE FOREIGN DATA WRAPPER — 새 외부 데이터 래퍼 정의하기
CREATE FOREIGN DATA WRAPPER — 새 외부 데이터 래퍼 정의하기
CREATE FOREIGN DATA WRAPPER 명령은 외부 데이터 래퍼(FDW)를 새로 정의하는 명령이에요. 외부 테이블과 외부 서버에 접근하는 방법을 정의하는 확장 지점으로, SQL/MED 표준의 일부예요.
출처: PostgreSQL 문서
본문
Synopsis
CREATE FOREIGN DATA WRAPPER name
[ HANDLER handler_function | NO HANDLER ]
[ VALIDATOR validator_function | NO VALIDATOR ]
[ OPTIONS ( option 'value' [, ... ] ) ]
Description
CREATE FOREIGN DATA WRAPPER는 새 외부 데이터 래퍼를 생성해요. 외부 데이터 래퍼를 정의한 사용자가 그 소유자가 돼요.
외부 데이터 래퍼 이름은 데이터베이스 안에서 고유해야 해요.
외부 데이터 래퍼를 생성할 수 있는 것은 슈퍼유저뿐이에요.
Parameters
name
생성할 외부 데이터 래퍼의 이름이에요.
HANDLER handler_function
*handler_function*은 외부 테이블에 대한 실행 함수를 가져오기 위해 호출되는, 이전에 등록된 함수의 이름이에요. 핸들러 함수는 인자를 받지 않아야 하며, 반환 타입은 fdw_handler여야 해요.
핸들러 함수 없이 외부 데이터 래퍼를 생성하는 것도 가능하지만, 그런 래퍼를 사용하는 외부 테이블은 선언만 할 수 있고 접근은 할 수 없어요.
VALIDATOR validator_function
*validator_function*은 외부 데이터 래퍼에 주어진 일반 옵션과, 그 외부 데이터 래퍼를 사용하는 외부 서버, 사용자 매핑, 외부 테이블의 옵션을 확인하기 위해 호출되는, 이전에 등록된 함수의 이름이에요. 검증자 함수나 NO VALIDATOR가 지정되지 않으면 옵션은 생성 시점에 확인되지 않아요. (외부 데이터 래퍼는 구현에 따라 런타임에 잘못된 옵션 사양을 무시하거나 거부할 수 있어요.) 검증자 함수는 두 개의 인자를 받아야 해요. 하나는 시스템 카탈로그에 저장된 옵션 배열을 담는 text[] 타입이고, 다른 하나는 옵션을 담는 시스템 카탈로그의 OID인 oid 타입이에요. 반환 타입은 무시되며, 함수는 ereport(ERROR) 함수를 사용해 잘못된 옵션을 보고해야 해요.
OPTIONS ( option 'value' [, ... ] )
이 절은 새 외부 데이터 래퍼에 대한 옵션을 지정해요. 허용되는 옵션 이름과 값은 각 외부 데이터 래퍼마다 다르며, 외부 데이터 래퍼의 검증자 함수를 사용해 검증돼요. 옵션 이름은 고유해야 해요.
Notes
PostgreSQL의 외부 데이터 기능은 아직 활발히 개발 중이에요. 쿼리 최적화는 원시적이에요(그리고 대부분 래퍼에 맡겨져 있어요). 따라서 향후 성능 개선의 여지가 상당히 많아요.
Examples
쓸모없는 외부 데이터 래퍼 dummy를 생성하기:
CREATE FOREIGN DATA WRAPPER dummy;
핸들러 함수 file_fdw_handler를 가진 외부 데이터 래퍼 file을 생성하기:
CREATE FOREIGN DATA WRAPPER file HANDLER file_fdw_handler;
몇 가지 옵션을 가진 외부 데이터 래퍼 mywrapper를 생성하기:
CREATE FOREIGN DATA WRAPPER mywrapper
OPTIONS (debug 'true');
Compatibility
CREATE FOREIGN DATA WRAPPER는 HANDLER와 VALIDATOR 절이 확장이라는 점, 그리고 표준 절인 LIBRARY와 LANGUAGE가 PostgreSQL에 구현되지 않았다는 점을 제외하면 ISO/IEC 9075-9 (SQL/MED)를 따르는 명령이에요.
다만 SQL/MED 기능 전체는 아직 완전히 규정을 따르지는 않아요.