RDB와 NoSQL 차이: 언제 무엇을 써야 할까
RDB와 NoSQL 차이란 무엇인가
RDB와 NoSQL 차이를 한 문장으로 정리하면, RDB(관계형 데이터베이스)는 정해진 스키마의 표(table) 구조에 데이터를 저장하고 SQL과 강한 일관성을 제공하며, NoSQL은 유연한 스키마와 수평 확장에 강점을 둔 다양한 비관계형 저장소들을 통칭합니다. 어느 한쪽이 항상 우월한 것이 아니라, 데이터 형태와 요구사항에 따라 선택이 달라집니다. 이 글에서는 RDB와 NoSQL의 차이를 구조적으로 정리하고 선택 기준을 제시합니다.
RDB(관계형 데이터베이스)
RDB는 MySQL, PostgreSQL, Oracle, SQL Server 등이 대표적입니다. 데이터를 행과 열로 된 테이블에 저장하고, 외래키로 테이블 간 관계를 맺으며, 트랜잭션의 ACID를 보장합니다. 스키마(컬럼 구조)를 미리 정의해야 하므로 데이터가 규칙적이고, 무결성이 중요한 도메인(주문, 결제, 회계)에 강합니다.
-- RDB: 스키마를 먼저 정의
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE
);
SELECT name FROM users WHERE email = '[email protected]';NoSQL의 종류
NoSQL은 단일 기술이 아니라 여러 유형의 묶음입니다.
- 문서(Document): MongoDB 등. JSON 형태의 문서를 저장하며 스키마가 유연합니다.
- 키-값(Key-Value): Redis 등. 단순 키로 값을 빠르게 읽고 씁니다. 캐시에 자주 쓰입니다.
- 컬럼 패밀리(Wide-Column): Cassandra 등. 대량 쓰기와 수평 확장에 강합니다.
- 그래프(Graph): Neo4j 등. 노드와 관계를 다루는 데 특화됩니다.
// 문서형(NoSQL) 예시: 문서마다 구조가 달라도 됨
{
"_id": 1,
"name": "김철수",
"address": { "city": "서울", "zip": "04524" },
"tags": ["vip", "newsletter"]
}RDB vs NoSQL 비교표
| 구분 | RDB | NoSQL |
|---|---|---|
| 데이터 모델 | 테이블(행·열) | 문서·키값·컬럼·그래프 |
| 스키마 | 고정(사전 정의) | 유연(동적) |
| 관계/조인 | 강함(JOIN, FK) | 제한적 |
| 확장 방식 | 주로 수직 확장 | 수평 확장에 강함 |
| 일관성 | 강한 일관성(ACID) | 유연(BASE, 최종 일관성) |
| 질의 언어 | 표준 SQL | 제품별 상이 |
언제 무엇을 쓸까
다음 경우에는 RDB가 적합합니다. 데이터 구조가 명확하고 관계가 많으며(회원·주문·상품), 트랜잭션 정합성이 중요하고(결제, 재고), 복잡한 조회·집계를 SQL로 자주 수행해야 할 때입니다.
다음 경우에는 NoSQL이 적합합니다. 스키마가 자주 바뀌거나 정형화되지 않은 데이터(로그, 사용자 활동, 채팅), 읽기·쓰기 트래픽이 매우 커서 수평 확장이 필요할 때, 캐시처럼 초저지연이 필요할 때(Redis), 관계 탐색이 핵심일 때(그래프)입니다.
실무에서는 둘을 함께 쓰는 경우도 많습니다. 핵심 거래 데이터는 RDB에, 세션·캐시는 Redis에, 검색은 별도 엔진에 두는 식의 폴리글랏 퍼시스턴스(polyglot persistence)가 일반적입니다.
실전 팁
입문 단계에서는 RDB를 먼저 탄탄히 익히기를 권합니다. SQL과 정규화, 트랜잭션은 어떤 백엔드 직무에서도 기본기로 요구되며, NoSQL을 도입하더라도 이 기초가 판단의 근거가 됩니다. "트래픽이 많을 것 같다"는 막연한 이유로 처음부터 NoSQL을 고르기보다, 실제 데이터 형태와 접근 패턴을 보고 결정하세요.
흔한 오해
1. "NoSQL이 항상 더 빠르다"는 오해. NoSQL은 특정 접근 패턴(단순 키 조회, 대량 쓰기)에서 빠를 뿐입니다. 복잡한 조인·집계는 오히려 RDB가 유리하거나, NoSQL에서는 애플리케이션이 직접 처리해야 해 더 번거롭습니다.
2. "NoSQL은 스키마가 없다"는 오해. 강제 스키마가 없을 뿐, 애플리케이션이 암묵적 구조를 책임집니다. 구조가 제멋대로면 데이터 품질 관리가 더 어려워집니다.
자주 묻는 질문
Q1. NoSQL은 트랜잭션을 못 쓰나요?
아닙니다. 최근 MongoDB 등 여러 NoSQL이 다중 문서 트랜잭션을 지원합니다. 다만 RDB의 ACID만큼 폭넓거나 저렴하지 않을 수 있어, 일관성이 핵심이면 RDB가 여전히 유리합니다.
Q2. 수직 확장과 수평 확장의 차이는?
수직 확장(scale-up)은 한 서버의 성능(CPU·메모리)을 키우는 것이고, 수평 확장(scale-out)은 서버 대수를 늘려 부하를 분산하는 것입니다. NoSQL은 수평 확장에 구조적으로 유리합니다.
Q3. 처음 프로젝트엔 무엇을 추천하나요?
대부분의 일반적인 웹 서비스는 PostgreSQL이나 MySQL 같은 RDB로 시작하는 것을 권합니다. 검증되었고 자료가 풍부하며, 필요해지면 캐시·검색 등 특화 저장소를 점진적으로 추가하면 됩니다.