개발을 하다 보면 한 번쯤 이런 질문을 받게 된다.
“RDB랑 NoSQL 중에 뭐 써야 하나요?”
이 질문에 단순히
“이건 RDB, 저건 NoSQL”이라고 답하는 건 쉽다.
하지만 실제 현업에서는 그렇게 단순하게 결정되지 않는다.
이 글에서는
이론적인 정의보다는, 현업에서 둘 다 써보면서 느꼈던 차이점과 선택 기준을 중심으로
RDB와 NoSQL을 정리해보려고 한다.
RDB(Relational Database)는
데이터를 테이블(행과 열) 형태로 저장하고,
테이블 간의 관계(Relation) 를 명확하게 정의하는 데이터베이스다.
한 줄 요약
“데이터 정합성과 관계가 중요한 시스템에 강한 DB”
NoSQL은 RDB를 대체하기 위해 등장한 기술이 아니다.
RDB가 잘 해결하지 못하는 문제를 풀기 위해 등장한 선택지에 가깝다.
이런 상황에서
“테이블 구조를 엄격하게 유지하는 방식”은 오히려 발목을 잡는다.
NoSQL은 말 그대로
Not Only SQL, 즉 SQL이 아닌 방식도 허용하는 DB다.
| 유형 | 예시 | 주 사용처 |
|---|---|---|
| Key-Value | Redis | 캐시, 세션 |
| Document | MongoDB | JSON 데이터 |
| Column | Cassandra | 로그, 이벤트 |
| Graph | Neo4j | 관계 중심 데이터 |
한 줄 요약
“유연성과 확장성이 필요한 경우에 강한 DB”
| 항목 | RDB | NoSQL |
|---|---|---|
| 데이터 구조 | 테이블 | 문서, 키-값 등 |
| 스키마 | 고정 | 유연 |
| 트랜잭션 | 강함 (ACID) | 제한적 |
| 확장 방식 | 수직 확장 | 수평 확장 |
| 일관성 | 강한 일관성 | 최종 일관성 |
| 학습 난이도 | 비교적 높음 | 상대적으로 낮음 |
👉 결제, 주문, 정산 같은 도메인에서는 여전히 최적
👉 로그, 이벤트, 캐시 계층에서는 사실상 필수
그리고 현실에서는 대부분 이렇게 간다.
RDB + NoSQL을 함께 사용
메인 데이터는 RDB,
캐시나 부하 분산용으로 NoSQL을 붙이는 구조가 가장 흔하다.
RDB와 NoSQL의 차이는
“어느 게 더 좋다”의 문제가 아니다.
중요한 건
지금 해결하려는 문제가 무엇인가
그 문제에 가장 적합한 도구가 무엇인가
라는 질문에 답할 수 있는가이다.
DB를 선택하는 기준이 명확해질수록,
아키텍처도 자연스럽게 설득력을 갖게 된다.