2025. 10. 21. 09:31ㆍDB/NoSQL
NoSQL과 MongoDB 이해
이 글에서는 NoSQL의 개념부터 MongoDB의 구조와 특징, 그리고 BSON과 비정형 데이터까지 한 번에 정리한다.
몽고DB는 단순한 데이터베이스가 아니라, “데이터를 자유롭게 저장한다”는 철학의 구현체다.
❶ NoSQL이란?
NoSQL은 Not Only SQL의 약자로, “SQL만 고집하지 않는다”는 의미다.
전통적인 RDBMS(관계형 데이터베이스)가 가지는 구조적 제약을 벗어나, 더 유연하고 수평 확장에 강한 데이터 저장 방식을 제공한다.

📌 RDBMS와 NoSQL의 차이
- RDBMS: 테이블, 행, 열 기반의 정형 데이터 구조
- NoSQL: 문서형, 키-값형, 컬럼형, 그래프형 등 다양한 구조 지원
- 대표 NoSQL DB: MongoDB(문서형), Redis(키-값형), Cassandra(컬럼형), Neo4j(그래프형)

MongoDB도 집계 파이프라인의 $graphLookup 단계를 사용하여 그래프탐색기능을 제공한다고한다.
❷ MongoDB 기본 개념
MongoDB는 NoSQL 중 문서형(Document-Oriented) 데이터베이스다.
데이터를 JSON과 유사한 BSON(Binary JSON) 형태로 저장하며, RDB의 “테이블” 대신 “컬렉션(Collection)”을 사용한다.
{
"name": "박진우",
"age": 26,
"skills": ["Java", "Spring", "MySQL"],
"address": { "city": "Seoul", "zip": "12345" }
}
각 문서(document)는 서로 다른 필드를 가져도 되며, 스키마 변경이 자유롭다.
즉, 정형화되지 않은 데이터(비정형 데이터)를 손쉽게 다룰 수 있다.
❸ MongoDB의 $ 연산자
MongoDB 쿼리에서 $는 **연산자(operator)**를 뜻한다.
즉, 단순한 값이 아니라 특정한 명령을 수행하라는 의미다.
// age가 20보다 큰 사용자를 찾는 쿼리
db.users.find({ age: { $gt: 20 } })
여기서 $gt는 “greater than”의 약자다.
이외에도 다양한 연산자가 존재한다:
| 연산자 | 의미 | 예시 |
|---|---|---|
$eq |
같다 | { age: { $eq: 25 } } |
$ne |
같지 않다 | { name: { $ne: "진우" } } |
$gt |
크다 | { age: { $gt: 20 } } |
$lt |
작다 | { age: { $lt: 30 } } |
$in |
포함된다 | { city: { $in: ["Seoul", "Busan"] } } |
$set |
값 수정 | { $set: { age: 27 } } |
$push |
배열에 값 추가 | { $push: { skills: "Spring" } } |
$inc |
숫자 증가 | { $inc: { score: 1 } } |
❹ BSON(Binary JSON)이란?
MongoDB는 데이터를 단순한 JSON이 아닌 BSON 형태로 저장한다.
BSON은 JSON보다 빠르고, 데이터 타입이 풍부한 바이너리 포맷이다.
📌 JSON vs BSON 비교
| 구분 | JSON | BSON |
|---|---|---|
| 형식 | 텍스트 기반 | 이진(Binary) 기반 |
| 지원 타입 | String, Number, Boolean 등 | Date, ObjectId, Binary 등 추가 지원 |
| 속도 | 파싱 느림 | 빠른 처리 속도 |
| 공간 효율 | 낭비 많음 | 길이 정보 포함, 효율적 저장 |
예를 들어 JSON은 사람이 읽기 쉬운 텍스트지만, BSON은 다음처럼 이진 형태로 변환되어 저장된다.
\x16\x00\x00\x00\x02name\x00\x04\x00\x00\x00진우\x00\x10age\x00\x1A\x00\x00\x00\x00
이진 포맷 덕분에 MongoDB는 데이터를 더 빠르고 정확하게 처리할 수 있다.
❺ 비정형 데이터란?
비정형 데이터(unstructured data)는 고정된 스키마가 없는 데이터를 뜻한다.
즉, RDB처럼 테이블 구조를 미리 정의하지 않아도 된다.
{ "timestamp": "2025-10-21", "event": "login" }
{ "timestamp": "2025-10-21", "user": "jinwoo", "action": "upload", "file": "resume.pdf" }
위처럼 각 문서의 구조가 제각각이라면, RDB에 넣기 어렵지만 MongoDB에서는 자연스럽게 저장된다.
이런 데이터를 바로 비정형 데이터라고 부른다.
| 데이터 유형 | 설명 | 예시 | 저장에 적합한 DB |
|---|---|---|---|
| 정형 데이터 | 구조가 고정됨 | 고객 DB, 매출 내역 | RDB (MySQL) |
| 반정형 데이터 | 필드가 유동적 | JSON, XML | NoSQL |
| 비정형 데이터 | 형태가 자유로움 | 로그, 이미지, 채팅 | MongoDB 등 |
❼ NoSQL과 스케일 업·아웃의 관계
NoSQL은 단순히 SQL을 사용하지 않는 데이터베이스가 아니라, 확장성(Scalability) 문제를 해결하기 위해 등장했다.
기존의 RDBMS가 스케일 업(Scale-Up) 중심이었다면, NoSQL은 스케일 아웃(Scale-Out) 구조에 최적화되어 있다.
① RDBMS의 스케일 업 한계
RDBMS(MySQL, Oracle 등)는 더 많은 데이터를 처리하기 위해 CPU, 메모리, 디스크를 늘리는 스케일 업 방식을 사용한다.
하지만 이런 방식에는 한계가 있다:
- 하드웨어를 무한정 업그레이드할 수 없다.
- 비용이 급격히 증가한다.
- 한 서버에 장애가 생기면 전체 서비스에 영향이 간다.

