관계형 데이터베이스(RDBMS)와 비관계형 데이터베이스(NoSQL)는 데이터의 구조, 저장 방식, 활용 방식에 따라 나뉘는 대표적인 두 가지 유형이다. 데이터베이스를 선택할 때는 데이터의 특성과 사용 목적을 가장 먼저 고려해야 한다. 각 DB의 개념, 차이점, 그리고 언제 어떤 DB를 선택해야 할지에 대해 정리해보자.
📌 개념
데이터를 행(Row)과 열(Column)의 테이블 형태로 저장
스키마(정해진 구조)를 기반으로 엄격하게 데이터를 관리
테이블 간 관계(Join) 설정 가능 → 데이터 정합성 보장
🧪 특징
정형화된 데이터 관리에 최적
트랜잭션 처리 및 정합성(ACID)을 중요시
SQL을 이용한 쿼리 사용
✅ 대표적인 관계형 DB
MySQL : 가장 널리 사용되는 오픈소스 RDBMS
PostgreSQL : 확장성과 표준 준수에 강한 RDBMS
Oracle DB : 기업용, 강력한 상업용 DB
MS SQL Server : Microsoft의 관계형 DB
📎 사용 예
쇼핑몰 주문/회원 DB
금융 서비스, ERP 시스템
게시판, 블로그, 관리자 시스템 등
📌 개념
테이블 구조를 따르지 않음
비정형 / 유동적인 데이터를 유연하게 저장 가능
주로 JSON, Key-Value, Document, Column, Graph 기반
🧪 특징
스키마가 자유로워 데이터 구조 변경이 쉬움
수평 확장에 뛰어나 빅데이터/실시간 처리에 강함
ACID보다 가용성과 속도를 중시 (CAP 이론)
📎 사용 예
실시간 채팅 서비스, SNS, 로그 저장
캐싱 시스템, IoT 센서 데이터
구조가 자주 변경되거나 대량의 분산 데이터 처리
✅ NoSQL의 4가지 유형 및 대표 DB
| 유형 | 설명 | 대표 DB |
|---|---|---|
| 📄 Document 기반 | JSON 구조로 데이터 저장 | MongoDB, CouchDB |
| 🔑 Key-Value 기반 | 단순한 Key-Value 쌍 저장 | Redis, DynamoDB |
| 📊 Column 기반 | 대용량 분산 저장, 컬럼 단위 최적화 | Cassandra, HBase |
| 🔗 Graph 기반 | 관계 중심 데이터 저장 | Neo4j, ArangoDB |
| 항목 | 관계형 DB (RDBMS) | 비관계형 DB (NoSQL) |
|---|---|---|
| 데이터 구조 | 테이블 기반 | 문서/키-값/그래프 등 다양 |
| 스키마 | 고정 (사전 정의 필수) | 유동적 (스키마 없음) |
| 관계 설정 | JOIN 등 가능 | 대부분 불가 또는 비효율적 |
| 트랜잭션 | 강력한 ACID 보장 | BASE, 일관성 낮음 |
| 확장성 | 수직 확장 위주 | 수평 확장에 유리 |
| 사용 언어 | SQL | 자체 쿼리 방식 (MongoQL 등) |
| 성능 | 복잡한 관계 처리에 유리 | 대용량 데이터 처리에 유리 |
| 활용 사례 | 금융, 전자상거래, 관리 시스템 | 실시간 로그, SNS, 분산 시스템 |
| 상황 | 추천 DB |
|---|---|
| 데이터 정합성과 보안이 중요한 시스템 | ✅ RDB (MySQL, PostgreSQL 등) |
| 데이터 구조가 자주 바뀌거나 유동적인 경우 | ✅ NoSQL (MongoDB 등) |
| 수평 확장 및 실시간 처리 우선 | ✅ NoSQL |
| 복잡한 쿼리, JOIN이 많은 경우 | ✅ RDB |