NoSQL과 MongoDB 이해

2025. 10. 21. 09:31DB/NoSQL

NoSQL과 MongoDB 이해

이 글에서는 NoSQL의 개념부터 MongoDB의 구조와 특징, 그리고 BSON과 비정형 데이터까지 한 번에 정리한다.
몽고DB는 단순한 데이터베이스가 아니라, “데이터를 자유롭게 저장한다”는 철학의 구현체다.


❶ NoSQL이란?

NoSQL은 Not Only SQL의 약자로, “SQL만 고집하지 않는다”는 의미다.
전통적인 RDBMS(관계형 데이터베이스)가 가지는 구조적 제약을 벗어나, 더 유연하고 수평 확장에 강한 데이터 저장 방식을 제공한다.

:https://www.mongodb.com/ko-kr/resources/basics/databases/nosql-explained

📌 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를 통해 유연한 스키마 + 높은 확장성 + 빠른 처리를 모두 실현할 수 있다.