MySQL이나 PostgreSQL 같은 관계형 DB는 익숙하지만,
실무에선 검색, 분석, 추천 등 목적에 따라 전혀 다른 DB들이 함께 사용되는 걸 보고 의문이 들었습니다.
“DB는 그냥 하나 쓰면 되는 거 아닌가?”
이 질문을 품고 현업과 스터디를 통해 배운 내용을 바탕으로,
요즘 실무에서 자주 쓰이는 DB의 종류와 그 차이점을 정리해보려 합니다.
우리가 흔히 아는 DB는 MySQL 같은 관계형 데이터베이스(RDB)입니다.
하지만 검색, 분석, AI 기반 추천, 그래프 탐색 등 목적마다 완전히 다른 종류의 DB들이 존재합니다.
DB 종류
종류 | 설명 | 대표 제품 |
관계형 (RDB) | 전통적인 SQL 기반 DB | MySQL, PostgreSQL |
문서형 (NoSQL) | 유연한 스키마, JSON 저장 | MongoDB, DynamoDB |
검색엔진 | 텍스트 중심, 역색인 기반 | Elasticsearch |
분석형 (OLAP) | 대용량 로그/지표 분석 | ClickHouse, Druid |
벡터 DB | 의미 기반 검색, AI 추천 | Qdrant, FAISS |
시계열 DB | 시간 흐름 데이터 저장 | InfluxDB |
그래프 DB | 관계 중심 데이터 모델링 | Neo4j |
현대 서비스에서는 하나의 DB로 모든 요구사항을 처리하기 어렵습니다.
기능에 따라 특화된 DB들이 등장했고, 각각의 용도에 맞춰 조합해서 사용하는 게 일반적입니다.
- 관계형 DB는 전통적인 CRUD 기반 서비스에 적합하고,
- 검색엔진 DB는 빠른 텍스트 검색에,
- 벡터 DB는 AI 기반 의미 검색에 최적화돼 있습니다.
- 분석 DB는 대규모 로그 집계나 대시보드에 강점을 가집니다.
- 이 외에도 문서형, 시계열, 그래프 DB처럼
데이터 형태와 목적에 맞춰 선택할 수 있습니다.
기능 비교 표
기준 | RDB | 검색DB | 벡터DB | 분석DB |
SQL 지원 | ✅ | 🔸 일부 | 🔸 일부 | ✅ |
자유 검색 | ❌ | ✅ | ✅ | 🔸 |
AI/의미 검색 | ❌ | 🔸 | ✅ | 🔸 |
실시간 집계 | ❌ | 🔸 | ❌ | ✅ |
복잡 관계 표현 | 🔸 | ❌ | ❌ | ❌ |
위 표는 각 DB가 어떤 기능에 특화되어 있는지를 정리한 것입니다.
- SQL 지원 여부는 익숙한 쿼리 문법 사용 가능성을 뜻하고,
- 자유 검색은 키워드 기반의 유연한 탐색 기능,
- AI/의미 검색은 임베딩 기반 유사도 탐색 가능성,
- 실시간 집계는 초당 수만 건 이상 데이터를 빠르게 처리할 수 있는 능력,
- 복잡 관계 표현은 소셜 그래프나 조직도처럼 관계형 데이터 구조 표현력을 뜻합니다.
서비스 | 사용DB조합 | 설명 |
쿠팡 | PostgreSQL + Elasticsearch + ClickHouse | 상품/주문 정보는 RDB에, 검색은 Elasticsearch, 매출·트래픽 분석은 ClickHouse |
왓챠 | PostgreSQL + ClickHouse + 벡터 DB (Qdrant 등) | 사용자 행동 분석은 ClickHouse, 추천은 벡터 검색 기반 |
당근마켓 | PostgreSQL + Elasticsearch + Redis | 사용자/게시글은 RDB, 동네 기반 검색은 Elasticsearch, 실시간 메시징은 Redis |
배달의민족 | MySQL + Elasticsearch + Druid | 음식점/주문은 MySQL, 검색은 ES, 운영 지표 분석은 Druid |
네이버 쇼핑 | 다양한 RDB + 검색엔진 + 자체 벡터 인프라 | 쇼핑 검색에 AI 추천까지 접목해 하이브리드 형태 사용 |
요즘 서비스는 CRUD, 검색, 분석, 추천 기능을 분리해서 DB도 분산 설계합니다.
이제는 하나로 끝나는 DB 아키텍처는 찾아보기 어렵습니다.
'Backend · Infra' 카테고리의 다른 글
PKCE란? OAuth2 인증을 안전하게 만드는 핵심 보안 메커니즘 (2) | 2025.07.22 |
---|---|
Figma 살 돈이없다면? Penpot self-hosting으로 대체하자 (3) | 2025.07.21 |
[MySQL InnoDB] 외래키(Foreign Key) 설정 시 주의사항 (0) | 2025.06.16 |
docker 를 티기고 티기는 WSL(Ubuntu) + docker cli + git에 이미지 올리기 (0) | 2025.05.12 |
OIDC란? Ory를 활용한 인증 알아보기 (0) | 2025.02.11 |