MongoDB 를 공부하기 위해 필요한 기본 용어 및 데이터 예시
이 페이지에서는 MongoDB 를 공부하기 위해 필요한 용어들 및 데이터 예시를 정리한다.
이 페이지는 perplexity 를 통해 필자가 어떤 prompt 를 작성하여 공부하는지를 공유한다. ([] 로 표기)
[MongoDB 를 처음공부 할 때, 알아두어야 할 용어 및 개념들]
MongoDB는 문서 지향(Document-Oriented) NoSQL 데이터베이스로, 기존의 관계형 데이터베이스(RDBMS)와는 다른 구조와 용어를 사용한다. 처음 공부할 때 반드시 알아야 할 주요 용어와 개념을 정리한다.
- Database
여러 개의 컬렉션(Collection)을 담는 물리적 컨테이너이다. 파일 시스템 상에 여러 파일로 저장된다.
- Collection
여러 개의 도큐먼트(Document)로 구성된 그룹이다. RDBMS의 테이블(Table)에 해당한다. 스키마가 고정되어 있지 않아, 같은 컬렉션 내의 도큐먼트 구조가 달라도 무방하다.
- Document
MongoDB의 기본 데이터 단위로, Key-Value 쌍으로 이루어진 데이터 구조이다. JSON 형식과 유사하지만, 실제로는 BSON(Binary JSON) 포맷으로 저장된다. RDBMS의 행(Row)에 해당한다.
- Field (Key)
도큐먼트 내의 데이터 항목(속성)이다. RDBMS의 컬럼(Column)에 해당한다.
-_id (ObjectId)
각 도큐먼트의 고유 식별자(Primary Key) 역할을 하는 필드이다. 기본적으로 12바이트의 ObjectId 타입이 자동 생성되어 유일성을 보장한다.
- BSON
Binary JSON의 약어로, MongoDB에서 데이터를 저장할 때 사용하는 직렬화 포맷이다. JSON보다 더 다양한 데이터 타입을 지원한다.
- Schema-less
MongoDB는 스키마가 고정되어 있지 않으므로, 도큐먼트마다 구조가 다를 수 있다. 필드 추가 및 제거가 자유롭다.
- Sharding
데이터를 여러 서버(Shard)에 분산 저장하여 대용량 데이터 처리를 가능하게 하는 기능이다. 자동 샤딩(Auto-Sharding) 기능을 지원한다.
- Replica Set
데이터의 고가용성과 장애 복구를 위해 동일한 데이터를 여러 서버에 복제하는 기능이다. 하나의 Primary와 여러 Secondary 노드로 구성된다.
mongod / mongos
mongod: MongoDB 데이터베이스 서버 프로세스이다.
mongos: 샤딩 환경에서 라우터 역할을 하며, 클라이언트와 샤드 간의 인터페이스를 담당한다.
Aggregation
여러 도큐먼트의 데이터를 집계(그룹화, 합계, 평균 등)하는 기능이다. SQL의 GROUP BY와 유사한 역할을 한다.
CRUD
Create(생성), Read(조회), Update(수정), Delete(삭제) 작업을 의미한다.
CAP 이론 & BASE
CAP: 일관성(Consistency), 가용성(Availability), 파티션 허용성(Partition Tolerance) 중 두 가지만 보장할 수 있다는 분산 시스템 이론이다.
BASE: Basically Available, Soft state, Eventually consistent의 약자로, 완벽한 일관성보다는 가용성을 우선시하는 NoSQL의 특성을 설명한다.
RDBMS와 MongoDB 용어 비교
RDBMS 용어MongoDB 용어
Database | Database |
Table | Collection |
Row (Tuple) | Document |
Column | Field (Key) |
Primary Key | _id (ObjectId) |
Join | Embedded Document |
기타 개념
-- Embedded Document: 도큐먼트 내에 또 다른 도큐먼트를 중첩해서 저장하는 구조이다. 관계형 DB의 JOIN 대신 사용한다.
-- Index: 쿼리 성능 향상을 위해 인덱스를 생성할 수 있다.
-- Cursor: 쿼리 결과 집합을 순회할 때 사용하는 포인터이다.
MongoDB를 처음 접한다면 위 용어와 개념을 반드시 숙지하는 것이 좋다. 이들은 MongoDB의 기본 작동 원리와 데이터 모델링, 그리고 쿼리 작성의 기초가 된다.
[위의 표를 기준으로 하나의 데이터 예시를 보여줘]
예시: 사용자(User) 데이터
1. RDBMS에서의 데이터 예시
- Table: users
Id | Name | Age | |
1 | 홍길동 | 28 | hong@test.com |
- 각 행(Row)은 하나의 사용자를 나타낸다.
- 각 열(Column)은 속성(필드)을 나타낸다.
- id는 Primary Key 역할을 한다.
2. MongoDB에서의 데이터 예시
- Collection: users
{
"_id": ObjectId("6642f9a2c1e8f5a5b1234567"),
"name": "홍길동",
"age": 28,
"email": "hong@test.com"
}
- 하나의 Document가 하나의 사용자를 나타낸다.
- 각 필드는 Key-Value 쌍으로 저장된다.
- _id 필드는 자동으로 생성되는 고유 식별자이다.
3. 표와 예시 비교
RDBMS 용어MongoDB 용어예시 데이터 (MongoDB)
RDBMS 용어 | MongoDB 용어 | 예시데이터 (MongoDB) |
Database | Database | users 데이터베이스 |
Table | Collection | users 컬렉션 |
Row (Tuple) | Document | { "name": "홍길동", "age": 28, ... } |
Column | Field (Key) | "name": "홍길동" |
Primary Key | _id (ObjectId) | "_id": ObjectId("6642f9a2c1e8f5a5b1234567") |
Join | Embedded Document | { "address": { "city": "서울", "zip": "12345" } } |
이렇게 RDBMS와 MongoDB는 같은 데이터를 서로 다른 구조와 용어로 표현한다.
MongoDB에서는 JSON과 유사한 형태로 데이터를 유연하게 저장할 수 있다는 점이 큰 특징이다.