반응형
MySQL vs PostgreSQL 사용 비율 (2024 기준 경향)
구분
구분 | MySQL | PostgreSQL |
---|---|---|
스타트업, 중소기업 | ⭐⭐⭐⭐⭐ (가장 흔함) | ⭐⭐ (조금 적음, 최근 증가 중) |
대기업/금융 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ (가장 빠르게 성장 중) |
AI/데이터 사이언스 | ⭐⭐ (기본 지원) | ⭐⭐⭐⭐⭐ (JSON, GIS, 확장성, 함수형 SQL) |
글로벌 서비스 | AWS RDS Aurora (MySQL), Shopify 등 | Reddit, Instagram, Notion, GitLab 등 |
복잡한 JOIN, JSON | 약함 (JSON 지원은 있지만 느림) | 강함 (JSONB, GIN Index, Window Functions 강력) |
GIS / 공간 검색 | 약함 | 강함 (PostGIS) |
간단하게 요약하면:
- 상황: 추천 DB
- MVP 빠른 개발, 이커머스, CMS, 워드프레스, 쇼핑몰: MySQL / MariaDB
- 데이터 사이언스, AI 시스템, 복잡한 쿼리 필요: PostgreSQL
- 대용량 읽기 위주, 단순 키-값, 글로벌 확장: Aurora (MySQL 호환), DynamoDB 등
왜 PostgreSQL이 최근 뜨고 있나?
- JSON + RDBMS 조합이 뛰어남 (NoSQL 느낌도 낼 수 있음)
- Window Function (RANK(), ROW_NUMBER()) 성능 좋음
- WITH RECURSIVE (트리 구조 처리) 쉽고 빠름
- PostGIS (지도/GIS 검색), Time-series (TimescaleDB) 확장 가능
- 대규모 데이터 통계, AI Embedding Vector 쿼리 (pgvector) 지원
실제 사례
회사 | 사용 DB | 특징 |
---|---|---|
Shopify | MySQL / Aurora (MySQL 호환) | 안정성, 글로벌 멀티리전 |
PostgreSQL | 커뮤니티, JSON + JOIN 활용 | |
GitLab | PostgreSQL | 복잡한 데이터 구조, 트리, 이슈 관리 |
Notion | PostgreSQL | 복잡한 문서 구조, JSON 활용 |
카카오 / 배달의민족 | MySQL → PostgreSQL 전환 사례 있음 | GIS, 복잡 쿼리 대응 |
현업 추천 포인트
- 고민 포인트: 선택 추천
- 단순 상품관리, CMS, 쇼핑몰: MySQL / Aurora
- 대용량 복잡한 검색, JSON, AI: PostgreSQL + pgvector
- NoSQL과 RDB 둘 다 필요한 경우: PostgreSQL (JSONB 활용)
AI / 데이터 사이언스에서 PostgreSQL이 더 좋은 이유
- JSON 지원이 MySQL보다 훨씬 강력
- JSONB 타입 → 빠른 검색 + 인덱스 (GIN Index)
- MySQL도 JSON 있지만, 검색 느리고 복잡
- Vector Embedding 저장 + 검색 (pgvector)
- OpenAI, SentenceTransformer, CLIP → Embedding 벡터 저장 가능
- RAG, 추천 시스템, 유사도 검색까지 바로 지원
- cube 타입이나 pgvector 확장 모듈 사용 → L2 distance, cosine similarity, inner product 지원
- Window Functions, Recursive Queries, CTE (WITH)
- 시간대별 변화 비교 (LAG(), LEAD())
- 트리형 데이터 (WITH RECURSIVE)
- RANK(), ROW_NUMBER() → 머신러닝 피처 생성 때도 자주 씀
데이터 사이언스, ML 파이프라인에서 PostgreSQL을 쓰는 이유
필요 기능 | MySQL | PostgreSQL |
---|---|---|
JSON 처리 | 약함 | 강력 (JSONB + GIN Index) |
Embedding 검색 | 없음 | pgvector 확장 사용 가능 |
Window Functions | 일부 있음 | 매우 강력 |
Time-series 기능 | 없음 | TimescaleDB 확장 가능 |
공간 검색(GIS)에서 PostgreSQL이 좋은 이유 (PostGIS)
GIS 기능 | MySQL | PostgreSQL + PostGIS |
---|---|---|
거리 계산 (ST_Distance) | 지원은 하지만 성능, 기능 부족 | 초정밀 계산, 다양한 좌표계 지원 |
공간 인덱스 (SPATIAL INDEX) | 기본 지원 (제한적) | GIST, SPGIST Index → 빠름 |
좌표 변환 (ST_Transform) | 없음 | 지원 (EPSG 코드 사용) |
공간 집계 (ST_Union, ST_Buffer) | 없음 | 지원 (버퍼링, 겹침 영역 구하기) |
GIS 함수 개수 | 20개 미만 | 200개 이상 |
실무 예시:
- 반경 5km 안에 있는 매장 찾기 (PostGIS)
SELECT store_id, store_name FROM stores WHERE ST_DWithin( ST_SetSRID(ST_Point(longitude, latitude), 4326), ST_SetSRID(ST_Point(127.0276, 37.4979), 4326), 5000 );
- EPSG:4326은 위도/경도 좌표계
- 거리 단위: 미터(m)
공간검색을 PostgreSQL + PostGIS로 하는 이유 (실제 현업 사례)
회사 | PostGIS 사용 이유 |
---|---|
배달의민족 | 배달 반경 설정, 배달 가능 지역 찾기 |
카카오T | 택시 호출 시 근처 기사 검색 |
우버 | 기사 위치 기반 배차 |
농업 스마트팜 | 경작지 영역, 위성 사진 분석 |
한 줄 요약:
분야 | 왜 PostgreSQL이 강한가 |
---|---|
AI / 데이터사이언스 | Vector Embedding 저장 + 검색, JSON 처리, Window Functions, RECURSIVE |
GIS / 공간검색 | PostGIS 확장, 정확한 거리 계산, 공간 인덱스, 다양한 좌표계 지원 |
반응형
'데이터베이스' 카테고리의 다른 글
Supabase 수파베이스란? (0) | 2025.06.08 |
---|---|
단일 테이블 생성 실습 문제와 정답 (0) | 2024.10.29 |