MongoDB는 문서 지향 데이터 모델을 사용하는 NoSQL 데이터베이스 관리 시스템이다.
정형 및 비정형 데이터를 보다 쉽고 빠르게 통합할 수 있다는 장점이 있다.
MongoDB를 사용하는 이유 ?
- 저장. MongoDB는 대규모 정형 및 비정형 데이터 볼륨을 저장할 수 있으며 수직 및 수평으로 확장 가능하다.
- Index 지원. 다양한 조건으로 빠르게 데이터를 검색할 수 있다. 다양한 형태의 인덱스를 제공하며 필요한 필드에 필요한 만큼 생성할 수 있다.
- 복잡한 데이터 구조 설명 . 문서 데이터베이스를 사용하면 중첩된 구조(구조 내의 구조)를 설명하는 문서를 삽입할 수 있으며 데이터의 변화를 허용할 수 있다.
- 로드 밸런싱. MongoDB를 사용하여 여러 서버에서 실행할 수 있습니다.
MongoDB의 특징
- 신뢰성. 서버 장애에도 서버가 유동적으로 분담하여 서비스는 계속 동작을 유지한다. Primary와 Secondry로 구성된 ReplicaSet 구조로 고가용성을 지원한다. ReplicaSet는 기본 서버와 보조 서버로 구성되며, 기본 MongoDB 서버는 모든 읽기 및 쓰기 작업을 수행하는 반면 Secondry는 데이터 복사본을 유지한다. Primary 서버에 문제가 생기면 Secondry가 Primary로 전환되어 서버를 계속 유지시킨다.
- 확장성. MongoDB는 수직 및 수평 확장을 지원한다. MongoDB에 데이터가 증가하여 더 이상 하나의 ReplicaSet에 담을 수 없게 되면, 데이터를 샤딩하여 분산시켜 줄 수 있다. 만약 특정 샤드에 데이터가 몰리면 다른 샤드로 데이터를 이동시켜, 전반적으로 모든 샤드가 균등하게 데이터를 저장할 수 있도록 해준다. 이러한 동작을 밸런싱이라고 한다.
- 유연성. 여러가지 형태의 데이터를 손쉽게 저장할 수 있다. 행과 열 대신 키-값 쌍을 사용하여 문서에 저장되므로 SQL 데이터베이스와 비교할 때 데이터가 더 유연하다고 볼 수 있다. 다양한 종류의 데이터가 추가되어도 스키마 변경 과정 없이 필요한 데이터를 저장하고 읽을 수 있다.
- 로드 밸런싱. MongoDB는 수직 또는 수평 확장을 통해 별도의 전용 로드 밸런서 없이 로드 밸런싱을 처리합니다.
- 비정형화 스키마 구조. 미리 스키마를 선언하지 않고 동적 스키마로 생성한다.
JSON - BSON
BSON이란 Binary JSON를 뜻한다. JSON과 동일한 구조지만 Binary 형태로 변경된 구조를 말한다.
MongoDB는 화면에 출력할 때는 JSON의 형태를 가지며, 저장할 때나 네트워크로 전송할 때에는 BSON 형태로 만들어
동작을 수행한다.