Notice
Recent Posts
Recent Comments
Link
변수의 기록
(데이터베이스) Redis와 MongoDB의 공통점/차이점, 장단점 비교 본문
✅ NoSQL이란?
**NoSQL (Not Only SQL)**은 전통적인 관계형 데이터베이스(RDB)와는 다른 방식으로 데이터를 저장하고 처리하는 데이터베이스의 총칭입니다.
NoSQL은 다음과 같은 특징을 갖습니다:
- 스키마 유연성 (Flexible Schema)
- 고속의 읽기/쓰기 성능
- 수평적 확장성 (Scale-Out)
- 다양한 데이터 모델 지원 (문서형, 키-값형, 컬럼형, 그래프형 등)
📌 NoSQL이 등장하게 된 배경은 빅데이터, 고속 트래픽, 비정형 데이터 증가에 따른 RDB의 한계를 보완하기 위함입니다.
✅ RDB vs NoSQL 간단 비교
항목 | RDB (관계형 DB) | NoSQL |
구조 | 고정 스키마 (정규화) | 유연한 스키마 |
확장성 | 수직 확장 (Scale-Up) | 수평 확장 (Scale-Out) |
트랜잭션 | ACID 완전 지원 | 대부분 일부만 지원 (BASE) |
JOIN | 자유롭게 지원 | 대부분 미지원 → 중복 허용 |
사용 예시 | 금융, ERP, 주문 시스템 | 로그 수집, 세션 관리, 캐시, 비정형 문서 저장 |
⛔ 단점: RDB는 스키마 변경이 어렵고, 대규모 쓰기/읽기에서는 성능 저하가 발생할 수 있음
✅ 반면 NoSQL은 유연성과 성능 측면에서 강점을 보임
✅ MongoDB (문서형 NoSQL)
- JSON과 유사한 BSON 형식으로 데이터를 저장
- 컬렉션(Collection) 내에 문서(Document)를 저장하며, 각 문서는 구조가 달라도 됨
- 스키마 유연성 제공 → 변경이 잦은 서비스에 적합
- 복잡한 쿼리는 어느 정도 지원 (find, aggregation pipeline 등)
📌 예시:
{
"userId": "u123",
"name": "홍길동",
"orders": [
{"product": "노트북", "price": 1000000},
{"product": "마우스", "price": 20000}
]
}
✅ Redis (키-값형 In-Memory NoSQL)
- 모든 데이터를 RAM(메모리) 에 저장하는 초고속 DB
- 키(Key)에 문자열, 리스트, 해시, 셋, 정렬셋 등 다양한 타입 지원
- 빠른 처리 속도로 캐시, 세션, 실시간 순위 등에 사용
- 지속성 옵션: 메모리에 있지만, RDB/AOF 방식으로 디스크 백업 가능
- 클러스터링: Hash slot 기반 자동 샤딩 지원
📌 예시 (key-value 구조)
SET user:123 "홍길동"
HSET user:123:profile name "홍길동" age 30
ZADD ranking 100 "유저1"
✅ Redis vs MongoDB
항목 | Redis | MongoDB |
데이터 저장 | 인메모리 (RAM) 중심 | 디스크 기반 |
구조 | Key-Value, 다양한 타입 | JSON(BSON) 기반 문서형 |
속도 | 매우 빠름 (ns ~ μs 수준) | 디스크 기반이므로 상대적으로 느림 |
용도 | 캐시, 세션, 실시간 데이터 | 비정형 문서 저장, 로그, CMS |
지속성 | 있음 (옵션) | 기본적으로 있음 |
트랜잭션 | 기본은 없음, MULTI/EXEC 지원 | 일부 트랜잭션 지원 |
샤딩/확장 | 클러스터 구조 지원 (hash slot 기반) | 샤딩 및 복제 가능 |
✅ Redis의 장단점
장점:
- 매우 빠른 응답속도 (RAM 기반)
- 다양한 데이터 구조 지원
- 높은 확장성 (클러스터)
- 캐시로 사용 시 DB 부하 감소
단점:
- 메모리 사용량 한계 존재 → 대용량 저장에는 비효율
- 완전한 ACID 트랜잭션 부재
- 데이터 휘발 가능성 (옵션 설정 안하면)
✅ MongoDB의 장단점
장점:
- 유연한 문서 구조
- 다양한 쿼리 및 집계 기능 지원
- 쉬운 수평 확장 (샤딩)
- 다양한 드라이버 지원 (Node, Python 등)
단점:
- JOIN 부재 → 중복된 데이터 존재 가능
- 데이터 일관성 보장 어려움 (BASE 모델)
- 대용량 집계에서 RDB보다 느릴 수 있음
✅ 결론 및 활용 전략
- Redis는 속도가 생명인 캐시, 랭킹, 세션 저장 등에 사용하기 적합
- MongoDB는 유연한 구조가 필요한 콘텐츠, 로그, 이벤트 데이터 저장에 적합
- 실무에서는 둘을 함께 사용하는 경우도 많음
예:- 로그인 세션은 Redis
- 사용자 정보는 MongoDB
- 결제 데이터는 RDB
[ 사용 사례별 DB 선택 가이드 ]
실시간 캐시 → Redis
비정형 콘텐츠 저장 → MongoDB
강한 정합성 필요 → Oracle/MySQL
키-값 형태 단순 저장 → Redis
로그 수집/분석 → MongoDB
다음에는 레디스에 대해서 깊게 다뤄볼 예정이다.
'CS지식 > 데이터베이스 (Database)' 카테고리의 다른 글
(데이터베이스) B-Tree와 데이터베이스 인덱스 (1) | 2025.06.02 |
---|---|
(데이터베이스) B-Tree : 구조, 작동 원리, DB에서의 활용 (0) | 2025.05.31 |
(데이터베이스) 실전에서의 DBCP 설정 최적화: 병목 분석까지 (1) | 2025.05.30 |
(데이터베이스) DBCP 왜 쓸까? 안쓰면 뭐가 안좋아질까? + DBCP 관련 정리 (0) | 2025.05.30 |
(데이터베이스) DBCP (Database Connection Pool) 정리 (1) | 2025.05.30 |