DB

RDB vs NoSQL, 언제 무엇을 써야 할까?

yj992233 2026. 3. 20. 01:36

✅들어가면서

데이터베이스를 처음 공부하다 보면 한 번쯤 이런 고민을 하게 된다.

“RDB가 좋은 거야? 아니면 NoSQL이 더 좋은 거야?”

결론부터 말하면 둘 중 하나가 무조건 좋은 것은 아니다.
각각의 특징이 다르기 때문에, 상황에 맞게 선택하는 것이 핵심이다.


⭐데이터베이스와 SQL 간단 정리

먼저 기본 개념부터 짚고 넘어가자.

  • Database(DB): 데이터를 저장하는 공간
  • DBMS: 데이터베이스를 관리하는 시스템
  • SQL: RDB에서 데이터를 조회/조작할 때 사용하는 언어

그리고 데이터베이스는 크게 두 가지로 나뉜다.

👉 RDB (관계형 DB)
👉 NoSQL (비관계형 DB)


⭐RDB (Relational Database)란?

RDB는 데이터를 테이블 형태 (행/열) 로 저장하는 방식이다.
엑셀처럼 구조가 딱 정해져 있다고 생각하면 이해하기 쉽다.

가장 중요한 특징은 Schema(스키마) 이다.

  • 어떤 컬럼이 있는지
  • 어떤 타입인지
  • 어떤 제약조건이 있는지

 미리 정의해야 한다.

✅ RDB의 장점

  1. 데이터 무결성 보장
    • Primary Key, Foreign Key로 관계를 명확하게 관리
    • 잘못된 데이터 입력 방지
  2. 중복 최소화 (정규화)
    • 데이터를 여러 테이블로 나눔
    • 동일 데이터는 한 곳에서만 관리
  3. 트랜잭션 지원 (ACID)
    • 데이터의 정확성과 일관성 보장
    • 금융/결제 시스템에 필수

❎ RDB의 단점

  1. 스키마 변경이 어렵다
    • 서비스 요구사항이 바뀌면 구조 수정 필요
  2. JOIN으로 인한 성능 부담
    • 여러 테이블을 합쳐야 데이터 조회 가능
  3. 확장(Scale-out)이 어렵다
    • 서버를 여러 대로 나누는 구조에 불리

📌 RDB 예시로 이해하기 (도서관 시스템)

예를 들어 도서관 시스템을 만든다고 가정해보자.

  • Book (책)
  • Author (저자)
  • Loan (대출)

이런 식으로 데이터를 나눠서 저장한다.

 

‼️저자 이름이 변경된 상황을 생각해보자‼️

 

“이윤재” → “이윤재(개정판)”

 RDB에서는?

  • Author 테이블에서 한 번만 수정하면 끝

이유:

  • 중복 저장이 없기 때문이다

⭐NoSQL이란?

NoSQL은 하나의 DB가 아니라
여러 형태의 비관계형 데이터베이스를 통칭한다.

대표적으로

  • Document (MongoDB)
  • Key-Value (Redis)
  • Graph

가 있다. NoSQL의 핵심 특징은 유연함이다.

✅ NoSQL의 장점

  1. 스키마가 없다 (Flexible Schema)
    • 데이터 구조를 미리 정의하지 않아도 됨
    • 자유롭게 저장 가능
  2. 읽기 성능이 빠르다
    • 데이터를 한 번에 조회 가능
    • JOIN이 없음
  3. 수평 확장(Scale-out)에 유리
    • 데이터를 쉽게 여러 서버로 분산 가능

❎ NoSQL의 단점

  1. 트랜잭션이 제한적
    • ACID 보장이 어려움
    • 대신 BASE 모델 사용
  2. 데이터 중복 발생
    • 동일 데이터가 여러 곳에 존재
  3. update 비용 증가
    • 여러 데이터를 동시에 수정해야 할 수 있음
  4. 구조 관리 책임이 개발자에게 있음
    • 자유로운 만큼 설계 난이도 증가

📌 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