NoSQL이란?
NoSQL은 “Not Only SQL”의 줄임말로,
전통적인 관계형 데이터베이스(RDBMS)와는 달리,
테이블 구조 없이 다양한 형태의 데이터를 유연하게 저장할 수 있는 데이터베이스이다.
→ 즉, NoSQL은 "SQL이 필요 없다는 의미"가 아니라
"SQL뿐 아니라 더 다양한 데이터 구조를 지원한다"는 뜻이다.
NoSQL은 왜 생겼을까?
기존의 SQL 기반 관계형 DB는 다음과 같은 한계를 가지고 있었다.
고정된 스키마 → 데이터 구조가 바뀌면 테이블 설계도 바꿔야 함
수직 확장(Scale-up) 위주 → 서버 성능에 의존
대량의 비정형 데이터 (SNS, 로그, 센서 데이터 등) 처리에 어려움
실시간성 처리 요구 증가
→ 이를 해결하기 위해 유연한 구조 + 수평 확장 + 고성능 처리를 지원하는
NoSQL DB가 등장하게 됨.
NoSQL의 특징
| 특징 | 설명 | 
| 스키마 없음 | 테이블 정의 없이 자유롭게 구조 변경 가능 | 
| 유연한 구조 | JSON, 키-값, 그래프 등 다양한 형식 지원 | 
| 수평 확장 용이 | 서버 여러 대로 분산 저장 및 처리 가능 | 
| 실시간 처리 강점 | 캐시, 조회, 쓰기 속도 매우 빠름 | 
| 다양한 데이터 유형 처리 | 정형/비정형/반정형 모두 가능 | 
NoSQL의 데이터 저장 방식 유형
NoSQL은 내부 구조에 따라 아래처럼 여러 형태로 분류됨.
| 유형 | 설명 | 대표 DB | 
| 문서형(Document) | JSON 형식 문서 단위 저장 | MongoDB, CouchDB | 
| 키-값형(Key-Value) | 단순한 키와 값 쌍 저장 | Redis, DynamoDB | 
| 컬럼형(Column-Family) | 열 기반 저장 (대규모 분석에 유리) | Cassandra, HBase | 
| 그래프형(Graph) | 노드-간 관계 중심 저장 | Neo4j, Amazon Neptune | 
예시: MongoDB (문서형 NoSQL)
{
"user_id": 1,
"name": "홍길동",
"email": "hong@test.com",
"orders": [
{ "id": 101, "total": 50000 },
{ "id": 102, "total": 30000 }
]
}
하나의 문서에 사용자 정보와 주문 내역을 중첩 구조로 저장
RDBMS에서는 JOIN이 필요한 구조도 NoSQL에서는 한 문서로 해결 가능
NoSQL은 언제 사용할까?
| 상황 | NoSQL 적합 여부 | 
| 데이터 구조가 자주 바뀌는 경우 | ✔️ 매우 적합 | 
| 실시간 읽기/쓰기 성능이 중요한 경우 | ✔️ | 
| 대용량 데이터 분산 저장 | ✔️ | 
| 캐시/세션/로그 저장 | ✔️ | 
| 관계형 연산(JOIN 등)이 중요한 경우 | ❌ 부적합 | 
| 데이터 정합성(ACID)이 매우 중요한 경우 | ❌ SQL 권장 | 
NoSQL과 SQL의 차이 한눈에 보기
| 항목 | SQL (RDBMS) | NoSQL | 
| 구조 | 테이블 기반 | 문서, 키-값 등 | 
| 스키마 | 고정 | 유연하거나 없음 | 
| 확장성 | 수직 확장 | 수평 확장 | 
| 트랜잭션 | ACID 보장 | BASE 모델 (일관성 낮음) | 
| 관계 처리 | JOIN 가능 | 대부분 불가능 | 
| 사용 예 | ERP, 회계, 금융 | SNS, 캐시, 로그, IoT 등 | 
마무리 요약
NoSQL은 정형화된 테이블 구조 없이,
유연한 방식으로 데이터를 저장할 수 있는 확장성과 성능 중심의 데이터베이스이다.
정합성이 중요한 전통 시스템에는 SQL,
빠른 처리와 유연성이 중요한 실시간 서비스에는 NoSQL을 선택하는 것이 일반적이다.
'IT > DB' 카테고리의 다른 글
| Redis란? 개념, 자료구조, 활용 이유, 장단점까지 한 번에 정리! (4) | 2025.07.24 | 
|---|---|
| [Oracle] 오라클 테이블 복사, 데이터 복사 (0) | 2023.03.14 | 
| [Oracle] sqlDeveloper 대체변수 '&' 입력 (0) | 2018.01.15 | 
| SQL / DDL / DML / DCL 이란 (0) | 2018.01.09 | 
| DBCP (DataBase Connection Pool)와 JDBC (Java DataBase Connectivity) (0) | 2017.12.20 |