2026년 4월 16일 목요일
글 목록
Lv.1 입문MongoDB
10분 읽기Lv.1 입문

MongoDB / DocumentDB가 뭔데? — 10분 가이드

MongoDB / DocumentDB가 뭔데? — 10분 가이드

MongoDB와 AWS DocumentDB의 이름은 자주 들리지만, 둘이 정확히 무엇이고 어떻게 다른지 한 번에 잡기 어렵습니다. 이 글은 관계형 DB 경험은 있지만 문서 지향 NoSQL은 낯선 독자를 위해, Document란 무엇인지부터 MongoDB·DocumentDB의 역할, API 호환의 한계와 선택 기준, Collection·Document·BSON·임베드/참조 모델링까지 약 10분 안에 훑습니다. 과장 없이 일반적인 이해의 틀을 잡는 데 집중했고, 읽은 뒤에는 공식 문서나 로컬 실습으로 넘어갈 때 무엇을 보면 되는지 감을 잡도록 구성했습니다.

RDB는 써 봤는데 MongoDB·DocumentDB는 아직 낯선 분을 위한 큰 그림입니다. 약 10분 안에 개념과 선택 기준을 정리해 보세요.

목차

  1. 들어가며 — "Document"가 뭔가요?
  2. 관계형 DB vs Document DB — 핵심 차이
  3. MongoDB란?
  4. AWS DocumentDB란? (MongoDB API 호환)
  5. MongoDB vs AWS DocumentDB — 뭘 써야 하나?
  6. 기본 개념 훑기 — Collection, Document, BSON
  7. 데이터 모델링 한눈에 — Embed vs Reference
  8. 자주 쓰는 기본 쿼리 치트시트
  9. 언제 Document DB를 쓰면 좋을까?
  10. 마치며 — 10분 요약

1. 들어가며 — "Document"가 뭔가요?

우리가 흔히 아는 데이터베이스(MySQL, PostgreSQL)는 행(Row)과 열(Column) 으로 이루어진 표 형태입니다.

그런데 현실 데이터는 표처럼 딱 떨어지지 않을 때가 많습니다.

예를 들어, 사용자 프로필을 저장한다고 합시다.

  • 어떤 유저는 전화번호가 1개
  • 어떤 유저는 전화번호가 3개
  • 어떤 유저는 아예 없음

관계형 DB에서는 이런 경우 테이블을 따로 만들거나 NULL로 채워야 합니다.

Document DB는 그냥 있는 그대로 저장합니다.

{
  "name": "홍길동",
  "phones": ["010-1234-5678", "02-999-0000"],
  "address": {
    "city": "서울",
    "district": "강남구"
  }
}

이게 "Document"입니다. JSON처럼 생겼죠.

2. 관계형 DB vs Document DB — 핵심 차이

비교 항목관계형 DB (MySQL 등)Document DB (MongoDB 등)
데이터 구조고정된 스키마 (표)유연한 스키마 (JSON/BSON)
관계 표현JOIN으로 연결중첩(Embed) 또는 참조(Reference)
확장 방식일반적으로 수직 확장(Scale-up) 중심으로 설계되는 경우가 많음수평 확장(Scale-out)에 친숙한 사례가 많음
트랜잭션강한 ACID 지원지원하나 설계·버전·토폴로지에 따라 범위를 확인해야 함1
적합한 데이터정형 데이터, 복잡한 관계비정형에 가까운 데이터, 빠른 변화

참고: PostgreSQL·MySQL도 읽기 복제, 샤딩 솔루션 등으로 수평 확장을 구성할 수 있습니다. 위 표는 흔히 이야기되는 성향을 빠르게 비교한 것이며, 제품·버전·아키텍처마다 달라집니다.

핵심 한 줄: 데이터 구조가 자주 바뀌거나, 중첩된 데이터가 많다면 Document DB가 편한 경우가 많습니다.

3. MongoDB란?

MongoDB2009년에 오픈소스로 공개된 Document DB의 대표 주자입니다(회사 MongoDB의 전신 10gen은 2007년 창립).

