관계형 데이터베이스(RDB)와 NoSQL 데이터베이스는 구조, 목적, 사용 환경에서 큰 차이가 있어요.
아래에 비교표와 함께 자세히 설명드릴게요.
1. 관계형 데이터베이스(RDB, Relational Database)
구조 |
테이블 기반(행과 열로 구성) |
스키마 |
고정된 스키마 필요 (사전에 구조 정의) |
데이터 형식 |
정형 데이터(숫자, 문자열 등) |
확장성 |
수직적 확장(서버 성능 증가) 중심 |
쿼리 언어 |
SQL 사용 |
정합성 |
트랜잭션(ACID) 보장 → 데이터 무결성 보장 |
예시 |
MySQL, PostgreSQL, Oracle, SQL Server 등 |
적합한 사례 |
전통적인 업무 시스템(ERP, 금융, 인사 등) |
2. NoSQL (Not Only SQL)
구조 |
테이블이 아닌 유연한 구조 (문서, 키-값, 그래프, 컬럼형 등 다양) |
스키마 |
스키마가 유동적이거나 없음 (비정형 데이터 수용) |
데이터 형식 |
반정형/비정형 데이터 (JSON, XML 등 포함) |
확장성 |
수평적 확장(서버 여러 대로 확장) 용이 |
쿼리 언어 |
SQL 대신 각 DB 고유의 쿼리 방식 |
정합성 |
일부는 CAP 이론 기반으로 일관성보다 가용성 중시 |
예시 |
MongoDB, Cassandra, Redis, Neo4j 등 |
적합한 사례 |
실시간 로그 분석, 빅데이터, IoT, SNS 등 빠른 확장성 필요할 때 |
3. 핵심 차이 요약
구분 |
관계형 DB |
NoSQL DB |
형태 |
테이블 |
문서, 키-값, 그래프 등 다양 |
스키마 |
고정 |
유연하거나 없음 |
확장성 |
수직적 |
수평적 (빅데이터에 유리) |
일관성 |
ACID 보장 |
BASE 모델 등 다양한 선택지 |
사용 용도 |
정형 데이터, 전통적 시스템 |
비정형 데이터, 대규모 서비스 |
4. 예시 비교 (MongoDB vs MySQL)
SELECT * FROM users WHERE name = 'hote';
db.users.find({ name: 'Jinseong' });
5. 어떤 걸 선택해야 할까?
트랜잭션이 중요하다 (은행, 회계 등) |
관계형 DB |
빠르게 변화하는 대용량 데이터를 다룬다 (SNS, IoT, 로그 등) |
NoSQL |
데이터 구조가 유동적이고 자주 바뀐다 |
NoSQL |
고정된 구조와 복잡한 JOIN이 필요하다 |
관계형 DB |