| 항목 | MySQL | PostgreSQL | Elasticsearch |
|---|---|---|---|
| 목적 | 범용 관계형 DB | 고성능 관계형 DB (기능 풍부) | 전문 검색 엔진 |
| 데이터 저장 | 구조화된 테이블 | 구조화된 테이블 + JSON 지원 | 문서 기반 (JSON) |
| 검색 속도 | 느림 (LIKE, FULLTEXT 제한적) | 느림 (ILIKE 등 느림, 일부 인덱싱 가능) | 매우 빠름 (역색인 구조) |
| 정렬·필터링 | 가능 | 가능 | 고급 필터링/정렬 지원 |
| 자연어 검색 | 제한적 (FULLTEXT 정도) | 비교적 제한적 | 형태소 분석, 오타교정, 자동완성 등 자연어 검색 특화 |
| 복잡한 쿼리 (조인, 트랜잭션) | 가능 | 강력함 (CTE, Window func 등) | 거의 불가능 (조인 안 됨) |
| 데이터 일관성 | 강함 | 강함 (ACID) | 약함 (실시간성 우선) |
| 실시간 검색 | X | X | O (밀리초 단위) |
| 스케일링 | 제한적 (수직 확장 중심) | 제한적 | 수평 확장(Sharding) 우수 |
| 시각화 | X | X | Kibana를 통한 시각화 가능 |
| 오픈소스 / 비용 | 무료 (GPL) | 무료 (PostgreSQL License) | **기본 무료 (Elastic License)**단, Elastic Cloud는 유료 |
| 주요 용도 | 웹서비스 DB, ERP 등 | 웹서비스, 분석, 금융 등 | 검색, 추천, 로그분석, 대시보드 |
| 사용 목적 | 추천 도구 |
|---|---|
| 회원, 게시글, 트랜잭션 등 일반적인 웹 데이터 | MySQL / PostgreSQL |
| 고급 검색 기능, 빠른 검색 응답, 자동완성, 오타 교정 | Elasticsearch |
| SQL 기반 복잡한 조인, 트랜잭션, 분석 쿼리 | PostgreSQL |
| 데이터 시각화, 로그 분석, 인기 검색어 집계 등 실시간 모니터링 | Elasticsearch + Kibana |
비용 측면 비교
| 도구 | 라이선스 / 비용 |
|---|---|
| MySQL | 무료 (GPL) |
| PostgreSQL | 무료 (PostgreSQL License) |
| Elasticsearch | 무료 (ES cloud - 유료) |
Elasticsearch 자체 서버에 설치 시 무료
→ 대규모에서는 클러스터 운영 비용 발생
Elastic Cloud (호스팅형) : 유료 (월 수십~수백 달러)
| 시나리오 | MySQL / PostgreSQL | Elasticsearch |
|---|---|---|
| “인공지능 기술” 포함된 문서 검색 | LIKE ‘%인공지능 기술%’ → 느림 | match / match_phrase → 매우 빠름 |
| 오타 포함 “machin learnin” 검색 | 불가능 | fuzzy 검색으로 가능 |
| 카테고리별 필터 + 정렬 | 가능 (인덱스 필요) | filter + sort로 매우 빠름 |
| 자동완성 “인공” → “인공지능” | X | Suggest 기능으로 가능 |
| 항목 | MySQL | ✅ PostgreSQL |
|---|---|---|
| 표준 SQL 준수 | 낮음 | 매우 높음 |
| 복잡한 쿼리 (CTE, Window Func 등) | 제한적 | 강력한 지원 |
| JSON 데이터 처리 | 가능하나 제한적 | JSONB 지원 → 매우 빠르고 유연함 |
| 인덱스 기능 | 보통 | GIST, GIN, BRIN 등 다양 |
| 확장성/플러그인 | 낮음 | PostGIS 등 확장 매우 용이 |
| 트랜잭션, 동시성 제어 | 기본적 수준 | MVCC로 훨씬 안정적 |
| Elasticsearch 연동 | 가능 | 데이터 구조 & 호환성 우수 |
결론적으로 실제 서비스에서 Elasticsearch와 함께 쓰거나, 향후 확장성·분석·고급 기능을 고려한다면 MySQL보다 PostgreSQL이 더 적합하다.