변수의 기록

(데이터베이스) Redis와 MongoDB의 공통점/차이점, 장단점 비교 본문

CS지식/데이터베이스 (Database)

(데이터베이스) Redis와 MongoDB의 공통점/차이점, 장단점 비교

불광동 물주먹 2025. 5. 30. 23:33

✅ 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

 

 

 

다음에는 레디스에 대해서 깊게 다뤄볼 예정이다.