아키텍처
초보자 입장에서 바라보는 아키텍처이다.
1) 프로그래머는 프로그래밍 언어를 사용하여 개발을 한다.
2) 이 코드는 MongoDB Driver 를 거쳐 컴파일 되고 MongoDB 를 사용할 수 있다.
3) 네트워크를 통해 MongoDB 요청을 전달한다.
4) MongoDB 의 쿼리프로세서, 샤드 매니저 등등은 이 데이터가 어디에 위치하는지 쿼리는 괜찮은지 유무를 파악한다.
5) 모든게 통과되면 스토리지엔진 API 를 통해 데이터를 디스크로부터 읽어들인다.
스토리지 엔진
가장 하위에 위치한 MMAPv1 과 WiredTiger 등을 스토리지 엔진이라고 하며
디스크에 영구적으로 기록하거나 다시 읽어와서 메모리에 적재하는 역할을 담당한다.
MySQL 서버와 같이 다양한 스토리지 엔진을 사용할 수 있도록 플러그인 형태로 되어있지만
MongoDB 는 MySQL 과 달리 하나의 인스턴스에서 하나의 스토리지만 사용할 수 있다.
다만 하나의 클러스터에서 서로 다른 노드(=인스턴스가 다른)는 서로 다른 스토리지를 사용해도 무방하다.
참고로 제일많이 사용되는 엔진은 WiredTiger 이다.
스토리지 엔진 종류
위에서 설명한 거와 같이 MongoDB 는 다양한 스토리지 엔진을 사용할 수 있다.
다만 사용자들이 실행하는 쿼리는 스토리지 엔진과 직접적인 연관은 없기에
MMAPv1 에서 WiredTiger 로 엔진을 변경하더라도 응용 프로그램은 거의 변경하지 않아도 된다.
MMAPv1
MongoDB 가 처음 출시됐을 때부터 사용되던 스토리지 엔진이다.
단점이 명확하여 현재는 대부분 WiredTiger 를 사용한다.
WiredTiger
MongoDB 3.0 부터 도입된 새로운 스토리지 엔진이다.
In-Memory
WiredTiger 스토리지 엔진을 변형하여 데이터를 디스크에 기록하지 않고 메모리에만 보관하는 스토리지 엔진이다.
RocksDB
페이스북에서 LevelDB 를 커스터마이징하여 개선한 스토리지 엔진이다.
TokuDB
Percona 에서 개발중인 스토리지 엔진이다.
스토리지 엔진 비교
기능 | MMAPv1 | WiredTiger (in-memory) | RocksDB | TokuDB |
잠금 수준 | 컬렉션 | 도큐먼트 | 도큐먼트 | 도큐먼트 |
데이터 구조 | B-tree | B-tree | LSM | Fractal-Tree |
캐시 | X (운영체제 캐시를 사용) | O | O | O |
세컨드리 인덱스 | O | O | O | O |
데이터 압축 | X | O | O | O |
인덱스 압축 | X | O | O | O |
암호화 | X | O | X | X |
'Database > MongoDB' 카테고리의 다른 글
[MongoDB] 데이터를 읽고 쓰는 방법과 프레그멘테이션 관리 (0) | 2024.05.13 |
---|---|
[MongoDB] MMAPv1 스토리지 엔진 (0) | 2024.05.13 |
[MongoDB] MongoDB 의 CRUD 사용 ( SELECT, INSERT, UPDATE, DELETE ) (0) | 2024.04.18 |
[MongoDB] MongoDB 와 RDBMS 차이 (1) | 2024.04.18 |
[MongoDB] MongoDB 마이너버전 업그레이드 방법 (0) | 2024.04.18 |