✅들어가면서
데이터베이스를 처음 공부하다 보면 한 번쯤 이런 고민을 하게 된다.
“RDB가 좋은 거야? 아니면 NoSQL이 더 좋은 거야?”
결론부터 말하면 둘 중 하나가 무조건 좋은 것은 아니다.
각각의 특징이 다르기 때문에, 상황에 맞게 선택하는 것이 핵심이다.
⭐데이터베이스와 SQL 간단 정리
먼저 기본 개념부터 짚고 넘어가자.
- Database(DB): 데이터를 저장하는 공간
- DBMS: 데이터베이스를 관리하는 시스템
- SQL: RDB에서 데이터를 조회/조작할 때 사용하는 언어
그리고 데이터베이스는 크게 두 가지로 나뉜다.
👉 RDB (관계형 DB)
👉 NoSQL (비관계형 DB)
⭐RDB (Relational Database)란?
RDB는 데이터를 테이블 형태 (행/열) 로 저장하는 방식이다.
엑셀처럼 구조가 딱 정해져 있다고 생각하면 이해하기 쉽다.
가장 중요한 특징은 Schema(스키마) 이다.
- 어떤 컬럼이 있는지
- 어떤 타입인지
- 어떤 제약조건이 있는지
미리 정의해야 한다.
✅ RDB의 장점
- 데이터 무결성 보장
- Primary Key, Foreign Key로 관계를 명확하게 관리
- 잘못된 데이터 입력 방지
- 중복 최소화 (정규화)
- 데이터를 여러 테이블로 나눔
- 동일 데이터는 한 곳에서만 관리
- 트랜잭션 지원 (ACID)
- 데이터의 정확성과 일관성 보장
- 금융/결제 시스템에 필수
❎ RDB의 단점
- 스키마 변경이 어렵다
- 서비스 요구사항이 바뀌면 구조 수정 필요
- JOIN으로 인한 성능 부담
- 여러 테이블을 합쳐야 데이터 조회 가능
- 확장(Scale-out)이 어렵다
- 서버를 여러 대로 나누는 구조에 불리
📌 RDB 예시로 이해하기 (도서관 시스템)
예를 들어 도서관 시스템을 만든다고 가정해보자.
- Book (책)
- Author (저자)
- Loan (대출)
이런 식으로 데이터를 나눠서 저장한다.
‼️저자 이름이 변경된 상황을 생각해보자‼️
“이윤재” → “이윤재(개정판)”
RDB에서는?
- Author 테이블에서 한 번만 수정하면 끝
이유:
- 중복 저장이 없기 때문이다
⭐NoSQL이란?
NoSQL은 하나의 DB가 아니라
여러 형태의 비관계형 데이터베이스를 통칭한다.
대표적으로
- Document (MongoDB)
- Key-Value (Redis)
- Graph
가 있다. NoSQL의 핵심 특징은 유연함이다.
✅ NoSQL의 장점
- 스키마가 없다 (Flexible Schema)
- 데이터 구조를 미리 정의하지 않아도 됨
- 자유롭게 저장 가능
- 읽기 성능이 빠르다
- 데이터를 한 번에 조회 가능
- JOIN이 없음
- 수평 확장(Scale-out)에 유리
- 데이터를 쉽게 여러 서버로 분산 가능
❎ NoSQL의 단점
- 트랜잭션이 제한적
- ACID 보장이 어려움
- 대신 BASE 모델 사용
- 데이터 중복 발생
- 동일 데이터가 여러 곳에 존재
- update 비용 증가
- 여러 데이터를 동시에 수정해야 할 수 있음
- 구조 관리 책임이 개발자에게 있음
- 자유로운 만큼 설계 난이도 증가
📌 NoSQL 예시로 이해하기 (도서관 시스템)
같은 도서관 시스템을 NoSQL로 만든다면
{
"bookTitle": "자료구조",
"authorName": "이윤재",
"borrower": "홍길"
}
‼️저자 이름이 변경된 상황을 생각해보자‼️
NoSQL은 이미 저장된 모든 데이터에 저자 이름이 포함된다.
따라서 모든 데이터를 찾아서 수정해야 하는 번거로움이 발생한다.
🔥핵심적으로
- RDB → 한 번 수정
- NoSQL → 여러 번 수정
그래서 update는 RDB가 유리하다.
📌 read 성능 차이 (배달 앱 예시)
1. RDB
- 음식점 테이블
- 메뉴 테이블
- 리뷰 테이블
조회 시 JOIN이 필요함.
2. NoSQL
{
"restaurantName": "교촌치킨",
"menu": "허니콤보",
"reviews": "맛있어요!"
}
음식점, 메뉴, 리뷰를 한 번에 조회 가능
🔥결과적으로
read는 NoSQL이 유리하다.
📌 확장성 차이 (게임 서버 예시)
1. RDB
- 데이터 간 관계가 복잡
- 서버 분산 어려움
2. NoSQL
- 유저 데이터를 독립적으로 저장
예:
- 서버1: 1~250만 유저
- 서버2: 251~500만 유저
쉽게 분산이 가능하다.
📌 무결성 기준의 차이
1. RDB
RDB는 무결성을 매우 중요하게 여기는 구조이다.
✅주요 무결성 요소
- 개체 무결성
- Primary Key는 NULL 불가, 중복 불가
- 참조 무결성
- Foreign Key로 관계 유지
- 존재하지 않는 값 참조 불가
- 도메인 무결성
- 데이터 타입, 길이, 값 범위 제한
예를 들어서
FOREIGN KEY (user_id) REFERENCES users(id)
이러한 SQL문을 작성했다고 가정했을 때,
잘못된 user_id 입력 자체가 차단된다.
2. NoSQL
NoSQL은 확장성과 성능을 위해 무결성 일부를 포기하거나 완화한다.
✅무결성 방식
- 애플리케이션 레벨에서 직접 관리
- 데이터 중복 허용
- 참조 관계를 강제하지 않음
예를 들어서
{
"user_id": "123",
"user_name": "LEE"
}
user_id가 실제로 존재하는지 DB는 검증하지 않는다.
⭐그래서 언제 무엇을 써야 할까?
✅ RDB가 적합한 경우
- 은행 시스템
- 결제 / 주문 시스템
- 데이터 정확성이 중요한 서비스
- 트랜잭션 필수
✅ NoSQL이 적합한 경우
- SNS
- 채팅 서비스
- 로그 데이터
- 추천 시스템
- 대규모 트래픽 서비스
🔥정리하자면
RDB = 정확성과 일관성
NoSQL = 유연성과 확장성
그리고 가장 중요한 포인트는 이것이다.
❗ “정답은 하나가 아니라, 상황에 맞는 선택이다”
실무에서는 RDB + NoSQL을 함께 사용하는 경우도 매우 많다.
'DB' 카테고리의 다른 글
| 정규화 vs 반정규화 (0) | 2026.03.20 |
|---|---|
| DB 인덱스(Index)란? (0) | 2026.03.20 |
| 트랜잭션(Transaction)과 ACID 원칙 (0) | 2026.03.20 |