Backend/MongoDB

MongoDB 개요

yxemsy 2022. 2. 1. 20:47

  • 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와 비교할 때 없는 함수가 꽤 있음)