MongoDB?
MongoDB는 대표적인 NoSQL 데이터베이스이다. NoSQL 데이터베이스는 전통적인 관계형 데이터베이스보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 제공한다. NoSQL 데이터베이스는 데이터를 분류하고 접근하는 방식에 따라 종류가 다양한데, MongoDB는 데이터를 도큐먼트 형식으로 데이터를 다루는 대표적인 NoSQL 데이터베이스이다.
문서(Document)
- '문서(document)'는 관계형 데이터베이스의 레코드(record)와 개념이 비슷함
- 문서의 데이터 구조는 한 개 이상의 key-value 쌍으루 이루어짐
- 문서는 BSON(바이너리 형태의 JSON) 형태로 저장됨
- 새로운 문서를 만들면 _id 라는 고유값을 자동으로 생성하며, 고유값을 보장함
- 여러 문서가 들어 있는 곳을 컬렉션이라 함.
- MongoDB는 다른 스키마를 가지고 있는 문서들이 한 컬렉션에 공존 할 수 있음
MongoDB 구조
- 서버 하나에 여러개의 데이터베이스를 가질 수 있음
- 각 데이터베이스에는 여러 개의 컬렉션이 있음
- 컬렉션 내부에는 문서들이 들어 있음
![리액트를 다루는 기술 639p](https://velog.velcdn.com/images%2Fwoody%2Fpost%2F9d09fde3-3656-438b-ad85-4dc8fe9cc313%2Fimage.png)
스키마 디자인
- 문서 내부에 또 다른 문서가 위치 할 수 있음. 이를 서브도큐먼트라고 함.
- 서브도큐먼트 또한 일반 문서를 다루는 것처럼 쿼리할 수 있음
- 문서 하나에 최대 16MB만큼 데이터를 넣을 수 있음
- 서브도큐먼트에서 용량을 초과할 가능성이 있다면 컬렉션을 분리시키는 것이 좋음.
{
_id: ObjectId,
title: String,
body: String,
username: String,
createdDate: Date,
commnets: [
{
_id: ObjectId,
text: String,
createdDate: Date
}
]
}
참고
리액트를 다루는 기술
wikipedia-NoSQL