② NoSQL의 스케일 아웃 구조
NoSQL은 반대로, 데이터를 여러 서버에 분산 저장해 수평 확장(Scale-Out)이 가능하다.
즉, 서버를 추가하는 것만으로도 데이터 저장과 요청 처리를 확장할 수 있다.
MongoDB는 이런 구조를 위해 Sharding(샤딩) 기술을 사용한다. 데이터를 여러 서버에 나누어 저장하고, 각 서버가 서로 다른 범위를 담당한다.
서버1 ─ 사용자 데이터 1~100만
서버2 ─ 사용자 데이터 100만~200만
서버3 ─ 사용자 데이터 200만~300만
이 구조 덕분에 트래픽이 늘어나도 단순히 서버를 한 대 추가하면 된다. 즉, 무한에 가까운 확장성을 확보할 수 있다.

③ 핵심 비교
| 구분 | RDBMS | NoSQL |
|---|---|---|
| 확장 방식 | 스케일 업 (Scale-Up) | 스케일 아웃 (Scale-Out) |
| 데이터 구조 | 정형(테이블 중심) | 비정형/유연한 스키마 |
| 확장 한계 | 하드웨어 한계 존재 | 서버 추가로 무한 확장 가능 |
| 대표 기술 | MySQL, Oracle | MongoDB, Cassandra, Redis |
| 적합한 환경 | 트랜잭션 중심 시스템 | 대용량 데이터·분산처리 환경 |
④ 요약
NoSQL은 RDBMS의 스케일 업 한계를 극복하고, 분산형 스케일 아웃 구조를 통해 대용량 데이터를 효율적으로 처리하기 위해 등장했다.
MongoDB는 이러한 스케일 아웃을 대표적으로 구현한 NoSQL DB로, Sharding(샤딩)과 Replica Set(복제) 기능으로 확장성과 안정성을 동시에 확보한다.
❽ 최종 정리
- NoSQL은 RDBMS의 구조적·확장성 한계를 해결하기 위해 등장한 새로운 패러다임이다.
- MongoDB는 문서 기반 저장 방식과 자유로운 스키마 구조를 제공한다.
- BSON은 JSON보다 효율적인 이진 포맷으로 빠른 데이터 처리 가능.
- $ 연산자는 MongoDB 쿼리에서 조건, 수정, 검색을 수행하는 핵심 문법.
- 비정형 데이터는 형태가 일정하지 않은 데이터로, NoSQL이 가장 유리하다.
- 스케일 아웃은 NoSQL이 가진 최대 강점으로, 서버를 분산시켜 확장성과 안정성을 높인다.
🟠 요약 문장:
NoSQL은 스케일 아웃 기반의 분산형 데이터베이스로, MongoDB를 통해 유연한 스키마 + 높은 확장성 + 빠른 처리를 모두 실현할 수 있다.
'DB > NoSQL' 카테고리의 다른 글
| [LG U+ 유레카 3기] MongoDB 기본 CRUD 실습 (0) | 2025.10.21 |
|---|---|
| [LG U+ 유레카 3기]MongoDB Compass CRUD 실습 정리 (0) | 2025.10.21 |