PostgreSQL은 1986년 UC Berkeley에서 시작된 고급 오픈소스 객체-관계형 데이터베이스다. SQL 표준 준수율이 높고, JSON, 배열, 지리 데이터 등 풍부한 데이터 타입을 지원한다.
주요 특징
| 특징 | 설명 |
|---|
| MVCC | 다중 버전 동시성 제어로 읽기/쓰기 충돌 최소화 |
| 확장성 | 커스텀 타입, 함수, 인덱스 작성 가능 |
| JSON/JSONB | 강력한 JSON 처리 (JSONB: 바이너리 인덱싱) |
| 전문 검색 | 내장 Full-Text Search |
| PostGIS | 지리 공간 데이터 확장 |
JSONB 활용
sql
-- JSONB 컬럼
CREATE TABLE events (
id SERIAL PRIMARY KEY,
data JSONB
);
INSERT INTO events (data) VALUES
('{"type": "login", "user_id": 1, "ip": "192.168.1.1"}');
-- JSONB 쿼리 (인덱스 가능)
SELECT * FROM events WHERE data->>'type' = 'login';
SELECT * FROM events WHERE data @> '{"user_id": 1}';
-- JSONB 인덱스
CREATE INDEX idx_events_data ON events USING GIN(data);
sql
-- 부서별 급여 순위
SELECT name, department, salary,
RANK() OVER (PARTITION BY department ORDER BY salary DESC) as rank
FROM employees;
CTE (Common Table Expression)
sql
WITH monthly_sales AS (
SELECT DATE_TRUNC('month', created_at) as month,
SUM(amount) as total
FROM orders
GROUP BY 1
)
SELECT month, total,
LAG(total) OVER (ORDER BY month) as prev_month
FROM monthly_sales;
관련 개념
- •SQL — PostgreSQL의 쿼리 언어
- •ACID — PostgreSQL 트랜잭션 보장
- •ORM — SQLAlchemy, Prisma 등
참고문헌
- •PostgreSQL 공식 문서: postgresql.org