[Back-end] MongoDB

Geun·2022년 3월 17일
0

Back-end

목록 보기
27/74

MongoDB란

MongoDB는 NoSQL로 Json type의 데이터 저장구조를 가진다.
Memory Mapping 기술을 기반으로 Big data처리에 탁월한 성능을 제공한다.
시스템 장애가 발생해도 안전할 수 있도록 데이터를 보관, 운영하기 위한 샤딩(Sharding)과 레플리카(Replica)를 제공하고 있다.

MongDB는 데이터를 컬렉션에 Document로 저장하는 반면,
MySQL과 같은 관계형 데이터베이스에서는 데이터를 테이블의 행으로 저장한다.


특징

MongoDB는 스키마가 없다.

따라서 데이터베이스가 아닌 애플리케이션이 데이터 구조를 정한다.
데이터의 구조가 빈번히 변경될 수 있는 개발초기 단계에서 개발 시간을 줄일 수 있다.

스키마가 없는 데이터 모델을 통해 가변적인 속성을 갖는 데이터를 표현할 수 있다.
MongoDB는 애플리케이션 개발을 할 때 이후 필요할 데이터 필드가 무엇인지에 대해서는 걱정하지 않아도 된다.

Index

MongoDB에서 index는 B-TREE로 구현되어 있다.
index는 범위를 스캔하거나 정렬을 하는 것과 같이 다양한 쿼리에 최적화 되어있다.

MongoDB에서는 한 컬렉션에 64개까지 세컨더리 인덱스를 만들 수 있다.
데이터베이스를 효율적으로 운영하기 위해서는 인덱스를 잘 이해하는 것이 중요하다.
MongoDB Mannual


MongoDB를 사용하는 이유

MongoDB는 관게형 데이터베이스와 key-value 저장 시스템의 절충안같은 느낌으로..

웹 애플리케이션, 분석과 로깅 애플리케이션, 중간정도의 캐시를 필요로 하는 애플리케이션에서 일차 데이터 저장 시스템으로 적합하다.

관계형 데이터베이스보다 신속하게 애플리케이션을 개발할 수 있다.

MongoDB에서는 고정된 스키마가 없기 때문에 애자일식 개발에 적합하며 스키마를 적용시키고, 의논, 수정된 스키마를 반영하는데 들어가는 시간이 절약된다.
빠른 원자적 업데이트와 복잡한 집계, 자동 장애조치와 복제, 수평적 확장을 위한 샤딩 등도 존재한다.

정리해보면

MongoDB를 비롯한 NoSQL은 대체로 단순하게 사용하는 느낌이다.
NoSQL은 최대한 단순하면서 많은 데이터에 적합하다.

RDBMS는 복잡하면서 무결성이 중요한 데이터에 적합하다.


참고자료

https://code-masterjung.tistory.com/77
https://kciter.so/posts/about-mongodb

0개의 댓글