# 몽고DB

몽고DB|  |
| 개발자 | 몽고DB |
| 발표일 | 2009년 0월 0일(2009-12-00) |
|  |
| 안정화 버전 | 8.2.3
 / 2025년 12월 22일 (6개월 전) |
|  |
| 저장소 | * github.com/mongodb/mongo
 |
| 프로그래밍 언어 | C++, Go, 자바스크립트, 파이썬 |
| 운영 체제 | 크로스 플랫폼 |
| 언어 | 영어 |
| 종류 | 도큐먼트 지향 데이터베이스 |
| 라이선스 | SSPL |
| 상태 | 지원 중 |
| 웹사이트 | www.mongodb.org |

Robomongo 0.8.5를 사용하여 몽고DB에 레코드를 삽입하고 있는 모습.
**몽고DB**(MongoDB←HUMONGOUS)는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다. NoSQL 데이터베이스로 분류되는 몽고DB는 JSON과 같은 동적 스키마형 도큐먼트들(몽고DB는 이러한 포맷을 BSON이라 부름)을 선호함에 따라 전통적인 테이블 기반 관계형 데이터베이스 구조의 사용을 삼간다. 이로써 특정한 종류의 애플리케이션을 더 쉽고 더 빠르게 데이터 통합을 가능케 한다. 아페로 GPL과 아파치 라이선스를 결합하여 공개된 몽고DB는 자유-오픈 소스 소프트웨어이다.

뉴욕시에 기반을 둔 회사인 10gen (현재의 몽고DB)에서 2007년 10월, 계획된 PaaS(서비스형 플랫폼) 제품의 구성 요소로 처음 개발하였으며 10gen이 상용 지원 및 기타 서비스를 제공한 2009년에 오픈 소스 개발 모델로 전향하였다. 그 뒤로 몽고DB는 크레이그리스트, 이베이, 포스퀘어, 소스포지, 뉴욕 타임즈, 구글, 페이스북와 같은 수많은 주요 웹사이트 및 서비스에 백엔드 소프트웨어로 채택되고 있다. 몽고DB는 가장 유명한 NoSQL 데이터베이스 시스템이다.

## 역사

10gen 소프트웨어 기업은 2007년에 PaaS 제품으로서 몽고DB의 개발을 시작했다. 2009년, 이 기업은 오픈 소스 개발 모델로 전환했으며 기업은 상용 지원과 기타 서비스를 제공하는 방식을 채택하였다. 2013년, 10gen은 사명을 MongoDB Inc.로 변경하였다.

2017년 10월 20일, 몽고DB는 주식 공개 기업이 되었으며 NASDAQ에 MDB라는 심볼로 등재되었으며 IPO 가격은 한 주에 24달러였다.

몽고DB 출시 역사| 버전 | 출시일 | 각주 |
| --- | --- | --- |
| 1.0 | 2009년 8월 |  |
| 1.2 | 2009년 12월 |  |
| 1.4 | 2010년 3월 |  |
| 1.6 | 2010년 8월 |  |
| 1.8 | 2011년 3월 |  |
| 2.0 | 2011년 9월 |  |
| 2.2 | 2012년 8월 |  |
| 2.4 | 2013년 3월 |  |
| 2.6 | 2014년 4월 8일 |  |
| 3.0 | 2015년 3월 3일 |  |
| 3.2 | 2015년 12월 8일 |  |
| 3.4 | 2016년 11월 29일 |  |
| 3.6 | 2017년 11월 |  |
| 4.0 | 2018년 6월 |  |
| 4.2 | 2019년 8월 |  |
| 4.4 | 2020년 7월 |  |
| 4.4.5 | 2021년 4월 |  |
| 4.4.6 | 2021년 5월 |  |
| 5.0 | 2021년 7월 13일 |  |
| 6.0 | 2022년 7월 |  |

## 주요 기능

### 애드혹 쿼리

몽고DB는 필드, 레인지 쿼리, 정규 표현식 검색을 지원한다. 쿼리는 특정 필드의 도큐먼트를 반환할 수 있으며 사용자 지정 자바스크립트 함수를 포함할 수도 있다. 쿼리는 주어진 크기의 임의의 결과 샘플을 반환하도록 설정할 수도 있다.

### 색인

몽고DB 도큐먼트의 필드는 프라이머리(primary) 인덱스와 세컨더리(secondary) 인덱스로 인덱싱할 수 있다.

### 리플리케이션

몽고DB는 리플리카 세트(replica set)와 함께 고가용성을 제공한다. 리플리카 세트는 둘 이상의 데이터 사본으로 구성된다. 각 리플리카 세트 멤버는 어느 시점에서나 프라이머리나 세컨더리 리플리카 역할을 수행할 수 있다. 모든 쓰기와 읽기는 기본값으로 프라이머리 리플리카에서 수행된다. 세컨더리 리플리카는 내장된 리플리케이션 기능을 사용하여 프라이머리의 데이터의 사본을 관리한다. 프라이머리 리플리카가 실패하면 리플리카 세트는 어느 세컨더리가 프라이머리가 되면 좋을지 결정하기 위해 선거 과정을 자동으로 수행한다. 세컨더리 리플리카들은 선택적으로 읽기 조작을 서비스할 수 있으나 해당 데이터는 기본적으로 일관성을 유지한다.

