- mongoDB는 범용적으로 사용되는 SQL기반 DB와는 사용법이 조금 다르다.
- SQL질의없이 사용할 수 있는 데이터베이스로, NoSQL의 한 종류이다.
- 관계형 데이터베이스인 RDBMS와는 달리, 정보의 형식을 미리 정하지 않는다.
- 즉, 테이블이 생성되기 전 정보의 형식이 정의되어 있지 않아도 값을 저장할 수 있다.
→ 전통적인 관계형 데이터베이스 보다 덜 제한적인, 일관성 모델을 제공하는 DB
- RDBMS와 MongoDB의 차이점
1) RDBMS는 안정성, MongoDB는 확장성과 성능 최적화에 중점
2) RDBMS는 하나의 DBMS로 처리, MongoDB는 분산 컴퓨팅이 기본값
- MongoDB에서 지원하는 분산 컴퓨팅: 복제, 샤딩
- 복제란? DB를 복사하여 저장
- 샤딩(%)이란? 데이터를 나누어 저장 ex) 1~10의 데이터를 1~3, 4~7, 7~10으로 나누어 세 공간에 저장
- MongoDB의 특징
1) 내부 명령어가 JS로 구성되어 있음
> use myDatabase
> db.initialCollection.insertOne({hello: "world"})
> db.initialCollection.find()
이런 식으로 사용하게 될 것이다.
2) JSON과 비슷한 BSON 자료구조
{
name: "hayan",
age: 25,
hobby: ["dance", "exercise"]
}
JSON과 유사하게 <field>:<value> 구조로 정보를 저장한다.
3) 스키마가 없는 방식
RDBMS와는 달리 스키마의 구조를 고려하지 않고 필요한 정보를 저장할 수 있다.
- JS기반 프로젝트에 활용도가 좋음
React, Node.js, MongoDB를 프로젝트에 활용하면 언어를 JS로 통일이 가능하다.
- 저장할 정보의 형태가 자주 변경되는 경우
아래 유형을 처리할 때 MongoDB는 유용하다.
1) 파일럿 프로젝트: 사용자의 수가 예측이 안 되고, 데이터 구조가 쉽게 바뀔 수 있는 프로젝트
2) 비 정형화된 정보의 전산화: 수기로 작성된 주문 정보 등 정보를 정형화하기 어려운 경우
3) 안정성보다 높은 성능이 필요한 경우
- 활용하면 안 되는 경우
1) 결제 시스템 등 데이터 무결성이 중요한 경우
2) 복잡한 쿼리가 빈번한 경우 (RDB와 비교할 때 없는 함수가 꽤 있음)
'Backend > MongoDB' 카테고리의 다른 글
Mongoose ODM 기초와 간단한 CRUD 구현 코드(Node.js) (0) | 2022.02.26 |
---|---|
MongoDB - 고급 활용 기능 이론 위주 (Flask, 집계, 인덱스, 복제 세트, Read-Concern/Write-Concern, 샤드 클러스터) (0) | 2022.02.02 |
MongoDB - 연산자 (0) | 2022.02.02 |
MongoDB - CRUD (0) | 2022.02.01 |