Database/MongoDB

[MongoDB] MongoDB 기본 개념

Victory_HA 2022. 3. 31. 22:36

MongoDB 기본 개념

도큐먼트

  • 키 + 값 = 도큐먼트
  • 기존 RDBMS의 테이블 내부에 있는 데이터 항목 1개와 매칭된다고 생각하면 된다.

컬렉션

  • 도큐먼트의 집합
  • RDBMS의 테이블과 매칭된다고 생각하면 된다.

동적 스키마

  • RDBMS는 테이블 안에 데이터 형이 정해져있다.
  • mongoDB에선 도큐먼트의 데이터형이 정해져있지 않다.
    • 고로, Join이 불가능하다.
  • key와 value만 있을 뿐이다.
  • value는 string, int, array 등이 될 수 있고, value에 또다른 도큐먼트를 넣을수도 있다.
  • Json형태 데이터를 저장한다.

Query

Create

  • {Collection}.{save}.{Document}
    • ex> db.person.save({'name':'john'});

Read

  • {Collection}.{find}.{Document}
    • ex> db.person.find();

Update

  • {Collection}.{update}.{Document}
    • ex> db.users.update({name:'johnny'},{name:'Cash',language:['english']});

Delete

  • {Collection}.{remove}.{Document}
    • ex> db.users.remove({name:'Sue'});

MongoDB 샤딩

  • 대용량의 데이터를 저장하기 위한 방법
    • 소프트웨어적으로 데이터베이스를 분산시켜 처리하는 구조
  • 샤딩 방식
    • 데이터베이스가 저장하고 있는 테이블을 테이블 단위로 분리하는 방법
    • 데이터베이스가 저장하고 있는 테이블 자체를 분할하는 방법
  • 분산 데이터베이스의 전통적인 분할 3계층 구조 지원
    • 응용 계층, 중개자 계층, 데이터 계층
    • 응용 계층은 데이터에 접근하기 위해 중개자를 통해 모든 데이터의 입출력을 처리
    • 추상화된 한개의 데이터베이스가 존재하는 것처럼 운용

MongoDB 맵리듀스

  • 대용량 데이터를 안전하고 빠르게 처리하기 위한 방법
    • 데이터를 분산하고 연산하고 다시 합치는 기술
    • 맵과 리듀스 단계로 나누어 처리
    • 사용자가 임의 코딩 가능
    • 입/출력 데이터는 key-value 형태로 구성
  • 한대 이상의 하드웨어를 활용하는 분산 프로그래밍 모델
    • 데이터를 조각으로 나눠 처리한 다음, 다시 합쳐서 훨씬 짧은 시간에 계산을 완료한다.
    • 데이터를 조각으로 나눠 병렬처리한다고 생각하면 될 듯 하다.
  • 대용량 파일에 대한 로그 분석, 색인 구축 검색 등에 활용
  • 일괄처리 방식으로 전체 데이터 셋을 분석할 필요가 있는 문제에 적합

  • input
    • 대용량 데이터를 Split
  • Map
    • 각각의 map은 독립적으로 실행된다.
    • input되는 데이터에 대해서만 처리하고, 데이터를 반환한다.
  • shuffle / Sortㄴ
    • map에서 반환되는 데이터를 key단위로 합치는 역할을 한다.
    • input데이터를 Reduce를 수행하는 서버에 반환한다.
  • Reduce
    • 합쳐진 데이터를 다시 연산을 한 후 최종 결과 값을 반환한다.
  • Output
    • Reduce 과정의 결과물이다.
    • 해당 결과물을 Client에 전달된다.

'Database > MongoDB' 카테고리의 다른 글

[MongoDB] 쿼리  (0) 2022.03.31