logo
문의하기
서비스리소스블로그아카데미
logo
문의하기
logo

데이터와 IT 흐름을 읽는 시선,
뉴스레터 EXEM View 구독하기

Subscribe

주식회사 엑셈

서울시 강서구 마곡중앙8로5길 40

Tel 02-6203-6300 ㅣ Fax 02-6203-6301

ⓒ EXEM Co., Ltd. All Rights Reserved.
개인정보 처리방침서비스 이용약관
  • 서비스

    • Database
    • Application
    • AIOps
    • LLMOps
    • Big Data
    • All-in-One
    • Consulting
  • 신청

    • 세미나
    • 사옥 투어
  • 회사

    • 기업 소개
    • 채용 안내
    • IR
    • 오시는 길
  • 자료

    • 제품 브로슈어
    • 제품 살펴보기
    • 도서 실습자료
  • awsaws
  • microsoftmicrosoft
  • oracleoracle
  • naver-cloudnaver-cloud
PostgreSQL Extension - Introduction
PostgreSQL Extension - Introduction

PostgreSQL Extension - Introduction

시작하며

PostgreSQL은 Oracle, MySQL과 같은 다른 DBMS에 비해 기본적으로 제공하는 내장 함수나 부가적인 기능들이 부족한 편입니다. 이를 보완하기 위해 PostgreSQL에서는 Extension 기능을 제공하고 있습니다. PostgreSQL Extension은 PostgreSQL의 기능을 확장해주는 역할을 하며 이를 통하여 PostgreSQL Database에서 제공하지 않는 기능을 Plug-in 형태로 연결하여 손쉽게 사용할 수 있습니다.
 

Extension 구성 요소

Extension을 사용하기 위해서는 {PostgreSQL 엔진 경로}/share/extension 디렉토리에 다음과 같이 .control 파일과 하나 이상의 SQL 스크립트 파일(.sql)이 있어야 합니다.

{extension_name}.control 파일

  • Extension의 설명 및 버전 등의 정보 등 메타 정보를 포함
  • {extension_name}.control 파일은 {PostgreSQL 엔진 경로}/share/extension 위치
  • 해당 파일의 파일명으로 사용된 extension_name은 Extension 사용하기 위해 수행하는 명령(CREATE EXTENSION {extension_name})의 extension_name과 일치해야 함

{extension_name}--version.sql 파일

  • Extension의 Source Code 파일로 Extension에서 제공하는 기능 및 동작들에 대한 실제 구현을 하는 파일
  • {extension_name}--version.sql 파일은 .control 파일이 있는 위치에 존재하거나, .control 파일에 .sql 파일의 위치를 정의
  • .sql 파일은 최소 한 개 이상 존재해야 함
 
 

Extension 설치

PostgreSQL Database를 설치한 방법에 따라 Extension 설치도 다릅니다. PostgreSQL Database를 Source Code로 설치한 경우와 Package Manager를 통하여 설치한 경우에 대해서 각각 Extension 설치 과정이 어떻게 다른지 확인해 보겠습니다.
📢 본 문서에서는 PostgreSQL에서 제공하는 기본 Extension 중 pg_stat_statements 설치에 대해서만 설명합니다. 모든 기본 Extension은  pg_stat_statements 와 동일 방법으로 구현됩니다.
 

Source Code 설치

Source Code로 PostgreSQL Database를 설치한 경우, PostgreSQL에서 기본으로 제공하는 Extension은 Source File의 압축을 푼 경로에 contrib 하위 디렉토리에 존재합니다.
contrib 하위 디렉토리에서 설치하고자 하는 Extension을 확인 후 해당 디렉토리로 이동하여 Source File을 컴파일(make)한 후 설치(make install)할 수 있습니다.
Extension 종류에 따라서 Configuration 파일(postgresql.conf) 수정이 필요할 수 있으며, PostgreSQL Database 재기동이 필요할 수 있습니다.
📢  앞으로 테스트를 진행할 PostgreSQL에 대한 환경 정보는 다음과 같습니다.
  • PostgreSQL 엔진 경로 : /home/postgres/PostgreSQL_Engine
  • 기본 Extension 경로 : /home/postgres/PostgreSQL_Engine/contrib
  • PostgreSQL Data 경로 : /home/postgres/PostgreSQL_Data
 
 