### 로드 밸런싱

몽고DB는 샤딩을 사용하여 수평으로 스케일링한다. 사용자는 컬렉션 안의 데이터의 배포 방식을 결정하는 샤드 키를 선택하게 된다. 데이터는 여러 레인지(샤드 키에 따라)로 분리되며 여러 샤드로 배포된다. (샤드는 하나 이상의 리플리카가 존재하는 마스터이다)

몽고DB는 여러 개의 서버 위에서 실행할 수 있고 부하분산이라든지, 기동 중 데이터 복제, 하드웨어 고장 시 수행이 가능하다.

### 파일 스토리지

몽고DB는 파일 저장을 위해 여러 머신에 로드 밸런싱, 데이터 리플리케이션 기능과 더불어 GridFS라는 이름의 파일 시스템으로 사용할 수 있다.

이 기능은 그리드 파일 시스템이라고 부르며 몽고DB 드라이버에 포함되어 있다. 몽고DB는 파일 조작의 기능과 콘텐츠를 개발자들에게 노출한다. GridFS는 mongofiles 유틸리티나 Nginx 플러그인, Lighttpd를 사용하여 접근할 수 있다. GridFS는 파일 하나를 여러 부분이나 덩어리(chunk)로 분리시키며 해당 덩어리들 각각을 별도의 도큐먼트로 저장한다.

### 애그리게이션

몽고DB는 애그리게이션 수행을 위해 3가지 수단을 제공한다: 애그리게이션 파이프라인(aggregation pipeline), 맵리듀스 기능(map-reduce function),
단일 목적 애그리게이션 방식(single-purpose aggregation method).

데이터 처리와 애그리게이션 조작을 위해 맵리듀스를 사용할 수 있다. 그러나 몽고DB의 문서에 따르면 애그리게이션 파이프라인이 대부분의 애그리게이션 조작에 더 나은 성능을 제공한다.

애그리게이션 프레임워크를 사용하면 사용자들이 SQL GROUP BY 절이 사용되는 결과의 종류를 취득할 수 있다. 애그리게이션 연산자들은 하나로 묶어서 하나의 파이프라인을 형성할 수 있는데, 이는 유닉스 파이프와 비슷하다. 애그리게이션 프레임워크는 여러 도큐먼트로부터 도큐먼트들을 조인(join)할 수 있는 $lookup 연산자를 포함하고 있으며 표준 편차 등의 통계 연산자를 포함한다.

### 서버 사이드 자바스크립트 실행

자바스크립트를 쿼리, 애그리게이션 기능(맵리듀스 등)에 사용할 수 있으며 직접 데이터베이스로 보내어 실행할 수 있다.

### 캡트 컬렉션

몽고DB는 캡트 컬렉션(capped collection)이라는 이름의 고정 크기의 컬렉션을 지원한다. 이러한 유형의 컬렉션은 삽입 순서를 관리하고 특정 크기에 도달하면 원형 버퍼처럼 동작하게 만들 수 있다.

### 트랜잭션

멀티 도큐먼트 ACID 트랜잭션 지원이 2018년 6월 4.0 릴리스의 GA(General Availability)와 더불어 몽고DB에 추가되었다.

## 몽고DB 콘퍼런스

몽고사는 MongoDB World 또는 MongoDB.live로 불리는 개발자 콘퍼런스를 해마다 주최한다.

| 연도 | 날짜 | 도시 | 장소 | 비고 |
| --- | --- | --- | --- | --- |
| 2014 | June 23–25 | 뉴욕 | Sheraton Times Square Hotel |  |
| 2015 | June 1–2 | 뉴욕 | Sheraton Times Square Hotel |  |
| 2016 | June 28–29 | 뉴욕 | New York Hilton Midtown |  |
| 2017 | June 20–21 | 시카고 | Hyatt Regency Chicago | 뉴욕시에서 주최되지 않은 첫 해 |
| 2018 | June 26–27 | 뉴욕 | New York Hilton Midtown |  |
| 2019 | June 17–19 | 뉴욕 | New York Hilton Midtown |  |
| 2020 | May 4–6 |  | 온라인 | 코로나19 범유행으로 인해 대면 콘퍼런스를 취소하고 완전히 온라인으로 시행 |
| 2021 | July 13–14 |  | 온라인 | 코로나19 범유행으로 인해 온라인으로 콘퍼런스 개최 |
| 2022 | June 7–9 | 뉴욕 | Javitz Center |  |

* 아파치 카산드라
* BSON
* 서버 사이드 스크립트 언어

* **(영어)** 몽고DB  - 공식 웹사이트