핵심 특징

  • 스키마 유연성: 컬럼을 미리 엄격히 정의하지 않아도 되는 편이라, 초기 프로토타입에 잘 맞습니다.
  • BSON: JSON과 유사한 문서를 바이너리 형태로 다룹니다. 타입 표현·파싱 측면의 장점이 있지만, 실제 응답 속도와 비용은 인덱스·쿼리 패턴·네트워크·스토리지 조건에 더 크게 좌우됩니다.
  • 수평 확장(Sharding): 데이터가 커지면 샤딩 등으로 서버를 늘리는 전략을 쓸 수 있습니다.
  • Replica Set: 복제를 통한 고가용성 구성이 일반적입니다.
  • 쿼리·집계: 집계 파이프라인, 지리 검색 등 풍부한 기능을 제공합니다(버전·배포에 따라 다름). Atlas Search 같은 전문 검색은 MongoDB Atlas 전용입니다.

어디서 실행하나?

방식설명
로컬 설치직접 서버에 설치
MongoDB AtlasMongoDB 공식 클라우드 서비스 (AWS/GCP/Azure)
Docker컨테이너로 간편하게 실행

4. AWS DocumentDB란? (MongoDB API 호환)

AWS DocumentDB는 Amazon이 제공하는 완전관리형 Document 데이터베이스 서비스입니다.

MongoDB 호환 API를 목표로 설계되어, 애플리케이션에서는 MongoDB 드라이버와 비슷한 방식으로 접근할 수 있는 경우가 많습니다. 다만 MongoDB 서버와 100% 동일한 기능·버전 호환을 보장하는 제품은 아닙니다. 운영 환경으로 옮길 때는 기능별로 동작을 검증하는 편이 안전합니다(집계 연산자, 특정 인덱스·검색 기능 등은 제한되거나 다를 수 있습니다).

핵심 특징

  • 완전관리형(Managed): 패치, 백업, 복구를 AWS가 담당하는 형태로 제공됩니다.
  • MongoDB 호환 API: 기존 MongoDB 기반 코드를 이식하기 쉽도록 맞춰져 있으나, 호환 범위는 문서로 확인해야 합니다.
  • 스토리지·가용성: 스토리지 사본을 3개 가용 영역(AZ) 에 걸쳐 6개로 유지하는 모델로 설명됩니다(How It Works — Amazon DocumentDB).
  • VPC 내부 운영: 네트워크 보안을 AWS 네트워크 모델에 맞게 잡기 쉬운 편입니다.

5. MongoDB vs AWS DocumentDB — 뭘 써야 하나?

비교 항목MongoDB (예: Atlas)AWS DocumentDB
운영 주체MongoDB Inc.Amazon Web Services
기능·버전MongoDB 제품 기준MongoDB 호환 — 최신 기능이 항상 동일하게 오지는 않을 수 있음
멀티 클라우드여러 클라우드 옵션AWS 안에서 사용
비용요금 모델·인스턴스에 따름인스턴스·스토리지·I/O 등 AWS 요금 체계
운영 부담관리형 서비스로 낮출 수 있음AWS 생태계에 묶인 관리형 운영에 유리

언제 뭘 쓸까?

  • AWS 인프라에 집중하고, RDS·VPC·IAM 등과 맞춘 관리형 운영을 원한다 → AWS DocumentDB 후보
  • MongoDB 최신 기능·도구(예: Atlas 전용 기능) 이 필요하거나 멀티 클라우드를 열어 두고 싶다 → MongoDB Atlas공식 MongoDB 쪽을 검토
  • 사이드 프로젝트·로컬 개발 → MongoDB Community Edition(또는 Docker 이미지)로 시작하기 쉽습니다

6. 기본 개념 훑기 — Collection, Document, BSON

용어 대응표

관계형 DBDocument DB
DatabaseDatabase
TableCollection
RowDocument
ColumnField
Primary Key_id (컬렉션 내 고유, 기본값은 보통 ObjectId)
JOINEmbed / $lookup

Document 예시

{
  "_id": "64a1f2e3b5c6d7e8f9a0b1c2",
  "title": "MongoDB 10분 가이드",
  "author": {
    "name": "홍길동",
    "email": "hong@example.com"
  },
  "tags": ["database", "nosql", "mongodb"],
  "views": 1024,
  "published": true,
  "createdAt": "2024-07-01T09:00:00Z"
}

중첩 객체(author)와 배열(tags)이 하나의 Document 안에 자연스럽게 들어갑니다.

BSON은 이런 문서를 저장·전송할 때 쓰는 포맷으로 이해하면 됩니다. "BSON이라서 무조건 빠르다"보다는, 스키마와 쿼리를 어떻게 잡았는지가 체감 성능을 가른다고 보는 편이 안전합니다.

구조 한눈에 보기

Database — Collection — Document, Embed와 Reference

