1. MongoDB
MongoDB는 C++로 작성된 오픈소스로 대용량의 데이터 작업에 효율적인 NoSQL 데이터 베이스입니다. 필드와 값의 쌍으로 정렬된 문서(Document) 기반 데이터베이스로 객체지향 프로그래밍과 잘 맞으며, JSON을 사용할 때 데이터를 쉽게 사용할 수 있습니다. 따라서 JavaScript를 기반으로 하는 Node.js에서 가장 많이 사용되는 데이터베이스입니다.

2. MongoDB의 특징
MongoDB는 다목적용으로 사용되며, 고가용성, 수평 확장성 및 지리적 분포가 내장된 분산 데이터베이스입니다.
- 스키마가 없기 때문에 필드를 추가, 제거가 쉬워 빠르게 개발이 가능합니다.
- 단일 개체의 구조가 명확합니다. 필드는 문서마다 다를 수 있으며 시간에 따라 데이터 구조를 변경할 수 있어 복잡한 구조를 쉽게 저장할 수 있습니다.
- 복잡한 조인이 없습니다.
- 다양한 종류의 쿼리문을 지원(필터링, 수집, 정렬, 정규표현식 등)
3. NoSQL(Not Only SQL)
최근에 데이터의 형태가 단순해지고 규모로 커지게되면서 데이터를 빠른 속도로 처리할 수 있는 데이터베이스에 대한 필요성이 증가하고 있습니다. RDBMS를 대용량 데이터 서비스에 이용하기에는 비용적인 문제, 데이터를 분산하기 위해 수십, 수백 대의 서버로 분산시켜야 하기 때문에 처리하기는 힘들기 때문에 NoSQL을 많이 이용하고 있습니다.
NoSQL(Not Only SQL) 은 관계형 데이터베이스와 SQL을 사용하지 않는 데이터베이스를 말합니다. NoSQL의 대표적인 제품은 구글의 빅테이블, 그리고 mongoDB 등이 있습니다.
NoSQL 데이터베이스의 종류는 4가지 종류가 있습니다.
- 키-값 데이터베이스 : 키와 값으로 구성된 배열구조의 데이터베이스로 NoSQL 데이터베이스 중 가장 단순한 구조입니다.
- 도큐먼트 데이터베이스 : 필드와 값의 형태로 구성된 데이터를 JSON 포맷으로 관리하는 데이터베이스로 NoSQL 데이터베이스 중 가장 인기가 높습니다.
- 컬럼 패밀리 데이터베이스 : 컬럼과 로우로 구성된 데이터베이스로 칼럼은 이름과 값으로 구성되고 로우는 각기 다른 칼럼으로 구성이 가능합니다.
- 그래프 데이터베이스 : 노드와 관계로 구성된 데이터베이스로 근접한 객체를 모델링할 목적으로 설계되었습니다.
NoSQL DB 특징
- 유연성 : 스키마 선언 없이 필드의 추가 및 삭제가 자유로운 Schema-less 구조입니다.
- 확장성 : 스케일 아웃에 의한 서버 확장이 용이합니다.
- 고성능 : 대용량 데이터를 처리하는 성능이 뛰어납니다.
- 가용성 : 여러 대의 백업 서버 구성이 가능하여 장애 발생 시에도 무중단 서비스가 가능합니다.
RDBMS와 NoSQL는 객체의 이름이 조금 다를 뿐 비슷한 역할을 합니다.
MongoDB vs RDBMS