데이터베이스 #5 Mongo DB

haechi·2022년 3월 28일

DB

목록 보기
5/6

NoSQL - Mongo DB


MongoDB?

  • 문서 지향 데이터베이스 (Document-Oriented Database)
  • NoSQL(Not-Only SQL)중 하나 (RDBMS X, SQL사용 X)
  • C++로 제작
  • NoSQL 중 인지도 1위
  • MySQL의 테이블 같은 스키마가 고정된 구조가 아닌 JSON형태의 동적 스키마형 문서 제공(BSON이라고 함)
  • Document : 가장 기본적인 데이터(MySQL의 row에 해당)
  • Collection : 문서(Document)의 집합
  • DB : Colletction의 집합

Document

  • JSON형태의 Key-Value 쌍으로 이루어 짐
  • _id ==> RDBMS의 Primary Key와 같은 개념

특징

  • 빅데이터나 실시간 웹 애플리케이션에 널리 사용
  • 스키마가 없음
    - 스키마가 존재 : 그 구조가 미리 정의되어 있어야 한다.
    • 스키마가 사전에 정의되지 않아도 된다 : 다양한 필드를 가질 수 있다.
  • 다양한 인덱싱 제공
  • Auto Sharing 가능 : Primary Key 기반 여러 서버에 데이터를 나누는 scale-out 가능
  • 별도 스토리지 엔진 통해 파일 저장 가능
  • 다양한 쿼리 제공

+

  • RDBMS보다 빠름
  • 스키마 관리 필요 없음, 어떤 형태의 데이터도 저장 가능
  • JSON형태로 저장 : 직관적
  • 데이터 읽고/쓰기 빠름
  • scale-out 구조 : 하나의 장비에서 처리하던 일을 여러 장비에 나눠서 처리할 수 있는 확장 기능 --> 쉽게 운영 가능
  • auto-sharing : 데이터를 여러 서버에 분산해서 저장하고 처리할 수 있도록 하는 기능
  • 비동기 드라이버 사용 가능

-

  • 복잡한 쿼리 사용 X
  • 메모리 사용량 큼
  • 정합성 떨어짐
  • SQL을 완전히 이전 X
  • 데이터 일관성 보장 X

적절

  • 로그성 데이터, 빅데이터 처리의 중간 저장소
    - RDBMS보다 성능 우월, 파일보단 다양한 유틸성 기능, 검색에 유연
  • 설정 데이터 보관소
    - 검색 조건의 다양화가 필요한 경우 유용
  • null 필드가 많이 존재
    - 데이터에 null 필드가 가변으로 다양하게 존재 --> RDBMS보다 효율이 좋음
  • 집계 연산, paging

참고
https://www.byfuls.com/programming/read?id=60
https://elky84.github.io/2018/09/26/mongodb/

profile
공부중인 것들 기록

0개의 댓글