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

PostgreSQL이 잘 맞는 자리

~12 min · foundations, use-cases

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

웹 백엔드의 기본 선택

Rails, Django, Phoenix, Next.js와 Prisma, Spring Boot 같은 주요 웹 도구는 PostgreSQL을 자연스럽게 지원해. 사용자, 세션, 상품, 글, 댓글, 결제처럼 일반적인 SaaS가 다루는 데이터는 PostgreSQL 하나로 무리 없이 묶을 수 있어. 다른 도구를 골라야 할 이유가 바로 떠오르지 않는다면 PostgreSQL에서 시작하는 편이 안전해.

특히 강한 분야

  • 공간 정보: PostGIS를 더하면 지도 서비스, 배달 경로, 위치 기반 검색을 다루는 완전한 GIS 데이터베이스가 돼.
  • 트랜잭션 데이터 분석: 윈도 함수, 구체화된 뷰, CTE를 이용하면 별도 웨어하우스로 복사하지 않고도 중간 규모의 BI를 처리할 수 있어.
  • AI 임베딩: pgvector는 임베딩을 그 대상 행 옆에 저장해. 임베딩이 약 1천만 개 미만이라면 별도 벡터 저장소가 필요 없는 경우가 많아.
  • 시계열: TimescaleDB는 하이퍼테이블, 압축, 연속 집계로 PostgreSQL을 확장해.
  • 메시지 대기열·감사 기록·기능 플래그: 알맞은 색인을 둔 PostgreSQL 테이블만으로 충분한 경우가 많아.

전문 도구로 옮겨 갈 때

페타바이트급 분석에는 Snowflake·BigQuery·ClickHouse 같은 열 지향 웨어하우스가, 1밀리초 미만의 캐시 응답에는 Redis가 더 맞아. 초당 수백만 건을 넓게 퍼뜨려 쓰는 작업은 Cassandra·ScyllaDB가, 순수한 사건 기록은 Kafka가 잘해. 미래의 막연한 걱정이 아니라 측정된 압력이 PostgreSQL의 한계를 보여줄 때 옮겨 가면 돼.

Code

일반적인 SaaS 질의·sql
-- 이번 달 활성 유저 — 모든 SaaS 대시보드에 정확히 이 모양 있음.
SELECT COUNT(DISTINCT user_id)
FROM   sessions
WHERE  created_at >= DATE_TRUNC('month', CURRENT_DATE);
공간 질의: 500m 안의 카페·sql
SELECT name, address
FROM   shops
WHERE  ST_DWithin(
         location,
         ST_MakePoint(-122.42, 37.77)::geography,
         500
       );
pgvector로 임베딩 유사도 찾기·sql
SELECT id, title
FROM   documents
ORDER  BY embedding <=> '[0.12, -0.04, ...]'::vector
LIMIT  5;

External links

Exercise

현재 프로젝트나 최근 작업의 데이터 저장소를 모두 적어봐. PostgreSQL이 아닌 저장소마다 지금 대체할 수 있는지 한 줄, 대체하려면 무엇이 달라져야 하는지 한 줄로 답해.

Progress

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

댓글 0

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

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