이번에는 몽고 DB에 대해서 무엇인지 알아보도록 하겠습니다.
1. 몽고 DB란?
[몽고 DB의 특징]
도큐먼트 지향 데이터 베이스(document-oriented database)이다. 도큐먼트를 지향하기 때문에, 행 개념(Mysql, Oracle, Mssql) 대신 유연한 모델인 도큐먼트를 사용한다. 내장 도큐먼트와 배열을 허용함으로써 복잡한 계층 관계를 하나의 레코드로 표현한다. 해당 레코드는 매우 친근한 표현을 가지고 있다.
{
"name" : "flambee",
"address" : {
"city" : "seoul"
"street" : "14-44"
},
"like" : ["music", "sushi"]
}
분산 확장이 가능하다. 데이터를 여러 서버에 더 쉽게 분산해 주며, 도큐먼트를 자동으로 재분배하고 사용자 요청을 분배하여 라우팅함으로써 클러스터 내 데이터 양과 부하를 조절할 수 있다. 분산 시스템을 위하여 샤딩 아키텍처를 중요시하고 있다.
인덱싱, 집계, 세션이나 고정 크기 컬렉션, 유효시간 컬렉션, 파일 스토리지를 지원한다.
- 인덱싱으로써는 Unique, Composed, 공간 정보, 전문 인덱싱, 중첩된 도큐먼트, 배열과 같은 계층 구조의 보조 인덱스를 지원한다.
- 집계로써는 데이터 처리 파이프라인 개념을 기반으로 한 집계 프레임워크를 제공한다.
- 고정 크기 컬렉션으로써는 최신 데이터를 유지하기 위하여 사용된다.
- 유효시간 컬렉션으로써 특정 시간에 만료해야하는 데이터를 위하여 사용된다.
- 파일 스토리지로써는 파일을 관리하기 위하여 사용된다.
모든 측면에서 고성능을 유지하기 위해 설계했다. 고성능을 유지하기 위해서 와이어드타이거 스토리지 엔진에 기회적 락을 사용하며 동시성과 처리량을 극대화시켰고, MVCC를 사용하여 일관된 데이터를 보장한다.
두 개의 요청이 서로 들어왔을 때 와이어드타이거 스토리지가 재시도를 하여 적용한다.
60초 간격으로 체크포인트를 만듦으로써 메모리 내에 데이터를 일관성 있게 보이게 되며, 종료되거나 오류가 발생했을 때 체크포인트로 복구를 할 수 있다.
몽고 DB 프로젝트의 주 관심사는 확장성이 높으며 유연하고 빠른, 즉 완전한 기능을 갖춘 데이터 스토리지를 만드는 일이다.
최근부터 몽고 DB 스터디를 시작해서 정리할 곳을 찾다가 찾다가 하여, 다시 블로그에 정리하기로 마음먹어서 짤막하게 정리를 해보았습니다. 다음 시간에는 몽고 DB의 기본 개념에 대해서 글을 써보겠습니다.
[참고자료]
- https://www.mongodb.com/docs/manual/core/wiredtiger/
- 몽고DB 완벽가이드
- https://mongodb.github.io/node-mongodb-native/4.2/interfaces/WiredTigerData.html#LSM
- https://www.mongodb.com/basics/clusters/mongodb-cluster-setup
'MongoDB' 카테고리의 다른 글
[MongoDB] 몽고DB의 인덱스(Index) (0) | 2023.02.04 |
---|---|
[MongoDB] 몽고DB의 기본(Document, Collection, DataBase, _id) (0) | 2023.01.27 |