몽고DB는 일반 목적의 문서 기반 분산 데이터베이스로, 관계형 데이터베이스와 비관계형(NoSQL) 데이터베이스 사이의 제품에 속합니다. 비관계형 데이터베이스 중에서 가장 다양한 기능과 관계형 데이터베이스와 유사한 특성을 가지고 있습니다.

몽고DB 문서의 예시

{
  "_id": "5cf0029caff5056591b0ce7d",
  "firstname": "Jane",
  "lastname": "Wu",
  "address": {
    "street": "1 Circle Rd",
    "city": "Los Angeles",
    "state": "CA",
    "zip": "90404"
  },
  "hobbies": ["서핑", "코딩"]
}

특별한 것은 없고, 그냥 JSON 데이터 조각입니다. 몽고DB에 저장된 문서 데이터는 이와 유사한 JSON 데이터입니다. JSON 데이터를 저장하기 때문에 몽고DB에 저장되는 데이터 형식은 매우 유연합니다. 고정된 테이블 구조를 가져야 하는 MySQL과는 달리 몽고DB에서는 필드를 언제든지 추가하거나 삭제할 수 있으며, 속도도 매우 빠릅니다.

팁: 업무에서 복잡한 트랜잭션, 조인, 데이터 일관성에 높은 요구가 없고, 빠른 데이터 읽기 및 쓰기, 높은 동시성, 유연하고 자유로운 저장 형식을 단순히 추구하며, 테이블 구조를 사전에 정의할 필요가 없다면 몽고DB는 좋은 선택입니다.

몽고DB의 특징

뛰어난 성능

MongoDB는 뛰어난 성능의 데이터 영속성을 제공합니다. 특히,

  • 내장된 데이터 모델을 사용하여 데이터베이스 시스템의 I/O 작업을 줄일 수 있습니다.
  • 색인을 지원하므로 쿼리 효율이 매우 높으며, 색인화된 필드는 임베디드 문서의 필드나 배열의 키가 될 수 있습니다.

다양한 쿼리 언어 지원

MongoDB는 다양한 비즈니스 쿼리 시나리오를 충족시키기 위한 풍부한 쿼리 표현을 지원합니다.

지리적 쿼리 지원

O2O 비즈니스 및 위치 관련 비즈니스에서는 주변 매장 쿼리, 주변 사람 쿼리 또는 상업 지구 내에 있는지 여부를 확인하는 등 빈번한 지리적 쿼리가 필요합니다. 이 모든 것들은 지리적 검색 지원이 필요합니다.

높은 가용성

MongoDB의 레플리카 세트는 다음을 제공합니다:

  • 자동 장애 조치(Failover)
  • 데이터 중복성

레플리카 세트는 동일한 데이터 집합을 유지하는 mongod 인스턴스 그룹으로, 데이터 중복성과 높은 가용성을 지원합니다.

수평적 확장성

MongoDB는 수평적 확장을 지원합니다. 샤딩을 사용하여 데이터를 클러스터 내의 여러 기계로 분산시킴으로써 동작합니다.