본문 바로가기
C.W.K.
Stream
Lesson 08 of 10 · published

확장 기능, PostgreSQL의 큰 힘

~12 min · extensions, extensibility

Level 0스키마 새싹
0 XP0/86 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

한 문장으로 새 능력을 더한다

CREATE EXTENSION foo;처럼 CREATE EXTENSION은 새 자료형, 함수, 연산자, 색인 방식을 데이터베이스에 설치해. 별도 서비스를 운영하지 않고 PostgreSQL 자체의 능력을 넓혀.

알아둘 대표 확장 기능

  • pg_stat_statements는 질의 횟수와 시간을 모아.
  • pg_trgm은 오타와 유사 문자열 검색을, pgcrypto는 해싱·암호화와 안전한 난수를 제공해.
  • pgvector는 벡터 검색, PostGIS는 공간 정보, pg_partman은 파티션 관리, pg_cron은 SQL 작업 예약을 맡아.
  • btree_gist와 btree_gin은 B-tree 연산을 GiST·GIN과 결합해 EXCLUDE 제약 같은 설계를 가능하게 해.

호스팅에서 제공하는지 확인해

SELECT * FROM pg_available_extensions;로 설치 가능한 목록을 보고, Supabase·Neon·RDS 같은 제공자의 허용 범위도 확인해.

Code

확장 기능 설치하고 사용하기·sql
CREATE EXTENSION IF NOT EXISTS pg_trgm;

-- 퍼지 유사도 (0 와 1 사이)
SELECT name, similarity(name, 'postgresqul')
FROM   products
ORDER  BY similarity(name, 'postgresqul') DESC
LIMIT  5;

-- ILIKE '%term%' 위한 pg_trgm-backed 인덱스
CREATE INDEX products_name_trgm ON products USING gin (name gin_trgm_ops);

EXPLAIN ANALYZE
SELECT * FROM products WHERE name ILIKE '%postgres%';
-- 이제 Bitmap Heap Scan, Seq Scan 아님.
설치된 확장 기능 확인하기·sql
-- 현재 설치된 거
SELECT * FROM pg_extension;

-- 이 서버에 설치 가능
SELECT name, default_version, installed_version, comment
FROM   pg_available_extensions
WHERE  installed_version IS NULL
ORDER  BY name;

External links

Exercise

위 목록에서 아직 쓰지 않는 확장 기능 하나를 골라 샌드박스 데이터베이스에 설치하고 기능을 직접 사용해. 현재 기술 스택에서 무엇을 대신할 수 있는지 판단해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.