MongoDB(1)_12.21

송철진·2022년 12월 21일
0

Final Project

목록 보기
7/8

참조 자료

MongoDB의 기본 개념 알아보기 | SKplanet Tacademy
https://youtu.be/81JnYGT2HVQ

[MongoDB] 소개, 설치, 데이터모델링
https://velopert.com/436

RDBMS 와 MongoDB 비교
https://javacpro.tistory.com/66

Database와 Collection | MongoDB 공식문서
https://www.mongodb.com/docs/manual/core/databases-and-collections/

정리

Keyword

Document

  • RDBMS의 record와 유사
  • key-value pair의 구조
{
    _id: ObjectId("00000020f51bb4362eee2a4d"),
    name: { firstname: "제인", lastname: "오스틴" }
}
  • 동적인(dynamic) schema를 갖고 있음
    같은 Collection 내 Document 끼리 서로 다른 schema 를 가질 수 있음
    = 서로 다른 데이터(key) 들을 가질 수 있음.

Collection

  • RDBMS의 table과 유사
    ( ↔️ Document가 동적인 schema 를 갖고 있으므로 Collection은 schema 가 없음)
  • MongoDB Documnet의 그룹

Database

  • Collection들의 물리적인 컨테이너

비교

RDBMSMongoDB
DatabaseDatabase
TableCollection
Tuple, RowDocument
ColumnKey, Field

기본 개념

정의

  • MongoDB is a source-available cross-platform document-oriented database program.
    오픈소스 문서지향(document-oriented) 데이터 모델을 사용한 교차 플랫폼(cross-platform) 데이터베이스 프로그램

특징

  • NoSQL(Not only SQL) : 관계형DB의 한계 극복 / 고정된 스키마, JOIN이 없음
  • 메모리맵 형태의 파일엔진 DB -> 성능 = 메모리 크기
  • 적합한 경우: 삭제 없이 쌓아놓는 ex) 로그데이터, 이벤트참여내역, 세션
  • 부적합 경우: 트랜잭션이 필요한 ex) 금융, 결제, billing, 회원정보 (=> RDBMS)
  • 빅데이터 처리 특화 but, OS메모리가 차면 HDD로 데이터처리하여 속도 급저하 -> 하드웨어 투자 필요!

Document(도큐먼트) 데이터 모델

  • 속성의 이름-값 쌍의 집합
  • 속성: 문자열, 숫자, 날짜, 배열, 다른 도큐먼트 지정
  • 하나의 도큐먼트에 필요정보 모두 담아야 한다(Embedded Document)
  • one query로 할 수 있게 collection model 설계해야한다(join이 없다❓)

도큐먼트 형태의 구조

  • 중괄호로 시작해서 끝나는 형태가 곧 하나의 도큐먼트 구조임.(JSON)

장점

  • schema-less 구조: 다양한 형태의 데이터 저장, 데이터모델의 유연한 변화(모델변경, 필드 확장 용이)
  • Read/Write 성능 우수
  • Scale out 구조: 대량 데이터 저장, 장비 확장 용이
  • JSON 구조: 데이터 직관적으로 이해
  • 사용 용이, 개발 편리성

단점

  • 데이터 업데이트 중 장애 발생 시 손실 가능
  • 많은 인덱스 사용 시, 충분한 메모리 확보 필요
  • RDBMS 대비 데이터 공간 소모 많음(key 중복 입력: 비효율)
  • 복잡한 join 시 성능 제약❓
  • RDBMS 대비 트랜잭션 지원 미약
  • Hadoop 대비 MapReduce 작업 성능 낮음

❓ MongoDB에 JOIN이 있다? 없다?
👉 MongoDB는 NoSQL이라 JOIN이 없다고 그러더니 복잡한 join 시~라는 말로 참 헷갈리게 한다-_- 검색해보니 쿼리에 한해서 $lookup이라는 유사 기능이 있다고 함. 이하 참조(https://velog.io/@byron1st/MongoDB-쿼리에서-Join-하기, https://joyful-development.tistory.com/21)

주요기능

  • MongoDB 복제: master-slave 구조, slave에 복사본 배치해 master 장애 시 slave를 master로 선출(무중단 서비스)
  • MongoDB 샤딩: 대용량 데이터 분산 저장(소프트웨어적으로 DB 처리). DB를 테이블 단위로 분리 또는 테이블 자체를 분할하는 방법.
    분산DB의 3계층 구조 지원(응용, 중개자, 데이터 계층). 추상화된 하나의 DB가 존재하는 것처럼 운용.
  • MongoDB 맵리듀스: 대용량 데이터를 분산 연산하여 안전하고 빠르게 처리.
profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글