Step 1. Extension이 위치하는 경로 이동
 
Step 2. Source File 컴파일(make)
 
Step 3. 컴파일된 파일 설치(make install)
 
Step 4. PostgreSQL Configuration 파일 설정 후 PostgreSQL 재기동
 
Step 5. Database에 접속하여 pg_stat_statements Extenstion 생성 및 생성 확인
 

Package Manager 설치

Package Manager를 통해 PostgreSQL Database를 설치한 경우, 기본 Extension을 가지는 contrib는 설치되지 않기 때문에 Package Manager를 통해 contrib를 설치한 후 사용할 수 있습니다. Extension 종류에 따라서 Configuration 파일(postgresql.conf) 수정이 필요할 수 있으며, PostgreSQL Database 재기동이 필요할 수 있습니다.
📢 PostgreSQL PGDG yum Repository가 설치가 되어 있다는 전제에서 진행합니다.
 
Step 1. PostgreSQL 버전에 맞는 contrib 설치
 
Step 2. PostgreSQL Configuration 파일 설정 후 PostgreSQL 재기동
 
Step 3. Database에 접속하여 pg_stat_statements Extension 생성 및 생성 확인
 

기본 제공 Extension 종류

PostgreSQL Database에서 기본으로 제공하는 Extension 종류는 pg_available_extensions Catalog에서 확인할 수 있습니다. 기본 Extension의 종류는 PostgreSQL의 Version에 따라서 다를 수 있습니다.
Extension Name
Description
adminpack
pgAdmin 및 기타 관리 도구에서 Server 로그 파일 원격 관리 등의 관리 기능을 제공
amcheck
Object에 구조적 손상과 논리적 손상 여부 확인을 통해 관계 무결성을 검증하는 기능을 제공
autoinc
Sequence의 필드 자동 증가 기능을 제공
bloom
블륨 필터를 기반으로 인덱스가 집합에 속하는 지를 확인하여 인덱스 Access 방법 제공
btree_gin
GIN 테스트 및 다른 GIN 연산자 클래스 개발을 위한 GIN 연산자 관련 인덱스 제공
btree_gist
GiST 테스트 및 다른 GiST 연산자 클래스 개발을 위한 GiST 연산자 관련 인덱스 제공
citext
대소문자를 구분하지 않는 문자열 Data 유형 지원
bloom
다차원 큐브 형태의 Data 유형 지원
cube
블륨 필터를 기반으로 인덱스가 집합에 속하는 지를 확인하여 인덱스 Access 방법 제공
dblink
Database 내에서 다른 Database로 연결하는 기능 제공
dict_int
정수의 고유단어 텍스트 검색 사전 템플릿 제공(최대 자릿수, 매개변수 길이, 기호)
dict_xsyn
확장된 동의어 처리를 위한 텍스트 검색 사전 템플릿 제공
earthdistance
지구 표면의 대원 거리 계산할 수 있는 기능 제공
file_fdw
Server의 파일시스템에 저장된 Data에 액세스를 위한 외부 Data 래퍼 기능 제공
fuzzystrmatch
문자열 사이의 유사성과 거리를 결정할 수 있는 기능 제공.비슷한 소리의 이름을 동일한 코드로 변경하거나 입력 문자열에 대한 대표 코드를 구성해서 유사도를 체크하는 기능 제공
hstore
(키, 값) 쌍 세트를 저장하기 위한 Data 유형 제공
insert_username
누가 테이블을 변경했는지 사용자의 이름을 추적하는 기능 제공
intagg
공급되는 정수를 정확히 포함하는 정수 배열을 생성하는 집계 함수 지원
intarray
1차원 정수 배열에 대한 함수, 연산자 및 인덱스 지원
isn
EAN13, UPC, ISBN과 같은 ISN(Interational Standard Number)의 Data 유형 제공
lo
LO, BLOB와 같은 대형 객체 유지 관리 기능 제공
ltree
계층적 트리형 구조의 라벨트리 검색 제공 및 Data 유형 제공
moddatetime
테이블 내의 특정 Row의 마지막 수정 시간을 추적하는 기능 제공
old_snapshot
[Since. 14] old_snapshot_threshold를 지원하는 유틸리티 제공
pageinspect
디버깅 목적으로 유용한 낮은 수준에서 Database 페이지의 내용을 검사 기능 제공
pg_buffercache
Shared Buffer Cache 실시간 모니터링 기능 제공
pg_freespacemap
여유 공간을 반환하는 FSM(Free Space Map) 검사 기능 제공
pg_prewarm
Data를 Buffer Cache에 로드하는 방법 제공
pg_stat_statements
실행된 모든 SQL 문의 계획 및 실행 통계를 추적 기능 제공
pg_surgery
[Since. 14] 손상된 관계에 대한 조치를 위하여 강제 제거, 강제 고정 등의 함수 제공
pg_trgm
트라이그램 기반으로 영문 및 숫자 텍스트 유사성 측정 및 인덱스 검색 기능 제공
pg_visibility
비트 값 반환을 통해 VM 및 페이지 레벨의 가시성 정보를 검사하는 유틸리티 제공
pg_walinspect
[Since. 15] 낮은 수준의 PostgreSQL WAL(Write-Ahead Log) 내용을 검사하는 함수 지원
pgcrypto
암호화 함수 제공
pgrowlocks
Row 수준 잠금 정보 표시 기능 제공
pgstattuple
튜플 수준 통계 표시 기능 제공
plpgsql
PL/pgSQL 절차적 언어 지원
postgres_fdw
원격 PostgreSQL Server 외부 Data 래퍼 기능 지원
refint
참조 무결성 구현을 위한 함수 제공(외래 키 제약 조건을 확인)
seg
선분 또는 부동 소수점 간격을 나타내는 Data 유형 제공
sslinfo
PostgreSQL에 클라이언트가 제공한 SSL 인증서에 대한 정보 제공
tablefunc
Crosstab을 포함하여 전체 테이블을 조작하는 다양한 함수 지원
tcn
연결된 테이블에 대하여 테이블 내용 변경시, 리스너에게 알림 기능 제공
tsm_system_rows
테이블 샘플링 시, 반환할 Row 수를 제한하는 기능 제공
tsm_system_time
테이블 샘플링 시, 밀리초 단위의 시간 내로 출력 가능한 샘플을 반환하도록 시간 제한하는 기능 제공
unaccent
텍스트를 필터링하여 악센트를 제거하는 텍스트 검색 사전 제공
uuid-ossp
UUID(Universally Unique Identifier) 생성 기능 제공
xml2
XPath Query 및 XSLT 제공
 
 

 
 
함께 보면 좋은 아티클
PostgreSQL Extension - PG_HINT_PLAN | 엑셈
PostgreSQL Extension PG_HINT_PLAN 알아보기
PostgreSQL Extension - PG_HINT_PLAN | 엑셈
https://ex-em.com/ko/academy/postgresql-extension-3
PostgreSQL Extension - PG_HINT_PLAN | 엑셈
PostgreSQL Extension - PG_STAT_MONITOR | 엑셈
PostgreSQL Extension PG_STAT_MONITOR 알아보기
PostgreSQL Extension - PG_STAT_MONITOR | 엑셈
https://ex-em.com/ko/academy/postgresql-extension-1
PostgreSQL Extension - PG_STAT_MONITOR | 엑셈
Table of Contents
시작하며Extension 구성 요소{extension_name}.control 파일{extension_name}--version.sql 파일Extension 설치Source Code 설치Package Manager 설치기본 제공 Extension 종류