확장 기능
카카오클라우드 PostgreSQL에서 사용할 수 있는 확장 기능은 데이터베이스에서 서버 관리 및 모니터링을 위해 제공되는 확장 기능입니다.
카카오클라우드 PostgreSQL에는 기본적으로 template1 데이터베이스에 제공하는 모든 확장 기능이 등록되어 있습니다.
신규 데이터베이스 생성 시 모든 확장 기능을 사용하실 수 있으며 특정 확장 기능을 사용하기 위한 데이터베이스 재시작 등이 필요 없습니다.
확장 관련 주요 내용은 PostgreSQL 사이트의 추가 확장 문서 내용을 참고하시길 바랍니다.
지원하는 Extension 목록
이름 | 설명 |
---|---|
adminpack | PostgreSQL 데이터베이스에서 서버 관리 및 모니터링을 위해 제공되는 확장 기능입니다. 이 확장 기능은 PostgreSQL에서 기본적으로 제공하는 것보다 더 많은 관리 기능을 제공합니다. 이를 통해 데이터베이스 관리자는 시스템 상태를 모니터링하고, 성능을 분석하며, 문제를 디버그할 수 있습니다. 1. pg_file_settings: 서버 설정 파일 내용을 반환합니다. 2. pg_logdir_ls: 로그 디렉터리의 내용을 나열합니다. 3. pg_read_file: 서버 파일 시스템에서 파일을 읽습니다. 4. pg_stat_file: 서버 파일 시스템에서 파일의 상태를 반환합니다. 5. pg_file_write: 서버 파일 시스템에 파일을 씁니다. 6. pg_file_rename: 서버 파일 시스템에서 파일의 이름을 변경합니다. 7. pg_file_unlink: 서버 파일 시스템에서 파일을 삭제합니다. |
amcheck | 데이터베이스의 인덱스를 검사하고 일관성을 확인하는 데 사용됩니다. 특히, 이 확장 기능은 B-Tree 인덱스의 일관성을 확인하고 인덱스가 손상되지 않았는지 검사하는 데 유용합니다. 데이터 무결성을 유지하고 성능 문제를 사전에 식별하는 데 중요한 역할을 합니다. |
autoinc | PostgreSQL에서 자동 증가 열(auto-increment columns)을 지원하기 위한 확장 기능입니다. 이 확장 기능은 테이블에 자동 증가 열을 쉽게 추가할 수 있도록 도와주며, 새로운 행이 삽입될 때마다 자동으로 증가하는 고유한 값을 생성합니다. |
bloom | PostgreSQL에서 제공하는 확장 기능으로, 블룸 필터(Bloom filter)를 사용하여 대량의 데이터에 대한 검색을 빠르게 수행할 수 있도록 도와줍니다. 블룸 필터는 공간 효율적인 확률적 데이터 구조로, 주로 대용량 데이터베이스에서 특정 값이 존재하는지 여부를 빠르게 확인하는 데 사용됩니다. bloom 확장 기능은 PostgreSQL에서 대용량 데이터에 대한 빠른 검색을 위해 블룸 필터 인덱스를 사용하는 기능을 제공합니다. 이를 통해 공간 효율성을 유지하면서도 검색 속도를 향상시킬 수 있습니다. 블룸 필터의 특성상 오탐이 발생할 수 있으므로, 이를 고려하여 적절한 사용 사례에 적용하는 것이 중요합니다. 다음과 같은 주요 기능을 제공합니다. 1. 블룸 필터 인덱스 생성: 테이블의 여러 열에 대해 블룸 필터 인덱스를 생성할 수 있습니다. 2. 빠른 검색: 블룸 필터를 사용하여 특정 값이 테이블에 존재하는지 여부를 빠르게 확인할 수 있습니다. 3. 공간 효율성: 블룸 필터는 공간을 절약하면서도 빠른 검색을 제공하므로 대용량 데이터베이스에서 유용합니다. |
intarray | PostgreSQL에서 정수 배열(integer array)을 효과적으로 다루기 위한 다양한 함수와 연산자를 제공하는 확장 기능입니다. 이를 통해 정수 배열에 대한 고급 조작과 효율적인 검색을 수행할 수 있습니다. 이 확장 기능은 특히 대량의 정수 데이터를 배열로 저장하고 처리하는 응용 프로그램에서 유용합니다. |
btree_gin | btree_gin 확장 기능은 PostgreSQL에서 제공하는 확장 기능으로, B-Tree 인덱스를 GIN(Generalized Inverted Index) 인덱스와 결합하여 다양한 데이터 타입에 대해 효율적인 인덱싱을 가능하게 합니다. 이 확장 기능은 특히 배열, JSONB, Hstore와 같은 복잡한 데이터 타입을 인덱싱할 때 유용합니다. |
btree_gist | PostgreSQL에서 GIN(Generalized Inverted Index) 인덱스를 사용하여 B-Tree 인덱스가 제공하는 연산자를 지원할 수 있도록 해주는 확장 기능은 이를 통해 GIN 인덱스의 공간 효율성을 활용하면서도 B-Tree 인덱스가 제공하는 정렬과 비교 기능을 사용할 수 있습니다. 특히 배열, 범위 타입 및 기타 복합 데이터 타입에 유용합니다. |
citext | PostgreSQL에서 제공하는 확장 기능으로, 대소문자를 구분하지 않는 텍스트 타입(case-insensitive text type)을 지원합니다. 이 확장 기능은 텍스트 데이터의 대소문자를 구분하지 않는 검색이나 비교를 쉽게 수행할 수 있도록 도와줍니다. 사용자의 이메일 주소나 사용자 이름과 같은 텍스트 데이터를 저장할 때 유용합니다. |
cube | cube 확장 기능은 PostgreSQL에서 다차원 데이터를 다루기 위한 확장 기능으로, 다차원 공간에서의 점, 벡터 및 기타 기하학적 객체를 효율적으로 저장하고 검색할 수 있도록 지원합니다. 이 확장 기능은 특히 데이터 분석, 기하학적 계산 및 공간 데이터 처리를 포함한 다양한 응용 프로그램에서 유용합니다. |
dblink | PostgreSQL에서 다른 데이터베이스에 연결하고 그 데이터베이스의 객체를 쿼리할 수 있게 해주는 확장 기능입니다. 이를 통해 한 데이터베이스 서버에서 다른 데이터베이스 서버의 데이터를 액세스하고 조작할 수 있습니다. 이는 특히 분산 데이터베이스 환경에서 유용합니다. |
dict_xsyn | 이 확장 기능은 PostgreSQL에서 텍스트 검색을 향상시키기 위해 동의어를 지원하는 유용한 도구입니다. 이를 통해 다양한 표현을 사용한 검색 쿼리에 대해 일관된 결과를 제공하고, 텍스트 데이터의 검색 정확도를 높일 수 있습니다. 동의어 파일을 적절히 관리하고 텍스트 검색 설정을 최적화하여, 더 나은 검색 경험을 제공할 수 있습니다. |
dict_int | PostgreSQL에서 제공하는 확장 기능 중 하나로, “정수 사전” (integer dictionary) 타입을 지원합니다. 이 확장 기능은 텍스트 검색을 위해 사용되는 인덱스에 정수 기반 사전을 사용할 수 있도록 합니다. PostgreSQL의 텍스트 검색 기능에서 사전(dictionary)은 텍스트 토큰을 처리하고 정규화하는 역할을 합니다. |
earthdistance | PostgreSQL에서 지리적 위치 간의 거리 계산을 지원하는 기능을 제공합니다. 이 확장 기능은 주로 지리적 좌표(위도와 경도)를 사용하여 두 지점 사이의 거리를 계산하는 데 사용됩니다. 지리 정보 시스템(GIS), 지도 애플리케이션, 위치 기반 서비스 등에서 유용합니다. |
file_fdw | PostgreSQL에서 외부 파일을 외부 테이블로 다룰 수 있도록 하는 외부 데이터 래퍼(FDW, Foreign Data Wrapper)입니다. 이를 통해 CSV와 같은 파일을 마치 데이터베이스 내의 테이블처럼 쿼리할 수 있습니다. 데이터 통합 작업을 간소화하고, 외부 파일에서 데이터를 쉽게 가져오고 처리할 수 있게 합니다. |
fuzzystrmatch | 문자열 비교와 매칭을 위한 다양한 알고리즘을 제공합니다. 이 확장 기능은 텍스트 데이터에서 철자 오류나 유사한 단어를 찾는 데 유용하며, 데이터 정리 및 검색 기능을 향상시킬 수 있습니다. |
hstore | hstore 확장 기능은 PostgreSQL에서 키-값 쌍 데이터를 유연하게 저장하고 관리할 수 있는 강력한 도구입니다. 다양한 응용 프로그램에서 유연한 데이터 구조를 지원하며, 속성 저장, 로그 데이터 관리 등 여러 시나리오에서 유용하게 사용할 수 있습니다. 그러나 스키마가 없기 때문에 데이터 일관성을 유지하기 어렵고, 매우 큰 데이터를 다루는 데는 주의가 필요합니다. JSONB와 같은 다른 데이터 타입과 함께 사용할 경우 더 큰 유연성과 성능을 얻을 수 있습니다. |
hstore_plperl | PostgreSQL에서 hstore 데이터 타입을 사용하여 Perl 언어로 작성된 함수에서 더 쉽게 조작할 수 있도록 지원하는 확장 기능은 hstore는 키-값 쌍을 저장할 수 있는 데이터 타입이며, plperl은 PostgreSQL의 내장 프로시저 언어 중 하나로 Perl을 사용합니다. hstore_plperl 확장 기능은 이 두 기능을 결합하여 Perl 함수 내에서 hstore 데이터를 쉽게 다룰 수 있게 합니다. |
hstore_plperlu | PostgreSQL에서 제공하는 확장 기능 중 하나로, hstore 데이터 타입과 Perl 언어를 결합하여 보다 유연한 데이터 처리 및 조작을 가능하게 합니다. plperlu는 PostgreSQL의 신뢰할 수 없는 Perl 언어 버전입니다. plperl과는 달리, plperlu는 더 많은 기능을 제공하지만, 보안 문제가 있을 수 있기 때문에 신뢰할 수 없는 코드를 실행할 때는 주의해야 합니다. |
hypopg | PostgreSQL에서 가상 인덱스를 지원하는 확장 기능으로 실제로 인덱스를 생성하지 않고도 인덱스가 쿼리 성능에 미치는 영향을 평가할 수 있습니다. 이를 통해 인덱스 생성이 성능에 미칠 영향을 미리 예측하고 최적의 인덱스를 설계하는 데 도움을 줄 수 있습니다. |
insert_username | PostgreSQL에서 테이블에 레코드가 삽입되거나 업데이트될 때 현재 사용자의 이름을 자동으로 기록하는 기능을 제공합니다. 이를 통해 데이터 감사와 추적을 용이하게 하며, 보안 및 협업 환경에서 유용하게 사용할 수 있습니다. 확장 설치와 트리거 설정을 통해 쉽게 사용할 수 있으며, 데이터 변경 내역을 자동으로 관리할 수 있습니다. |
intagg | PostgreSQL에서 정수 배열 집계 기능을 제공하는 확장 기능입니다. 이 확장 기능은 여러 개의 정수값을 하나의 배열로 집계하는 기능을 제공하여 데이터 집계 및 분석 작업을 보다 쉽게 수행할 수 있게 합니다. 이는 특히 다수의 정수 데이터를 하나의 칼럼에 저장하거나, 집계 결과를 배열 형태로 반환해야 하는 경우에 유용합니다. |
intarray | PostgreSQL에서 정수 배열(integer array)을 효과적으로 다루기 위한 다양한 함수와 연산자를 제공하는 확장 기능입니다. 이를 통해 정수 배열에 대한 고급 조작과 효율적인 검색을 수행할 수 있습니다. 이 확장 기능은 특히 대량의 정수 데이터를 배열로 저장하고 처리하는 응용 프로그램에서 유용합니다. |
isn | PostgreSQL에서 ISBN(International Standard Book Number), ISMN(International Standard Music Number), ISSN(International Standard Serial Number) 등의 국제 표준 번호를 처리하기 위한 기능을 제공하는 확장 기능입니다. 표준 번호의 저장, 검증, 변환 및 형식화를 간편하게 할 수 있도록 지원합니다. |
jsonb_plperl | PostgreSQL에서 JSONB 데이터 타입을 Perl 언어로 처리할 수 있도록 지원하는 확장 기능입니다. 이를 통해 PostgreSQL 내에서 JSONB 데이터를 Perl 함수에서 쉽게 다루고 조작할 수 있게 합니다. plperl은 PostgreSQL의 내장 프로시저 언어 중 하나로 Perl을 사용하며, jsonb_plperl 확장 기능은 JSONB 데이터 타입과 Perl 언어의 조합을 가능하게 합니다. |
jsonb_plperlu | PostgreSQL에서 JSONB 데이터 타입을 Perl 언어로 처리할 수 있도록 지원하는 확장 기능입니다. 이 확장 기능은 plperlu (신뢰할 수 없는 Perl 언어)와 결합하여 JSONB 데이터를 조작할 수 있는 기능을 제공합니다. 이를 통해 PostgreSQL 내에서 JSONB 데이터를 Perl 함수에서 쉽게 다루고 조작할 수 있습니다. plperlu는 외부 모듈을 포함한 더 많은 Perl 기능을 사용할 수 있지만, 보안 문제에 주의해야 합니다. |
jsonb_plpython3u | PostgreSQL에서 JSONB 데이터 타입을 Python 3 언어로 처리할 수 있도록 지원하는 확장 기능입니다. 이를 통해 PostgreSQL 내에서 JSONB 데이터를 Python 함수에서 쉽게 다루고 조작할 수 있게 합니다. plpython3u는 신뢰할 수 없는 사용자 정의 함수로, 더 많은 기능을 제공하지만 보안 문제에 주의해야 합니다. |
lo | PostgreSQL에서 대용량 객체(Large Objects, LOB)를 처리하기 위한 기능을 제공합니다. 대용량 객체는 주로 매우 큰 데이터, 예를 들어 바이너리 파일, 이미지, 비디오 파일 등을 저장하는 데 사용됩니다. 이 확장 기능은 이러한 데이터를 효율적으로 저장하고 관리할 수 있는 기능을 제공합니다. |
ltree | PostgreSQL에서 계층적 데이터(hierarchical data)를 관리하고 쿼리하기 위한 기능을 제공하는 확장 기능입니다. 계층적 데이터는 트리 구조를 가지는 데이터로, 파일 시스템의 디렉터리 구조, 조직의 계층 구조, 제품 분류 체계 등에서 자주 사용됩니다. ltree 확장 기능은 이러한 계층적 데이터를 효율적으로 저장하고 검색할 수 있는 강력한 도구를 제공합니다. |
ltree_plpython3u | PostgreSQL에서 계층적 데이터(hierarchical data)를 관리하는 ltree 데이터 타입과 Python 3 언어를 결합하여 사용하기 위한 확장 기능입니다. 이를 통해 Python 3 함수 내에서 ltree 데이터 타입을 쉽게 다루고 조작할 수 있습니다. plpython3u는 신뢰할 수 없는 사용자 정의 함수로, 더 많은 기능을 제공하지만 보안 문제에 주의해야 합니다. |
moddatetime | PostgreSQL에서 테이블의 행이 삽입되거나 업데이트될 때 자동으로 타임스탬프를 기록하는 기능을 제공합니다. 이를 통해 데이터 변경 내역을 추적하고 감사 로그를 유지하는 데 유용합니다. |
old_snapshot | PostgreSQL에서 오래된 스냅샷의 사용을 감지하고 관리하기 위한 기능을 제공합니다. 이는 특히 장기 실행 쿼리와 관련된 문제를 해결하는 데 유용합니다. 오래된 스냅샷이 오랫동안 유지되면 데이터베이스의 성능 저하와 잠금 충돌이 발생할 수 있기 때문에 스냅샷 관리에 유용한 확장 기능입니다. |
orafce | PostgreSQL에서 Oracle 호환 기능을 제공하는 확장 기능으로, Oracle에서 PostgreSQL로의 마이그레이션을 용이하게 하고 두 데이터베이스 시스템 간의 호환성을 향상시키기 위해 설계되었습니다. 이 확장 기능은 Oracle의 함수, 패키지, 데이터 타입 등을 PostgreSQL에서 사용할 수 있게 합니다. |
pageinspect | PostgreSQL에서 데이터베이스 페이지의 내부 구조를 검사할 수 있는 기능을 제공하는 확장 기능입니다. 이 확장 기능은 데이터베이스 관리자가 테이블, 인덱스, 페이지 레이아웃 등을 상세히 분석하고 문제를 진단하는 데 유용합니다. 특히 성능 문제를 해결하거나 데이터 손상의 원인을 파악하는 데 도움이 됩니다. |
pg_buffercache | PostgreSQL에서 공유 버퍼 캐시(shared buffer cache)의 상태를 모니터링할 수 있는 기능을 제공하는 확장 기능입니다. 이를 통해 데이터베이스 성능을 분석하고 최적화하는 데 도움을 줄 수 있습니다. 공유 버퍼 캐시는 PostgreSQL의 성능에 중요한 역할을 하므로 이를 모니터링하고 이해하는 것은 성능 튜닝에 매우 유용합니다. |
pg_freespacemap | PostgreSQL에서 프리 스페이스 맵(free space map)의 상태를 모니터링할 수 있는 기능을 제공하는 확장 기능입니다. 프리 스페이스 맵은 테이블이나 인덱스의 페이지들 중에서 얼마나 많은 빈 공간이 있는지를 추적하는 데이터 구조입니다. 데이터베이스의 공간 사용 효율을 분석하고 최적화할 수 있습니다. |
pgaudit | PostgreSQL에서 감사(Audit) 로깅을 강화하는 기능을 제공하는 확장 기능은 이를 통해 데이터베이스 내의 활동을 기록하고 모니터링하여 보안 및 규제 준수 요건을 충족할 수 있습니다. pgaudit는 데이터베이스에서 실행되는 SQL 문과 관련된 정보를 상세하게 로깅하여 보안 감사, 문제 해결, 규제 준수 등의 목적으로 사용할 수 있습니다. |
pgcrypto | PostgreSQL에서 암호화 및 해시 기능을 제공하는 확장 기능은 이를 통해 데이터베이스 내에서 데이터를 안전하게 저장하고 처리할 수 있습니다. pgcrypto는 다양한 암호화 알고리즘과 해시 함수, 그리고 암호화 관련 유틸리티를 포함하고 있어 데이터 보안과 무결성을 유지하는 데 유용합니다. |
pgrowlocks | PostgreSQL에서 특정 테이블의 행 잠금 정보를 조회할 수 있는 기능을 제공하는 확장 기능입니다. 이를 통해 현재 어떤 행이 잠겨 있는지, 어떤 트랜잭션에 의해 잠겨 있는지 등의 정보를 확인할 수 있습니다. 이는 데이터베이스의 잠금 관련 문제를 진단하고 해결하는 데 유용합니다. |
pgstattuple | PostgreSQL에서 테이블 및 인덱스의 공간 사용 상태를 분석하는 기능을 제공합니다. 이 확장 기능은 테이블과 인덱스의 전체 크기, 사용된 공간, 빈 공간, 죽은 튜플(dead tuples) 등을 포함한 상세한 통계 정보를 제공합니다. 이를 통해 데이터베이스 관리자(DBA)는 테이블 및 인덱스의 공간 사용 효율성을 최적화하고 성능 문제를 해결할 수 있습니다. |
pg_stat_kcache | PostgreSQL에서 쿼리 실행의 커널 레벨 성능 통계를 수집하는 기능을 제공합니다. 이 확장을 사용하면 각 쿼리에서 사용된 CPU 시간, 읽기/쓰기 시스템 호출 횟수, 블록 I/O 등의 상세한 성능 지표를 확인할 수 있습니다. 이러한 정보는 성능 튜닝 및 모니터링에 매우 유용합니다. |
pg_visibility | PostgreSQL에서 테이블 페이지와 행의 가시성(visibility) 정보를 확인할 수 있게 해주는 확장 기능입니다. 이를 통해 특정 테이블의 페이지와 행이 얼마나 사용 중인지, 빈 공간이 얼마나 있는지, 죽은 튜플이 얼마나 있는지 등을 상세하게 파악할 수 있습니다. 이 정보는 데이터베이스 성능 튜닝 및 문제 해결에 매우 유용합니다. |
plperl | PostgreSQL에서 Perl 프로그래밍 언어를 사용하여 사용자 정의 함수를 작성할 수 있게 해주는 확장 기능입니다. 이를 통해 데이터베이스 내에서 복잡한 로직을 구현하고 데이터 조작 작업을 수행할 수 있습니다. Perl은 텍스트 처리에 강력한 기능을 제공하므로, 문자열 처리나 정규 표현식 기반의 데이터 변환 작업에 매우 유용합니다. |
plpgsql | PostgreSQL의 기본 내장 프로시저 언어로, SQL과 절차적 언어의 요소를 결합하여 강력한 데이터베이스 프로그램을 작성할 수 있게 합니다. 이를 통해 복잡한 트랜잭션, 조건부 로직, 반복문 등을 데이터베이스 내부에서 직접 실행할 수 있습니다. |
plprofiler | PostgreSQL에서 PL/pgSQL 함수와 프로시저의 성능을 프로파일링하는 기능을 제공하는 확장 기능입니다. 이를 통해 함수 호출의 실행 시간을 측정하고, 성능 병목 현상을 식별하며, 코드 최적화를 돕는 도구로 사용됩니다. PL/pgSQL 코드를 작성할 때 성능 문제를 진단하고 해결하는 데 매우 유용합니다. |
plpython3u | plpython3u는 PostgreSQL에서 제공하는 절차적 언어(PL, Procedural Language) 중 하나로 Python 3을 사용하여 PostgreSQL 데이터베이스 내에서 사용자 정의 함수(Stored Function)를 작성할 수 있게 해주는 확장입니다. |
plpythonu | PostgreSQL에서 Python 언어를 사용하여 사용자 정의 함수를 작성할 수 있게 해주는 확장 기능입니다. 여기서 u는 “untrusted”를 의미하며 이는 해당 확장이 신뢰할 수 없는 코드를 실행할 수 있음을 나타냅니다. plpythonu는 Python 2를 기반으로 하며, Python의 다양한 기능을 데이터베이스 내에서 활용할 수 있게 합니다. 그러나 Python 2는 2020년 1월 1일부로 공식 지원이 종료되었으므로 보안상의 이슈를 고려해 plpython3u를 사용하는 것을 권장합니다. |
postgres_fdw | PostgreSQL에서 외부 PostgreSQL 데이터베이스에 접근하여 쿼리할 수 있도록 하는 확장 기능입니다. 이를 통해 로컬 PostgreSQL 인스턴스에서 외부 PostgreSQL 인스턴스의 테이블을 마치 로컬 테이블처럼 조회하고 조작할 수 있습니다. 이 기능은 데이터 통합, 분산 데이터베이스 시스템 구축, 데이터 마이그레이션 등에 유용합니다. 프로시저 사용을 위해 Extension 추가 설명을 확인해 주세요. |
refint | PostgreSQL에서 참조 무결성(Referential Integrity)을 관리하기 위한 트리거 기반 메커니즘을 제공하는 확장 기능입니다. 이 확장 기능은 외래 키 제약 조건을 구현하고 관리하는 데 사용되며, 외래 키 관계가 있는 테이블 간의 데이터 일관성을 유지하는 데 도움을 줍니다. |
seg | PostgreSQL에서 선분(segment)을 나타내기 위한 데이터 타입을 제공하는 확장 기능입니다. 이를 통해 선분을 표현하고, 선분 간의 관계를 정의하며, 관련된 여러 연산을 수행할 수 있습니다. 이 확장 기능은 특히 기하학적 데이터 처리와 관련된 응용 프로그램에서 유용합니다. |
sslinfo | PostgreSQL에서 SSL(Secure Sockets Layer) 연결과 관련된 정보를 제공하는 확장 기능입니다. 이를 통해 클라이언트와 서버 간의 SSL 연결 상태를 확인하고, SSL 인증서와 연결 설정에 대한 세부 정보를 조회할 수 있습니다. 이 확장 기능은 데이터베이스의 보안 연결 상태를 모니터링하고 진단하는 데 유용합니다. |
tablefunc | PostgreSQL에서 여러 유용한 테이블 처리 기능을 제공하는 확장 기능입니다. 이 확장 기능은 크로스탭(crosstab) 쿼리, 연결된 데이터의 계층적 정렬, 그리고 다른 복잡한 데이터 변환을 포함한 다양한 기능을 제공합니다. tablefunc 확장 기능은 특히 데이터 분석 및 보고서 생성에 유용합니다. |
tcn | TCN(Triggered Change Notification) 확장 기능은 PostgreSQL에서 테이블의 변경 사항에 대한 알림을 제공하는 확장 기능입니다. 이를 통해 테이블의 행이 삽입, 업데이트 또는 삭제될 때 알림을 트리거로 받을 수 있습니다. 이 확장 기능은 데이터 변경을 실시간으로 모니터링하고 응답하는 애플리케이션에 유용합니다. |
tsm_system_rows | PostgreSQL에서 테이블 샘플링을 수행할 때 사용되는 테이블 샘플링 메서드(Table Sampling Method) 중 하나입니다. 이 확장 기능은 테이블의 전체 행 중에서 주어진 개수의 행을 무작위로 선택하여 반환하는 기능을 제공합니다. 이를 통해 대규모 테이블에서 무작위 샘플링을 수행하여 데이터 분석이나 테스트 작업을 효율적으로 수행할 수 있습니다. |
tsm_system_time | 확장 기능은 PostgreSQL에서 테이블 샘플링을 수행할 때 사용되는 또 다른 테이블 샘플링 메서드입니다. 이 확장 기능은 주어진 시간 동안 테이블의 행을 무작위로 선택하여 반환하는 기능을 제공합니다. 이를 통해 대규모 테이블에서 무작위 샘플링을 수행하여 데이터 분석이나 테스트 작업을 효율적으로 수행할 수 있습니다. |
unaccent | PostgreSQL에서 문자열의 악센트를 제거하는 기능을 제공하는 확장 기능입니다. 이를 통해 다양한 언어의 문자를 처리할 때 악센트를 제거하여 문자열 비교나 검색을 쉽게 할 수 있습니다. 예를 들어 악센트가 있는 문자를 단순화하여 검색 정확도를 높이는 데 유용합니다. |
uuid-ossp | PostgreSQL에서 UUID(Universally Unique Identifier)를 생성하는 기능을 제공하는 확장 기능입니다. UUID는 전역적으로 고유한 식별자를 생성하는 데 사용되며, 데이터베이스의 주 키 또는 기타 고유 식별자가 필요한 곳에서 유용합니다. uuid-ossp 확장 기능은 다양한 UUID 생성 함수를 제공하여 여러 버전의 UUID를 생성할 수 있게 합니다. |
pgvector | PostgreSQL에서 고차원 벡터 데이터를 효율적으로 저장하고 검색할 수 있는 기능을 제공하는 확장 기능입니다. 이 확장 기능은 특히 기계 학습, 이미지 검색, 자연어 처리 등에서 사용되는 벡터 데이터를 다루는 애플리케이션에서 유용합니다. 벡터 데이터를 효율적으로 인덱싱하고, 유사성 검색을 수행할 수 있게 합니다. |
pg_cron | 데이터베이스 내에서 유지-관리를 위한 cron 기반 스케줄러를 실행하기 위한 확장 기능입니다. Extension 추가 설명을 확인해 주세요. |
확장 기능 추가설명
이용 가능한 확장 기능 중 추가 설명이 필요한 확장 기능에 대해 소개합니다.
postgres_fdw
postgres_fdw는 PostgreSQL에서 제공하는 외부 데이터 래퍼(FDW, Foreign Data Wrapper)로 원격 PostgreSQL 데이터베이스의 테이블에 접근할 수 있게 해주는 확장 기능입니다. 원격 데이터베이스의 테이블을 로컬 데이터베이스에서 마치 로컬 테이블처럼 쿼리할 수 있고 원격 데이터베이스의 테이블을 참조하는 외부 테이블을 로컬에서 생성하여 사용할 수 있습니다.
카카오클라우드에서 제공하는 postgres_fdw 를 사용하기 위해서는 create_fdw_server 프로시저를 이용해야 하며 create_fdw_server 프로시저는 template1 에 생성되어 있기 때문에 새로운 데이터베이스 생성 시 기본으로 제공하고 있습니다.
postgres_fdw는 아래의 방식으로 프로시저를 호출하여 원격 서버를 생성할 수 있습니다.
프로시저를 수행 시 사용자 계정이 자동으로 매핑되어 서버 생성 이후 외부 테이블을 만들어서 사용할 수 있습니다.
사용 절차는 아래와 같습니다.
- 데이터베이스 생성이 가능한 관리자 또는 사용자 계정을 이용해서 데이터베이스를 생성합니다.
- 접근하고자 하는 데이터베이스에 대한 보안그룹의 outbound rule(포트 오픈)이 설정되어 있는지 확인합니다.
- 생성한 데이터베이스에서 create_fdw_server 프로시저를 이용해 fdw 수행을 위한 서버를 생성합니다.
- 외부 데이터베이스를 조회합니다.
[create_fdw_server 생성 및 사용자 정보 연결]
SELECT * FROM create_fdw_server(
'fdw_server', -- 서버 이름
'pg_endpoint', -- 외부 데이터베이스 엔드포인트
'foreign_database', -- 외부 데이터베이스 이름
5432, -- 외부 데이터베이스 접속 포트(숫자 형식)
'test_database', -- 외부 데이터베이스를 조회해서 가져올 사용자 데이터베이스
'admin', -- 사용자 계정 ID
'foreign_admin', -- 외부 데이터베이스 계정 ID
'foreign_pass' -- 외부 데이터베이스 계정 password
);
예시)
SELECT * FROM create_fdw_server(
'db_nameserver'
'db_name-pg-001.csnzphcqgi72.ap-northeast-2.rds.amazonaws.com',
'postgres',
5432,
'grey',
'admin',
'remote_user',
'remote_password',
);
[외부 데이터베이스 조회]
create_fdw_server를 통해 생성한 서버 이름, 쿼리 조회 예시)
SELECT srvname, srvtype, srvversion, srvoptions FROM pg_foreign_server;
원격 table 맵핑, 예시)
CREATE FOREIGN TABLE remote_table (
id SERIAL,
name TEXT,
value NUMERIC
)
SERVER fdw_server_example --> fdw server name
OPTIONS (schema_name 'public', table_name 'remote_table_name');
pg_cron
pg_cron은 데이터베이스의 유지보수 및 운영효율성을 위해 cron 기반의 작업 스케줄링을 실행할 수 있게하는 확장 기능입니다. 카카오클라우드에서는 기본 데이터베이스인 postgres에 pg_cron이 생성되어있으며, pg_cron의 시간대는 UTC±00:00를 기준으로 합니다.
사용 예시와 사용 절차는 아래와 같습니다.
- pg_cron이 설정된 postgres DB에 접근합니다.
- cron 형태의 스케줄을 등록합니다.
- 등록된 시간에 cron이 수행되었는지 조회합니다.
- 스케줄을 삭제합니다.
postgres=# \c postgres {관리자/사용자ID}
You are now connected to database "postgres" as user "{관리자/사용자ID}".
[스케쥴 등록 : 매일 새벽4시(UTC)에 특정 데이터베이스에 vaccume 함수가 수행되는 'weekly-vacuum'이라는 이름의 스케줄 등록]
postgres=> SELECT cron.schedule_in_database('weekly-vacuum', '* 4 * * *', 'VACUUM', 'test_database');
[스케쥴 조회]
postgres=> select * from cron.job ;
jobid | schedule | command | nodename | nodeport | database | username | active | jobname
-------+-------------+---------+-----------+----------+----------+----------+--------+------------------
1 | 5 20 * * * | VACUUM | localhost | 5432 | db_name | admin | t | weekly-vacuum
[스케쥴 수행조회]
postgres=> select * from cron.job_run_details ;
jobid | runid | job_pid | database | username | command | status | return_message | start_time | end_time
-------+-------+---------+----------+----------+---------+-----------+----------------+-------------------------------+---------------------
----------
8 | 1 | 379928 | db_name | postgres | VACUUM | succeeded | VACUUM | 2024-11-11 11:01:00.066025+00 | 2024-11-11 11:01:05.
821539+00
(1 rows)
[스케쥴 삭제]
postgres=> select cron.unschedule('weekly-vacuum') ;
unschedule
------------
t
(1 row)