
안녕하세요 성조입니다.
MongoDB 개념에 대해 정리를 조금 해보려고 합니다.
MongoDB란?
NoSQL 데이터베이스 중 가장 많이 접해볼 수 있는 데이터베이스로 관계형 데이터베이스(RDBMS)처럼 엑셀 형태의 표(Table)에 데이터를 저장하는 대신 문서(Document) 형태로 데이터들을 저장하는 것이 특징이다.
RDBMS 대비 정렬되지 않고, 흩어진 개념에 가깝다.
MongoDB의 특징
1. 문서 지향적(Document-Oriented)
웹에서 흔히 보는 JSON과 유사한 BSON 형태로 저장하는데 'A 치킨 레시피'가 있다면 이 관련된 데이터가 하나의 문서 안에 모두 모여 있다.
2. 유연한 스키마(Flexible Schema)
기존 SQL 데이터베이스처럼 데이터를 넣기 전에 열(Column)의 타입이나 개수를 미리 엄격하게 정해둘 필요가 없다. 같은 도큐먼트(문서)안에 있는 묶음들도 각자 가지고 있는 데이터 항목이 다를 수 있어서 구조 변경에 매우 자유롭다. 다만, 이게 기하급수적으로 커지는 데이터 단위에서는 정형화 되어 있지 않는 구조라면 오히려 큰 독이 될 특징임을 인지하는 것이 좋다고 생각한다.
3. 뛰어난 확장성(Scalability)
데이터가 기하급수적으로 늘어날 때, 서버의 성능 자체를 높이는 것(Scale-up)보다 여러 대의 저렴한 서버로 데이터를 분산시키는 것(Scale-out, Sharding)에 최적화되어 설계되어 있다. 정형 데이터로 적립해서 나아가는 오토 스케일을 통해 적립해 나아가는 구조가 더 좋을 수 있지만, 저렴한 서버로 이벤트 성에 가까운 값들은 해당 확정성의 덕을 볼 수 있을 것이라 생각된다.
RDBMS와의 용어 비교
Database는 동일하게 불린다.
RDBMS -> Table
MongoDB(NoSQL) -> Collection
공통점이 있는 데이터들의 묶음
RDBMS -> Row
MongoDB(NoSQL) -> Document
개별 데이터 1건(유저 테이블에 있는 사용자 'A'의 정보 전체 값들)
RDBMS -> Column
MongoDB(NoSQL) -> Field
데이터의 세부 속성(이름, 나이, 이메일, 성별 등 세부 속성 값 하나)
MongoDB가 장점이 되는 순간
- 데이터 구조가 자주 변경될 때
-> 서비스 초기 단계나 이벤트 레벨에서 애자일하게 개발해서 스키마 레벨까지 반영하여 실 운영 DB에 올라가기 까지 다양한 시행 착오를 경험할 가능성이 큰 경우
- 비정형/반정형 데이터를 다룰 때
-> 로그 데이터, IoT 센서 데이터, 소셜 미디어 피드처럼 형태가 일정하지 않은 대용량 데이터.
- 다양한 속성을 가진 상품 카탈로그일 때
-> 전자상거래 사이트처럼 상품마다 고유한 스펙들이 달라서 획일화 된 테이블에 데이터들을 담기 어려운 경우
즉, 옷 같은 경우는 컬러, 사이즈가 다양하게 분포되어 항목군을 정돈 보기 어려울 때
그래픽카드 시리즈마다 제품사마다 다른 경우 등이 보여지기 위해 이런 부분에서 포함될 수 있다.
감사합니다.
다음 포스팅에서 뵙겠습니다.
'Database' 카테고리의 다른 글
| [PostgreSQL] WHERE와 조건 연산자 한 스푼 정리하기 (1) | 2026.03.14 |
|---|---|
| [PostgreSQL] 포스트그레스큐엘 기초 정리 (0) | 2026.03.08 |
| [Database] [Oracle] Oracle 19C 버전 설치하기 (0) | 2022.07.17 |
| [Database] 이상 현상(Anomaly)이란? (0) | 2022.04.29 |
| [Database] 정규화(Normalization)란? (0) | 2022.04.28 |