MongoDB 특징

이번에는 MontoDB의 특징에 대해 알아보자.

공식 사이트에서도 기재되는 내용으로 특징은 크게 아래와 같이 정리된다.

  • 도큐먼트 데이터베이스(NoSQL)
  • 특수 쿼리
  • 고성능
  • 고가용성
  • 수평 확장성

도큐먼트 데이터베이스(NoSQL)

JSON처럼 키-밸류(Key-Value) 조합을 그대로 저장할 수 있는 문서 형식의 데이터베이스이다. 밸류에는 다양한 형태를 지정할 수 있다. 예를 들면 수치, 문자열는 물론, 배열이나 오브젝트를 보존할 수 있는 것도 특징이다. 또, 이 밸류의 형태는 동적으로 변경할 수 있고, 같은 필드명에 복수의 형태를 넣을 수도 있다. 즉, 스키마리스(schemaless) 도큐먼트 데이터베이스이다.

성능

성능을 내기 위해 다음과 같은 기능이 구현되어 있다.

  • 임베디드 데이터 모델을 이용한 I/O 처리 감소
  • 색인(index) 지원

NoSQL이면서 “인덱스"를 지원하고 있다는 것이 MongoDB의 특징이다. “인덱스"와 관련하여 “유니크 키"를 지정할 수도 있다.

특수 쿼리

JSON 형식으로 지정하는 특수 쿼리를 활용하여 DB를 검색한다. 쿼리를 이용해 할 수 있는 조작은 기본적인 CRUD 조작은 물론, 이하에 주는 특징적인 쿼리가 있다.

  • 집계(Aggregation, Map-Reduce)
  • “텍스트 인덱스"를 사용하여 문자열 검색
  • 지리 공간 쿼리

집계(Aggregation, Map-Reduce)에서는 저장된 데이터에 대해 다양한 통계를 수행할 수 있다. 쿼리 단체의 조립은 독특한 구현이므로 익숙해져야 하는데, 처리 순서가 파이프라인화 되어 있어 코드의 전망은 좋다.

“지리 공간 쿼리"는 내장의 “GeoJSON"형식을 이용하여 “범위내의 포인트 검색 “을 할 수 있다.

가용성

MongoDB는 복제 세트라는 기능으로 복제 기능을 제공한다. 이 복제 세트는 자동 장애 조치 및 데이터 중복성을 제공한다.

수평 확장

수평 확장 이란 특징은 “머신을 늘리는 것으로 성능 향상할 수 있다"라는 것이다. MongoDB에서는 코어 기능(샤딩이라는 구조)으로 수평 확장성을 실현하고 있다.

다중 스토리지 엔진 지원

MongoDB는 여러 스토리지 엔진을 지원한다. 일반적으로 사용되는 파일 시스템 외에도 인 메모리 엔진을 선택할 수 있다. 또한 스토리지 엔진 API를 공개하고 있으므로 타사 스토리지 엔진을 만들 수도 있다.

참고 문서