PostgreSQL 공식 확장 모듈
ServBay는 강력한 로컬 웹 개발 환경으로, 다양한 개발자 도구와 풍부한 기능을 갖춘 PostgreSQL 데이터베이스를 통합하여 제공합니다. PostgreSQL의 진정한 강점은 핵심 기능뿐만 아니라 방대한 공식 확장 생태계에 있습니다. ServBay는 PostgreSQL의 대다수 공식 확장 모듈을 미리 설치해두어, 개발자가 로컬 환경에서 손쉽게 확장 기능을 활성화하고 사용할 수 있습니다. 이를 통해 데이터베이스의 활용 폭을 크게 넓히고, 복잡한 애플리케이션 요구에도 유연하게 대응할 수 있습니다.
이 문서에서는 자주 쓰이는 PostgreSQL 공식 확장 모듈들을 소개하고, ServBay에서 이들을 설치하고 사용하는 방법을 안내합니다.
주요 확장 모듈 개요
PostgreSQL 공식 확장 모듈은 성능 모니터링, 데이터 타입, 전문 검색 등 다양한 범위를 포함합니다. 아래는 실무에서 자주 활용되는 주요 확장 모듈들입니다.
1. pg_stat_statements
- 기능: 서버에서 실행된 모든 SQL 쿼리의 통계 정보를 수집 및 기록합니다. 예: 호출 횟수, 전체 실행시간, 처리된 행 수 등.
- 활용: 데이터베이스 관리자와 개발자가 느린 쿼리 및 성능 병목 구간을 분석·최적화할 수 있습니다.
- 설치 명령어:sql참고: 설치 후
CREATE EXTENSION pg_stat_statements;
1postgresql.conf
에서shared_preload_libraries = 'pg_stat_statements'
를 설정하고 PostgreSQL을 재시작해야 데이터가 수집됩니다. ServBay에서는 설정 파일 변경이 간편하게 제공됩니다.
2. pg_trgm
- 기능: 3문자 조각(trigram)을 기반으로 한 텍스트 유사도 측정 함수 및 인덱싱 기능을 제공합니다.
- 활용: 오타, 유사 검색, 전문 검색 등에서 빠른 모호한 텍스트 매칭을 구현할 때 유용합니다.
- 설치 명령어:sql
CREATE EXTENSION pg_trgm;
1
3. hstore
- 기능: 하나의 PostgreSQL 컬럼에 Key-Value 쌍 집합을 저장할 수 있는 데이터 타입을 제공합니다.
- 활용: 동적 속성, 비정형 또는 반정형 데이터(설정값, 메타데이터, 사용자 환경설정 등) 저장에 적합하며, 엄격한 스키마 없이 활용 가능합니다.
- 설치 명령어:sql
CREATE EXTENSION hstore;
1
4. citext
- 기능: 대소문자를 구분하지 않는 텍스트 데이터 타입을 제공합니다.
- 활용: 사용자명, 이메일, 태그 등 대소문자 구분이 필요 없는 데이터를 처리할 때 유용하며, 쿼리에서 반복적으로
LOWER()
함수를 쓰지 않아도 됩니다. - 설치 명령어:sql
CREATE EXTENSION citext;
1
5. uuid-ossp
- 기능: 다양한 표준 UUID(버전 1, 3, 4, 5 등)를 생성하는 함수를 제공합니다.
- 활용: 전역적으로 고유한 식별자(Primary Key, 세션 ID, 분산 시스템 내 식별 등) 필요 시 사용합니다.
- 설치 명령어:sql참고: 확장 모듈 이름에 하이픈이 있으므로 쌍따옴표로 감싸야 합니다.
CREATE EXTENSION "uuid-ossp";
1
6. intarray
- 기능: 정수 배열(integer arrays)에 대한 추가 연산자 및 함수들을 제공합니다.
- 활용: 데이터베이스 내부에서 정수 배열끼리 집합 연산(교집합, 합집합), 포함 여부 판별, 정렬 등 복잡한 처리가 필요한 경우 유용합니다.
- 설치 명령어:sql
CREATE EXTENSION intarray;
1
7. btree_gin
- 기능: GIN(Generalized Inverted Index) 방식으로 B-tree 데이터 타입(정수, 텍스트, 날짜 등)의 인덱싱을 지원합니다.
- 활용: 다중 값 데이터(배열,
hstore
,tsvector
등)를 인덱싱할 때 성능 최적화에 도움이 되며,btree_gin
은 복합 타입 내 B-tree 인덱서블 컬럼에도 GIN 인덱스를 적용할 수 있게 합니다. - 설치 명령어:sql
CREATE EXTENSION btree_gin;
1
8. btree_gist
- 기능: GiST(Generalized Search Tree) 방식으로 B-tree 데이터 타입의 인덱싱을 지원합니다.
- 활용: GiST는 다양한 쿼리(범위, 포함 등)와 다중 컬럼 인덱스를 지원하므로, 다양한 질의 조건에서 활용도가 높습니다.
- 설치 명령어:sql
CREATE EXTENSION btree_gist;
1
9. cube
- 기능: 다차원 큐브 또는 점(point)을 표현하는 데이터 타입과 관련 함수 및 연산자를 제공합니다.
- 활용: 단순 공간정보(2차원, 3차원 점 등), 데이터 웨어하우스 다차원 분석, 과학 계산 등 다양한 다차원 데이터 처리에 적합합니다.
- 설치 명령어:sql
CREATE EXTENSION cube;
1
10. fuzzystrmatch
- 기능: 문자열 간 유사도 및 거리(Levenshtein, Soundex, Metaphone 등)를 판별하는 다양한 함수를 제공합니다.
- 활용: 문자열 일치 검증, 철자 교정, 데이터 정제 및 중복 제거 등에 활용할 수 있습니다.
- 설치 명령어:sql
CREATE EXTENSION fuzzystrmatch;
1
11. plpgsql
- 기능: PostgreSQL의 대표 절차형 언어로 저장 프로시저, 트리거 함수, 익명 코드 블록 작성이 가능합니다.
- 활용: 서버 단에서 복잡한 비즈니스 로직, 자동화/데이터 처리 프로세스 구현 시 사용합니다. 기본적으로 설치되어 있지만, 필요 시
CREATE EXTENSION
으로 재설치/확인할 수 있습니다. - 설치 명령어:sql
CREATE EXTENSION plpgsql;
1
12. tablefunc
- 기능: 표(테이블) 전체를 변환 및 조작하는 함수 집합(
crosstab
함수로 유명)을 제공합니다. - 활용: 교차 테이블(피벗)과 같은 데이터 전환 작업, 리포트 생성 및 분석 등에 쓰입니다.
- 설치 명령어:sql
CREATE EXTENSION tablefunc;
1
13. dblink
- 기능: 현재 PostgreSQL 데이터베이스 내에서 다른 PostgreSQL 데이터베이스에 연결해 쿼리할 수 있습니다.
- 활용: 애플리케이션 계층의 추가 작업 없이 DB 간 단순 질의 및 데이터 이전이 필요할 때 사용합니다.
- 설치 명령어:sql
CREATE EXTENSION dblink;
1
14. postgres_fdw
- 기능: 외부 데이터 래퍼(Foreign Data Wrapper) 기능으로, 외부 PostgreSQL 데이터베이스의 테이블을 로컬 테이블처럼 조회할 수 있습니다.
- 활용:
dblink
보다 강력하고 유연하게, DB 간 데이터 통합 및 조인·최적화 조회가 가능합니다. - 설치 명령어:sql
CREATE EXTENSION postgres_fdw;
1
15. pgcrypto
- 기능: 다양한 암호화/복호화 함수(해시, 대칭키 암호화, 공개키 암호화 등)를 제공합니다.
- 활용: 데이터베이스 내 직접 암호화 처리, 비밀번호 해시, 디지털 서명 생성/검증 등 보안 관련 작업에 사용합니다.
- 설치 명령어:sql
CREATE EXTENSION pgcrypto;
1
위에서 소개한 확장 모듈 외에도 ServBay는 많은 공식 PostgreSQL 확장들을 기본 탑재하고 있어, 개발자의 다양한 요구를 충분히 충족시킵니다.
ServBay에서 PostgreSQL 확장 모듈 설치 및 활용 방법
ServBay 환경에서는 PostgreSQL 확장 모듈 설치와 사용이 매우 간단합니다. 확장 모듈은 특정 데이터베이스 단위로 설치되어야 하므로, 필요한 각 데이터베이스에서 별도로 활성화해야 합니다.
사전 준비:
- ServBay가 실행 중이고, PostgreSQL 데이터베이스 서비스가 켜져 있는지 확인합니다.
설치 단계:
대상 PostgreSQL 데이터베이스에 연결 터미널(Terminal, iTerm2 등)을 열고,
psql
명령어를 사용해 원하는 데이터베이스에 접속합니다. ServBay 기본 PostgreSQL 계정은postgres
, 기본 데이터베이스 이름도postgres
입니다.bashpsql -U your_username -d your_database
1예시: 기본
postgres
데이터베이스 접속bashpsql -U postgres -d postgres
1접속 시 비밀번호를 요구할 수 있습니다. ServBay에서 지정한 PostgreSQL의 root/postgres 계정 비밀번호를 입력하세요.
확장 모듈 설치 연결이 완료되면,
psql
프롬프트에서CREATE EXTENSION
명령어로 원하는 확장 모듈을 설치해주세요.module_name
부분을 설치할 확장 이름으로 바꿉니다.sqlCREATE EXTENSION module_name;
1예시:
pg_trgm
확장 설치sqlCREATE EXTENSION pg_trgm;
1설치 확인 설치가 완료된 후,
\dx
명령어로 현재 데이터베이스에 활성화된 모든 확장 모듈 목록을 확인할 수 있습니다.sql\dx
1
예시: pg_trgm
확장 활성화
아래는 psql
CLI에서 postgres
데이터베이스에 접속하여 pg_trgm
확장을 활성화하는 실제 예시입니다.
sql
# 터미널에서 데이터베이스 접속
psql -U postgres -d postgres
# 연결 성공 시, psql 프롬프트가 나타납니다
psql (16.3 (ServBay))
Type "help" for help.
postgres=# -- 현재 설치된 확장 확인(기본적으로 plpgsql, pgcrypto 등만 존재할 수 있음)
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
----------+---------+------------+------------------------------
pgcrypto | 1.3 | public | cryptographic functions
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)
postgres=# -- pg_trgm 확장 설치
postgres=# CREATE EXTENSION pg_trgm;
CREATE EXTENSION
postgres=# -- 확장 목록 재확인, pg_trgm이 추가됨을 알 수 있습니다
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
----------+---------+------------+-------------------------------------------------------------------
pg_trgm | 1.6 | public | text similarity measurement and index searching based on trigrams
pgcrypto | 1.3 | public | cryptographic functions
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(3 rows)
postgres=# -- 설치 완료! 이제 해당 데이터베이스에서 pg_trgm 관련 함수 및 연산자를 사용할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
ServBay PostgreSQL 환경에서 사용 가능한 확장 모듈 목록 조회
확장을 설치하기 전에, ServBay의 PostgreSQL에 어떤 확장 모듈이 포함되어 있는지 확인하는 것도 좋습니다. 이를 통해 유용한 기능을 더 많이 발견할 수 있습니다.
모든 PostgreSQL 데이터베이스에서 아래 SQL 쿼리를 실행하면, 사용 가능한 확장 모듈의 전체 리스트를 확인할 수 있습니다.
sql
SELECT * FROM pg_available_extensions ORDER BY name;
1
이 명령을 실행하면 ServBay에 내장된 PostgreSQL 버전에서 지원하는 모든 확장 모듈의 이름, 기본 버전, 현재 설치 여부, 설명이 표로 나타납니다.
대표적 조회 결과는 다음과 같습니다(목록과 버전은 ServBay 및 PostgreSQL 버전에 따라 달라질 수 있습니다):
sql
name | default_version | installed_version | comment
------------------------------+-----------------+-------------------+---------------------------------------------------------------------------------------------------------------------
address_standardizer | 3.4.2 | | Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.
address_standardizer_data_us | 3.4.2 | | Address Standardizer US dataset example
adminpack | 2.1 | | administrative functions for PostgreSQL
amcheck | 1.3 | | functions for verifying relation integrity
autoinc | 1.0 | | functions for autoincrementing fields
bloom | 1.0 | | bloom access method - signature file based index
btree_gin | 1.3 | | support for indexing common datatypes in GIN
btree_gist | 1.7 | | support for indexing common datatypes in GiST
citext | 1.6 | | data type for case-insensitive character strings
cube | 1.5 | | data type for multidimensional cubes
dblink | 1.2 | | connect to other PostgreSQL databases from within a database
dict_int | 1.0 | | text search dictionary template for integers
dict_xsyn | 1.0 | | text search dictionary template for extended synonym processing
earthdistance | 1.1 | | calculate great-circle distances on the surface of the Earth
file_fdw | 1.0 | | foreign-data wrapper for flat file access
fuzzystrmatch | 1.2 | | determine similarities and distance between strings
hstore | 1.8 | | data type for storing sets of (key, value) pairs
insert_username | 1.0 | | functions for tracking who changed a table
intagg | 1.1 | | integer aggregator and enumerator (obsolete)
intarray | 1.5 | | functions, operators, and index support for 1-D arrays of integers
isn | 1.2 | | data types for international product numbering standards
lo | 1.1 | | Large Object maintenance
ltree | 1.2 | | data type for hierarchical tree-like structures
moddatetime | 1.0 | | functions for tracking last modification time
old_snapshot | 1.0 | | utilities in support of old_snapshot_threshold
pageinspect | 1.12 | | inspect the contents of database pages at a low level
pg_buffercache | 1.4 | | examine the shared buffer cache
pg_freespacemap | 1.2 | | examine the free space map (FSM)
pg_jieba | 1.1.1 | | a parser for full-text search of Chinese
pg_prewarm | 1.2 | | prewarm relation data
pg_stat_statements | 1.10 | | track planning and execution statistics of all SQL statements executed
pg_surgery | 1.0 | | extension to perform surgery on a damaged relation
pg_trgm | 1.6 | 1.6 | text similarity measurement and index searching based on trigrams
pg_visibility | 1.2 | | examine the visibility map (VM) and page-level visibility info
pg_walinspect | 1.1 | | functions to inspect contents of PostgreSQL Write-Ahead Log
pgcrypto | 1.3 | 1.3 | cryptographic functions
pgrouting | 3.6.2 | | pgRouting Extension
pgrowlocks | 1.2 | | show row-level locking information
pgstattuple | 1.5 | | show tuple-level statistics
plpgsql | 1.0 | 1.0 | PL/pgSQL procedural language
postgis | 3.4.2 | | PostGIS geometry and geography spatial types and functions
postgis_sfcgal | 3.4.2 | | PostGIS SFCGAL functions
postgis_tiger_geocoder | 3.4.2 | | PostGIS tiger geocoder and reverse geocoder
postgres_fdw | 1.1 | | foreign-data wrapper for remote PostgreSQL servers
refint | 1.0 | | functions for implementing referential integrity (obsolete)
seg | 1.4 | | data type for representing line segments or floating-point intervals
sslinfo | 1.2 | | information about SSL certificates
tablefunc | 1.0 | | functions that manipulate whole tables, including crosstab
tcn | 1.0 | | Triggered change notifications
tsm_system_rows | 1.0 | | TABLESAMPLE method which accepts number of rows as a limit
tsm_system_time | 1.0 | | TABLESAMPLE method which accepts time in milliseconds as a limit
unaccent | 1.1 | | text search dictionary that removes accents
vector | 0.7.0 | | vector data type and ivfflat and hnsw access methods
xml2 | 1.1 | | XPath querying and XSLT
zhparser | 2.2 | | a parser for full-text search of Chinese
(55 rows)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
위 목록은 예시이며, 실제 ServBay 및 PostgreSQL 버전에 따라 달라질 수 있습니다.
요약
ServBay는 다양한 공식 PostgreSQL 확장 모듈을 기본 탑재하여, 로컬 개발 환경에서도 강력한 데이터베이스 기능을 쉽고 빠르게 쓸 수 있도록 돕습니다. 수동 컴파일/설치 없이 SQL 명령만으로 즉시 확장 활성화가 가능해, 개발자는 애플리케이션 개발에만 집중할 수 있습니다. 이러한 확장 모듈을 활용해 성능 분석, 전문 검색, 데이터 보안 등 고급 데이터베이스 기능을 손쉽게 프로젝트에 추가해보세요.