본문 바로가기

DB/MongoDB

[MongoDB] MongoDB란

MongoDB 기본개념

  • 데이터의 기본단위는 도큐먼트이며, 이는 관계형 데이터베이스의 행과 유사하다.
  • 컬렉션(Collection)은 동적 스키마(dynamic schema)가 있는 테이블과 같다.
  • 단일 인스턴스는 자체적인 컬렉션을 갖는 여러 개의 독립적인 데이터베이스를 호스팅한다.
  • 모든 다큐먼트는 컬렉션 내에서 고유한 특수키인 "_id"를 가진다.
  • 몽고 셸(The mongo Shell)이라는 간단하지만 강력한 도구와 함께 배포된다. 몽고 셸은 몽도DB 인스턴스를 관리하고 몽고DB 쿼리 언어로 데이터를 조작하기 위한 내장 지원을 제공한다.

 

1. 손쉬운 사용

몽고DB는 관계형 데이터베이스가 아니라 도큐먼트 지향 데이터베이스이다. 

관계형 모델을 사용하지 않는 주된 이유는 분산 확장(scale-out)을 쉽게 하기 위함이지만 아래와 같은 이점도 있다.

먼저 관계형 데이터베이스의 행 개념 대신에 유연한 도큐먼트를 사용한다. 또한 도큐먼트의 키와 값을 미리 정의하지 않는다. 고정된 스키마가 없으므로 필요할 때마다 쉽게 필드를 추가하거나 제거할 수 있다. 덕분에 개발 과정을 빠르게 반복할 수 있어서 개발 속도가 향상된다. 그리고 모델을 실험해보기도 쉽다.

 

 

2. 확장 가능한 설계

저장할 데이터가 증가함에 따라서 개발자는 '데이터베이스를 어떻게 확장할 것인가?'에 대한 의사결정을 해야한다. 이때 데이터베이스의 확장은 더 큰 장비로 성능 확장(scale-up)을 할지 혹은 여러 장비에 데이터를 분산 확장할지 결정을 해야한다. 보통 성능확장을 선택하지만 가격이 비싸고 더 확장할 수 없는 물리적 한계에 부딪힌다. 반면 분산 확장을 할 경우 경제적이고 확장이 용이하지만, 수천 대의 장비를 운영해야 하기 때문에 하나의 장비만 관리할 때보다 관리가 어려워진다.

 

몽고DB는 도큐먼트를 자동으로 재분배하고 사용자 요청에 따라서 올바른 장비에 라우팅함으로써 클러스터 내 데이터 양과 부하를 조절할 수 있다. 그래서 개발자는 애플리케이션 확장이 아닌 프로그래밍에 집중할 수 있다.

 

3. 다양한 기능

1) 인덱싱

2) 집계

3) 특수한 컬렉션 유형

  • 로그와 같은 최신 데이터를 유지하고자 세션이나 고정 크리 컬렉션(제한 컬렉션)과 같이 특정 시간에 만료해야 하는 데이터에 대해 유효 시간(TTL, Time-to-Live) 컬렉션을 지원한다.

 

 

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

[MongoDB] 기본설명  (0) 2023.05.28