[교육] MongoDB란

강세준·2023년 5월 8일
0

Mongo DB

No SQL제품중에는 제일 순위가 높을 정도로 현재 DB시장에서 Mongo DB는
실제 서비스에서도 많이 쓰이는 DB이다.

Mongo DB의 특징

  • Mongo DB는 다른 관계형 DB와 다르게 스키마 구조가 존재하지 않는다.
    따라서 데이터 중복이 빈번하게 발생한다.
  • join을 할 수 없다
  • Mongo DB와 관계형 DB의 객체 차이
Mongo DB관계형 DB
데이터베이스데이터베이스
컬렉션테이블
도큐먼트로우
필드칼럼
인덱스인덱스
  • 쿼리문이 개발자에게 더욱 친화적이다.
  • 칼럼 추가가 유연하다.

Mongo DB replica set

  • Mongo db의 replica set은 최소 3대로 구성해야한다.
  • 각 서버는 모두 동일한 데이터를 가지고 있어 한대가 죽더라도 나머지가 가지고 있다는 장점이 있지만 이는 세 서버 모두 동일하게 데이터를 가지고 있어야 하기 때문에 동기화와 관련해 문제가 있을 수 있음으로 단점이 될 수 있다.
  • replica set은 HA를 위해 과반수 이상이 동작할 때 투표를 진행해야 하기 때문에 홀수로 구성해야 한다.
  • 데이터가 2TB가 넘어가게 된다면 샤딩을 수행하는 것이 좋다.
  • 아비터 노드 : 데이터는 없고 투표만 하기 위해 존재하는 노드


    • P-S-S : 두 노드 모두 세컨더리로 구성한다.
    • P-S-A : 하나를 아비터 노드를 두어 하드웨어 부담을 줄인다.

Mongo DB sharding

예시 구조

  • 설명
    • replica set은 샤딩을 통해 2set로 나눠진다
    • config server는 어떤 데이터가 어디에 있는지 저장한다.
      만약 어디에 있는지 잃어버리면 고아 도큐먼트가 발생한다.
    • mongo DB 라우터는 직접 쿼리를 받는 부분이다.
      mongo DB 라우터 또한 3개로 구성해 Connection Stream을 만들고
      어느 곳에 접근해도 동일하게 데이터를 받을 수 있게끔 구성한다.
  • 특징
    • Mongo DB는 오토 샤딩을 지원하여 쉽게 샤딩을 할 수 있다.
    • 최신 버전의 Mongo DB는 샤딩으로 인한 속도 저하는 크게 체감이 되지 않는다.
    • Mongo DB버전을 업데이트 할 경우 각 서버를 한대씩 HA를 수행하며 업데이트를 할 수 있다.

Mongo DB 사용시 주의사항

  • Mongo DB enterprise 버전은 core 개수가 아닌 메모리 사이즈를 기준으로 구매할 수 있다.
    Mongo DB는 메모리 쿼터를 설정할 수 없기 때문에 주의해서 사용해야한다.
  • index가 없을 경우 RDB보다 속도가 느릴 수 있다.
  • collection 하나당 두 개의 데이터 파일을 생성함으로 collection을 계속 만드는
    구조의 프로그램은 I/O속도에 문제가 있을 수 있다.
  • 샤딩 구조에서 DBACL은 제대로 동작하지 않을 수 있으므로
    replica set과 stand alone 구조에서만 사용하고 샤딩 구조에서는 IP Table을 사용한다.
    IP Table은 Mongos(Mongo DB 라우터)부분에만 적용하면 된다.

Mongo DB 백업

  • enterprise 버전은 OPS매니저라는 관리툴이 존재하여 모니터링, 백업등에 도움을 받을 수 있다.
  • community 버전의 경우 mongodump를 사용하여 백업을 할 수 있지만 데이터가 클 경우 속도에 문제가 있을 수 있다.
    따라서 리눅스의 lvm백업을 이용하는 방식으로 백업을 수행할 수 있다. (ex : 카카오 RBAM)

추가 공부

Mongod vs Mongos

Mongod

  • 데이터베이스를 실행하는 기본 데몬 프로세스
  • 데이터 저장 및 작업을 처리하는 주요 데이터베이스 서버 프로세스

Mongos

  • 클라이언트로부터 쿼리를 수신하여 샤드 클러스터의 적절한 샤드로 라우팅하는
    데몬 프로세스
  • 샤드 클러스터에서 쿼리 라우팅 및 로드 밸런스를 수행하는 라우터 프로세스

참고자료

Mongo DB 교육
https://meetup.nhncloud.com/posts/275
https://www.mongodb.com/docs/manual/reference/program/mongod/
https://www.mongodb.com/docs/manual/core/replica-set-architecture-three-members/

profile
데이터를 탐구하는 개발자

0개의 댓글