위 도식은 Database 아래에 Collection이 붙고, Document가 모이며, Embed·Reference 전략이 어디에 대응하는지 정리한 것입니다.

7. 데이터 모델링 한눈에 — Embed vs Reference

문서 DB에서 관계를 표현할 때 자주 쓰는 판단 기준입니다.

  • Embed(중첩): 함께 조회·같이 수정되는 데이터가 많고, 한 문서 안에 넣어도 크기·일관성 문제가 없을 때 유리합니다.
  • Reference(참조): 엔티티가 독립적으로 자주 바뀌거나, 여러 문서에서 같은 데이터를 참조해 중복이 폭발할 때는 별도 컬렉션에 두고 _id로 연결하는 편이 낫습니다.

실무에서는 둘을 섞어 쓰는 경우가 많고, 조회 패턴(한 번에 어떤 화면에 무엇을 보여줄지) 을 먼저 정리한 뒤 모델을 잡는 것이 좋습니다.

8. 자주 쓰는 기본 쿼리 치트시트

연결 (Node.js 예시)

const { MongoClient } = require('mongodb');

async function main() {
  const client = new MongoClient('mongodb://localhost:27017');
  try {
    await client.connect();
    const db = client.db('myDatabase');
    const col = db.collection('articles');
    // 여기서 CRUD를 실행합니다.
  } finally {
    await client.close();
  }
}

main().catch(console.error);

CRUD 기본

const col = db.collection('articles');

// Create — 문서 삽입
await col.insertOne({ title: '첫 번째 글', views: 0 });

// Read — 조회
const doc = await col.findOne({ title: '첫 번째 글' });
const docs = await col.find({ published: true }).toArray();

// Update — 수정
await col.updateOne(
  { title: '첫 번째 글' },
  { $set: { views: 100 } }
);

// Delete — 삭제
await col.deleteOne({ title: '첫 번째 글' });

자주 쓰는 쿼리 패턴

// 조건 필터
await col.find({ views: { $gte: 100 } }).toArray(); // views >= 100
await col.find({ tags: { $in: ['nosql'] } }).toArray(); // tags 배열에 "nosql" 포함

// 정렬 & 페이징
await col.find({}).sort({ createdAt: -1 }).skip(0).limit(10).toArray();

// 집계 (Aggregation)
await col.aggregate([
  { $match: { published: true } },
  { $group: { _id: '$author.name', total: { $sum: 1 } } },
  { $sort: { total: -1 } },
]).toArray();

9. 언제 Document DB를 쓰면 좋을까?

적합한 경우

  • 스키마가 자주 바뀌는 서비스 — 스타트업 초기, 빠른 기능 변경
  • 중첩 구조 데이터 — 상품 옵션, 유저 프로필, 설정값 등
  • 대용량 읽기 중심 — 콘텐츠 플랫폼, 카탈로그 등(설계·인덱스 전제)
  • 이벤트 로그·IoT 등 반복적 삽입·집계 패턴(요구사항에 맞을 때)

신중히 고려할 경우

  • 복잡한 다중 테이블 JOIN이 항상 중심인 도메인 모델
  • 강한 트랜잭션·일관성이 최우선인 금융·결제 코어(요구 수준을 DB가 충족하는지 검증 필요)
  • 데이터 구조가 매우 고정적이고 정형화되어 RDB가 더 단순한 경우

10. 마치며 — 10분 요약

키워드한 줄 정리
Document DBJSON/BSON 형태의 유연한 문서를 저장하는 NoSQL 계열
MongoDBDocument DB를 대표하는 오픈소스 제품·생태계
AWS DocumentDBAWS의 관리형 MongoDB 호환 API 서비스 — 기능은 문서로 검증
Collection / DocumentTable·Row에 대응하는 개념으로 이해하면 쉬움
쓸 때스키마 변화·중첩 데이터·수평 확장 시나리오를 검토할 때
안 쓸 때복잡한 관계·엄격한 트랜잭션이 핵심인지 먼저 판단

다음 단계로

참고 (공식 문서)

Footnotes

  1. MongoDB의 멀티 문서 ACID 트랜잭션은 4.0에서 Replica Set, 4.2에서 Sharded Cluster까지 확대되었습니다. 세부 조건은 Transactions — MongoDB Manual을 확인하세요.

이 글 공유하기

같은 주제 더 보기·대표 시리즈로 시작

English

최신 글을 RSS로 받아보세요

뉴스레터 오픈 전에는 RSS로 먼저 업데이트를 받아보실 수 있습니다.

RSS 구독 안내 보기