몽고DB

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

몽고DB는 2007년 개발을 시작하여 2009년 오픈 소스 모델로 전환된 NoSQL 데이터베이스이다. 다양한 기능을 제공하며, 쿼리, 인덱싱, 리플리케이션, 샤딩, 파일 스토리지, 애그리게이션 등을 지원한다. 2018년 멀티 도큐먼트 ACID 트랜잭션을 지원하기 시작했으며, 몽고DB 아틀라스, 커뮤니티 서버, 엔터프라이즈 서버 등의 에디션으로 제공된다. 몽고DB는 서버리스 환경 접근을 위한 다양한 방법을 제공하며, 관리 도구와 프로그래밍 언어 드라이버를 지원한다. 2018년 10월부터 SSPL 라이선스 하에 배포되었으며, 보안 및 기술적 비판과 함께 몽고DB 월드 개발자 콘퍼런스를 매년 개최한다. MTV 네트웍스, 크레이그리스트, 디즈니 인터랙티브 미디어 그룹 등 다양한 기업에서 사용하고 있다.

몽고DB - [IT 관련 정보]에 관한 문서
기본 정보

이미지 준비중입니다.

MongoDB 로고
개발사MongoDB Inc.
최초 릴리스2009년 2월 11일
최신 안정화 버전 출시일,
프로그래밍 언어C++, 자바스크립트, 파이썬
운영체제윈도우 비스타 이상, 리눅스, OS X 10.7 이상, 솔라리스, FreeBSD
언어영어
장르도큐먼트 지향 데이터베이스
라이선스Server Side Public License 또는 독점
웹사이트MongoDB 공식 웹사이트
상세 정보
개발 언어C++
플랫폼크로스 플랫폼
라이선스Server Side Public License(소스 어베일러블) (드라이버는 Apache License)
📚 더 읽어볼만한 페이지
  • 문서 지향 데이터베이스 - BSON
    BSON은 JSON과 유사한 이진 데이터 직렬화 형식으로, JSON보다 효율적인 저장 공간 활용과 빠른 검색 속도를 제공하며 다양한 데이터 유형을 지원하여 MongoDB의 주요 데이터 저장 및 전송 형식으로 사용된다.
  • 문서 지향 데이터베이스 - 카우치베이스 서버
    카우치베이스 서버는 JSON 문서를 지원하는 NoSQL 데이터베이스로, 유연한 데이터 모델, 자동 샤딩, 클러스터 간 복제를 통한 고성능과 연속성을 제공하며, SQL++ 쿼리 언어를 사용하고 Couchbase Mobile을 통해 오프라인 우선 모바일 데이터베이스 기능을 지원한다.
  • 분산 컴퓨팅 구조 - 슈퍼컴퓨터
    슈퍼컴퓨터는 일반 컴퓨터보다 훨씬 높은 성능을 가진 컴퓨터로, 복잡한 계산과 시뮬레이션을 수행하며, 프로세서, 메모리, 스토리지, 네트워크 등으로 구성되어 병렬 처리를 통해 높은 성능을 구현하고, 군사, 기상 예측, 과학 기술 분야, 인공지능 등 다양한 분야에서 활용되고 있다.
  • 분산 컴퓨팅 구조 - 맵리듀스
    맵리듀스는 대용량 데이터 처리를 위해 구글에서 개발한 프로그래밍 모델이자 프레임워크로, Map과 Reduce 함수를 사용하여 데이터를 병렬 처리하며 하둡 등의 오픈 소스 구현을 통해 널리 쓰인다.
  • 2009년 소프트웨어 - 윈도우 서버 2008 R2
    윈도우 서버 2008 R2는 윈도우 7 기반의 마이크로소프트 서버 운영 체제로, 하이퍼-V 2.0을 통한 가상화 성능 향상, 액티브 디렉터리 기능 개선, IIS 7.5를 통한 웹 서비스 강화 등의 기능이 추가되었으나 2020년 1월에 지원이 종료되었다.
  • 2009년 소프트웨어 - 인터넷 익스플로러 8
    인터넷 익스플로러 8은 마이크로소프트가 개발하여 2009년에 출시된 웹 브라우저로, 사용자 인터페이스, 웹 표준 준수, 보안 기능 등을 개선하고 웹 조각, 액셀러레이터 등의 새로운 기능을 추가했으나, 웹 표준 미준수 등의 문제로 인해 2016년에 지원이 종료되었다.

2. 역사

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

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

👆
좌우로 밀어서 보기
몽고DB 출시 역사
버전출시일각주
1.02009년 8월
1.22009년 12월
1.42010년 3월
1.62010년 8월
1.82011년 3월
2.02011년 9월
2.22012년 8월
2.42013년 3월
2.62014년 4월 8일
3.02015년 3월 3일
3.22015년 12월 8일
3.42016년 11월 29일
3.62017년 11월
4.02018년 6월
4.22019년 8월
4.42020년 7월
4.4.52021년 4월
4.4.62021년 5월
5.02021년 7월 13일
6.02022년 7월

3. 주요 기능

MongoDB는 다음과 같은 주요 기능들을 제공한다.

* UTF-8 인코딩: 기본적으로 UTF-8 인코딩을 사용하며, 바이너리 데이터형을 통해 비 UTF-8 데이터도 저장하고 가져올 수 있다.
* 크로스 플랫폼 지원: x86_64 아키텍처에서는 윈도우, 리눅스, macOS를 지원하며, ARM64, PPC64LE, s390x 등의 아키텍처에서도 리눅스를 지원한다. 3.4 버전을 마지막으로 Solaris에 대한 지원은 중단되었다.
* 다양한 데이터형: 날짜, 정규 표현식, 바이너리형, 코드 등 모든 BSON 데이터형을 지원한다.
* 커서 사용: 쿼리 결과에 커서를 사용할 수 있다.
* 애드혹 쿼리: 필드, 범위 쿼리, 정규 표현식 검색을 지원하며, 쿼리는 특정 필드의 문서를 반환하거나 사용자 지정 자바스크립트 함수를 포함할 수 있다.
* 인덱싱: 몽고DB 문서의 필드는 프라이머리 및 세컨더리 인덱스로 인덱싱할 수 있다. 단일 키, 복합 키, 고유/비고유, 지리 공간 인덱스 등 다양한 인덱스를 지원하며, 중첩된 필드나 배열 형식도 인덱싱할 수 있다.
* 리플리케이션: 리플리카 세트(replica set)를 통해 고가용성을 제공한다. 리플리카 세트는 둘 이상의 데이터 사본으로 구성되며, 프라이머리 리플리카와 세컨더리 리플리카로 역할을 분담한다. 프라이머리 리플리카에 장애가 발생하면 자동으로 세컨더리 리플리카 중 하나가 프라이머리로 선출된다.
* 로드 밸런싱: 샤딩을 사용하여 수평적으로 확장할 수 있다. 사용자는 샤드 키를 선택하여 데이터 분산 방식을 결정하거나, 샤드 키를 해싱하여 균등하게 분산시킬 수 있다.
* 파일 스토리지: GridFS라는 파일 시스템으로 사용할 수 있다.
* 애그리게이션: 애그리게이션 파이프라인, 맵리듀스, 단일 목적 애그리게이션 방식을 통해 데이터 집계를 수행할 수 있다.
* 서버 사이드 자바스크립트 실행: 쿼리, 애그리게이션 함수, 데이터베이스에 직접 전송하여 실행하는 등 다양한 방식으로 자바스크립트를 활용할 수 있다.
* 캡트 컬렉션: 고정 크기 컬렉션인 캡트 컬렉션(capped collection)을 지원한다. 캡트 컬렉션은 삽입 순서를 유지하며, 지정된 크기에 도달하면 원형 큐처럼 작동한다.
* 트랜잭션: 4.0 버전부터 멀티 도큐먼트 ACID 트랜잭션을 지원한다.

3.1. 애드혹 쿼리

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

몽고DB에서는 임의의 필드를 원하는 때에 쿼리할 수 있다. 필드의 완전 일치 외에도, 범위를 갖는 쿼리, 정규 표현식 검색 등 다양한 종류의 쿼리를 사용할 수 있다. 사용자 정의 JavaScript 함수를 술어로 사용하는 것도 가능하다(함수가 true를 반환했을 때 문서가 일치한다).

쿼리에서는 (전체 필드를 가져오는 대신) 지정한 필드만 가져올 수 있다. 또한, 정렬을 수행하거나, 결과의 수를 제한하거나, 일부를 건너뛸 수도 있다.

내장된 객체와 배열에도 "접근"할 수 있다. 다음 객체가 users 컬렉션에 삽입되었다고 가정해 보자.

```javascript
{
"username" : "bob",
"address" : {
"street" : "123 Main Street",
"city" : "Springfield",
"state" : "NY"
}
}
```

이 문서(및 NY 주소 정보를 가진 모든 문서)는 다음 쿼리를 통해 검색할 수 있다.

```javascript
> db.users.find({"address.state" : "NY"})
```

배열의 요소도 지정할 수 있다.

```javascript
> db.food.insert({"fruit" : ["peach", "plum", "pear"]})
> db.food.find({"fruit" : "pear"})

3.2. 인덱싱

몽고DB 도큐먼트의 필드는 프라이머리(primary) 인덱스와 세컨더리(secondary) 인덱스로 인덱싱할 수 있다. 몽고DB는 단일 키, 복합 키, 고유/비고유, 지리 공간 인덱스 등 추가 인덱스를 지원한다. 중첩된 필드도 인덱싱할 수 있으며, 배열 형식을 인덱싱하면 배열 내 각 요소가 인덱싱된다.

몽고DB의 쿼리 옵티마이저는 쿼리 실행 시 여러 쿼리 계획을 시도하고 가장 빠른 것을 선택하며, 정기적으로 재샘플링을 수행한다. 개발자는 `explain` 함수로 사용되는 인덱스를 확인하고, `hint` 함수로 다른 인덱스를 참조할 수 있다.

인덱스는 언제든지 생성 및 삭제할 수 있다.

3.3. 리플리케이션

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

복제된 몽고DB 배포에 단일 보조 구성원만 있는 경우, 중재자라고 하는 별도의 데몬을 집합에 추가해야 한다. 중재자는 새로운 기본 복제본 선거를 해결하는 단일 책임을 갖는다. 결과적으로 이상적인 분산 몽고DB 배포는 기본 복제본과 보조 복제본이 각각 하나씩만 있는 경우에도 최소 세 개의 별도 서버가 필요하다.

3.4. 로드 밸런싱

몽고DB는 샤딩을 사용하여 수평적으로 확장한다. 사용자는 컬렉션 안의 데이터 배포 방식을 결정하는 샤드 키를 선택한다. 데이터는 여러 레인지(샤드 키에 따라)로 분리되며 여러 샤드로 배포된다. (샤드는 하나 이상의 리플리카가 존재하는 마스터이다) 또는, 샤드 키를 해싱하여 샤드에 매핑하여 데이터 분산을 균등하게 할 수 있다.

애플리케이션은 샤딩된 클러스터와 상호 작용할 때 몇 가지 주의할 점이 있다. 예를 들어 "findAndModify" 쿼리는 샤딩된 컬렉션에서 쿼리를 할 때 샤드 키를 포함해야 한다.

애플리케이션은 `mongos`라고 불리는 특수한 라우팅 프로세스와 상호 작용한다. 이 프로세스는 샤드 클러스터를 단일 몽고DB 서버처럼 보이게 한다. `mongos`는 어떤 데이터가 어떤 샤드에 있는지 알고 있으며, 클라이언트의 요청을 적절하게 라우팅한다. 모든 요청은 이 프로세스를 통해 전달되며, 요청 및 응답을 전송할 뿐만 아니라 필요에 따라 병합 및 정렬도 수행한다. 일반적으로 하나의 애플리케이션당 하나의 `mongos` 프로세스를 권장한다.

3.5. 파일 스토리지

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

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

3.6. 애그리게이션

몽고DB는 애그리게이션(데이터 집계)을 위해 다음 세 가지 방법을 제공한다.

* 애그리게이션 파이프라인(aggregation pipeline)
* 맵리듀스 기능
* 단일 목적 애그리게이션 방식(single-purpose aggregation method)

맵리듀스는 데이터 처리 및 애그리게이션 작업에 사용될 수 있다. 그러나 몽고DB 문서에 따르면 대부분의 경우 애그리게이션 파이프라인이 더 나은 성능을 제공한다.

애그리게이션 프레임워크를 사용하면 SQL의 GROUP BY 절과 유사한 결과를 얻을 수 있다. 애그리게이션 연산자들은 유닉스 파이프와 비슷하게 파이프라인을 형성하도록 연결할 수 있다. 애그리게이션 프레임워크는 여러 도큐먼트들을 결합(join)할 수 있는 $lookup 연산자와 표준 편차 같은 통계 연산자를 포함한다.

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

자바스크립트는 몽고DB에서 공통 언어이며, 쿼리 및 애그리게이션 함수(맵리듀스 등)에 사용하거나, 데이터베이스에 직접 전송하여 실행할 수 있다.

쿼리에서의 자바스크립트 예:

```javascript
> db.foo.find({$where : function() { return this.x == this.y; }})
```

데이터베이스에 전송하여 실행하는 코드 예:

```javascript
> db.eval(function(name) { return "Hello, "+name; }, ["Joe"])
```

이는 "Hello, Joe"를 반환한다.

자바스크립트 변수는 데이터베이스에 저장할 수 있으며, 다른 자바스크립트에서 전역 변수로 사용할 수 있다. 함수를 포함한 모든 유효한 자바스크립트 형식을 저장할 수 있으므로, 자바스크립트를 "저장 프로시저"로 활용할 수 있다.

3.8. 캡트 컬렉션

몽고DB는 캡트 컬렉션(capped collection)이라는 고정 크기 컬렉션을 지원한다. 캡트 컬렉션은 삽입 순서를 유지하며, 지정된 크기에 도달하면 원형 큐처럼 작동한다. 캡트 컬렉션은 크기(선택적으로 요소 수도 사용 가능)를 지정하여 생성되며, 삽입된 순서대로 컬렉션을 관리한다. 지정된 크기에 도달하면 오래된 것부터 순서대로 삭제된다.

캡트 컬렉션에서는 tailable cursor라고 하는 특수한 커서를 사용할 수 있다. 이 커서의 이름은 `tail -f`에서 유래되었으며, 결과를 반환한 후에도 닫지 않고 계속 대기하며, 그 이후에 추가된 문서를 계속 반환한다.

3.9. 트랜잭션

2018년 6월, 몽고DB 4.0 버전이 정식 출시되면서 멀티 도큐먼트 ACID 트랜잭션 지원이 추가되었다.

4. 에디션

몽고DB는 커뮤니티 서버, 엔터프라이즈 서버, 아틀라스 등 다양한 에디션으로 제공된다.

* 몽고DB 커뮤니티 서버: 윈도우, 리눅스, macOS에서 무료로 사용할 수 있다.
* 몽고DB 엔터프라이즈 서버: 몽고DB의 상용 에디션으로, 몽고DB 엔터프라이즈 어드밴스드 구독을 통해 사용할 수 있다.
* 몽고DB 아틀라스: 아마존 웹 서비스(AWS), 마이크로소프트 애저(Microsoft Azure), 구글 클라우드 플랫폼(Google Cloud Platform)에서 실행되는 클라우드 기반의 완전 관리형 서비스이다.

4.1. 몽고DB 커뮤니티 서버

--
MongoDB 커뮤니티 에디션은 윈도우, 리눅스, macOS에서 무료로 사용할 수 있다.

Mongo라는 이름은 영어로 "엄청나게 큰"을 의미하는 "humongous"에서 유래되었다.

MongoDB는 RDBMS가 아닌, 소위 NoSQL이라고 불리는 데이터베이스에 분류되는 것이다. RDBMS처럼 레코드를 테이블에 저장하는 것이 아니라, "도큐먼트"라고 불리는 구조적 데이터를 JSON과 유사한 형식으로 표현하고, 그 도큐먼트의 집합을 "컬렉션"으로 관리한다(이 데이터의 물리적인 저장은 BSON이라고 불리는 JSON의 바이너리 버전과 같은 형식으로 수행된다). 컬렉션은 RDBMS와 같은 고정적인 스키마를 갖지 않는다. 도큐먼트는 복잡한 계층 구조를 가질 수도 있으며, 이러한 구조에 포함된 필드를 지정한 쿼리 및 인덱스 생성을 간단한 지정으로 수행할 수 있다. RDBMS처럼 고도의 조인 연산을 효율적으로 수행할 수는 없지만, 데이터의 추가, 갱신, 삭제, 쿼리는 빠르게 수행할 수 있다. 또한, 애플리케이션은 자신의 구조와 데이터 형식에 맞는 자연스러운 형태로 데이터를 저장할 수 있으므로, 다루는 데이터의 특성에 따라 RDBMS보다 쉽고 빠르게 개발을 수행할 수 있다.

MongoDB의 개발은 10gen(현 MongoDB Inc.)에 의해 2007년 10월부터 시작되었으며, 최초의 공개 릴리스는 2009년 2월에 이루어졌다.

2014년 12월에 데이터베이스 스토리지 엔진인 WiredTiger를 인수했으며, 2015년의 주요 업데이트 릴리스 버전 3.0부터 내부에 통합되었다. 도큐먼트 단위의 락이 가능해지면서 특히 데이터 쓰기 시의 성능이 개선되었다.

인기 있는 데이터베이스를 랭킹 형식으로 공표하는 DB-Engines에 따르면 2018년 2월 시점에서 Oracle Database, MySQL, Microsoft SQL Server, PostgreSQL 등의 역사가 있는 RDBMS 제품에 이어 5위를 차지하고 있으며, 2000년대 후반부터 다수 제작된 NoSQL 데이터베이스 중에서 선두적인 점유율을 차지하고 있다.

2019년 1월에 AWS에 의해 MongoDB 호환의 Amazon DocumentDB가 출시되었다.

4.2. 몽고DB 엔터프라이즈 서버

MongoDB 엔터프라이즈 서버는 MongoDB의 상용 에디션으로, MongoDB 엔터프라이즈 어드밴스드 구독의 일부로 제공된다.

4.3. 몽고DB 아틀라스

몽고DB 아틀라스는 아마존 웹 서비스(AWS), 마이크로소프트 애저(Microsoft Azure), 구글 클라우드 플랫폼(Google Cloud Platform)에서 실행되는 클라우드 기반의 완전 관리형 서비스이다.

2022년 3월 10일, 몽고DB는 러시아-우크라이나 전쟁과 관련된 미국의 제재로 인해 러시아벨라루스 사용자들에게 MongoDB Atlas 플랫폼에 저장된 데이터가 삭제될 것이라고 경고했다.

5. 아키텍처

MongoDB는 RDBMS가 아닌 NoSQL 데이터베이스로 분류된다. RDBMS처럼 레코드를 테이블에 저장하는 대신, "도큐먼트"라고 불리는 구조적 데이터를 JSON과 유사한 형식으로 표현하고, 이 도큐먼트의 집합을 "컬렉션"으로 관리한다. 데이터의 물리적인 저장은 BSON이라고 불리는 JSON의 바이너리 버전과 같은 형식으로 수행된다.

컬렉션은 RDBMS와 같은 고정적인 스키마를 갖지 않는다. 도큐먼트는 복잡한 계층 구조를 가질 수 있으며, 이러한 구조에 포함된 필드를 지정한 쿼리 및 인덱스 생성을 간단하게 수행할 수 있다. RDBMS처럼 고도의 조인 연산을 효율적으로 수행할 수는 없지만, 데이터 추가, 갱신, 삭제, 쿼리는 빠르게 수행할 수 있다. 애플리케이션은 자신의 구조와 데이터 형식에 맞는 자연스러운 형태로 데이터를 저장할 수 있으므로, 다루는 데이터의 특성에 따라 RDBMS보다 쉽고 빠르게 개발할 수 있다.

2014년 12월에는 데이터베이스 스토리지 엔진인 WiredTiger를 인수했으며, 2015년의 주요 업데이트 릴리스 버전 3.0부터 내부에 통합되었다. 도큐먼트 단위의 락이 가능해지면서 특히 데이터 쓰기 시의 성능이 개선되었다.

5.1. 프로그래밍 언어 접근성

MongoDB는 주요 프로그래밍 언어 및 개발 환경에 대한 공식 드라이버를 제공한다. 또한 다른 프로그래밍 언어 및 프레임워크에 대한 비공식 또는 커뮤니티 지원 드라이버도 많이 존재한다.

MongoDB는 다음과 같은 언어에 공식 드라이버를 제공한다.

👆
좌우로 밀어서 보기


비공식 드라이버도 다수 존재한다: C#과 .NET, 콜드퓨전, 델파이, 얼랭, 팩터, 팬텀, 고, 자바 가상 머신 언어 (클로저, 그루비, 스칼라 등), 루아, HTTP REST, 루비, 래킷, 스몰토크, 러스트

5.2. 관리 및 그래픽 프론트엔드

Robomongo 0.8.5를 사용한 몽고DB 레코드 삽입
Robomongo 0.8.5를 사용한 몽고DB 레코드 삽입

데이터베이스의 주요 인터페이스는 몽고 셸(mongo shell)이었다. 몽고DB 3.2부터는 네이티브 GUI인 몽고DB 컴퍼스(MongoDB Compass)가 도입되었다. 관리 및 데이터 보기를 위한 사용자 인터페이스를 제공하는 제품과 타사 프로젝트도 있다.

가장 강력하고 편리한 관리 도구는 데이터베이스 셸인 `mongo`이다. 이 셸은 데이터베이스의 내용을 열람, 삽입, 삭제, 업데이트하는 기능을 제공하는 동시에 복제 정보를 얻거나, 샤딩을 설정하거나, 서버를 중지하거나, JavaScript를 실행할 수 있다. `mongo`는 SpiderMonkey 위에 구축되어 있기 때문에 MongoDB 서버에 연결하는 동시에 완전한 JavaScript 셸이기도 하다.

관리 정보는 웹 기반 관리 인터페이스를 통해서도 접근할 수 있다. 이것은 현재 서버 정보를 전송하는 단순한 HTML 웹 페이지이다. 기본적으로 이 인터페이스는 데이터베이스 포트의 1000번 위 포트 (http://localhost:28017)에서 접근할 수 있다. `--norest` 옵션을 통해 이 기능을 비활성화할 수 있다.

`mongostat`는 최근 통계 정보를 간단하게 나열하여 표시하는 명령줄 도구이다. 삽입된 수, 업데이트된 수, 삭제된 수, 쿼리 수, 실행된 명령 수, 데이터베이스가 잠긴 시간의 백분율, 메모리 사용량 등을 표시한다.

`mongosniff`는 MongoDB의 네트워크 트래픽을 엿보는 도구이다.

데이터 시각화를 돕는 몇 가지 GUI가 개발되었다:

* Fang of Mongo - Django와 jQuery로 제작된 웹 기반 UI
* Futon4Mongo - CouchDB의 Futon 웹 인터페이스 클론
* Mongo3 - Ruby 기반 인터페이스
* MongoHub - MongoDB를 관리하기 위한 네이티브 macOS 애플리케이션
* Opricot - PHP로 작성된 웹 기반 MongoDB 셸
* http://www.nucleonsoftware.com/ Database Master - Windows 기반 MongoDB 관리 도구. RDBMS도 지원
* http://www.nucleonsoftware.com/ BI Studio - Windows 기반 MongoDB 관리 도구. RDBMS도 지원
* https://github.com/iwind/rockmongo RockMongo - PHP 기반
* https://www.robomongo.org/ Robo 3T (구 Robomongo) - mongo 셸을 내장한 크로스 플랫폼(Windows, Mac, Linux) MongoDB 관리 도구

6. 라이선스

MongoDB 커뮤니티 서버는 소스 사용 가능한 [https://www.mongodb.com/licensing/server-side-public-license Server Side Public License](SSPL)로 제공된다. 원래는 오픈 소스 GNU Affero General Public License (AGPL)가 적용되었으나, 클라우드 사업자가 MongoDB를 SaaS로 제공하면서 커뮤니티에 기여하지 않는 문제가 발생하여 2018년 10월 16일부로 더 사용에 제한이 있는 SSPL로 변경되었다. 언어 드라이버는 오픈 소스 Apache License 라이선스 하에 제공된다.

AGPL ver.3으로 라이선스된 최신 버전은 4.0.3 (안정) 및 4.1.4이다.

7. 버그 보고 및 비판

MongoDB는 서버 사이드 공용 라이선스(SSPL)라는 비자유 라이선스로 배포된다. 이는 GNU 아페로 공용 일반 공중 사용 허가서를 대체하며, 서비스 형태로 소프트웨어를 공개하는 경우 전체 소스 코드를 제공해야 한다는 조항이 추가되었다. 오픈 소스 이니셔티브는 SSPL을 오픈 소스 라이선스로 인정하지 않았다. 이러한 라이선스 변경으로 인해 데비안, 페도라, 레드햇 엔터프라이즈 리눅스 등의 배포판에서 MongoDB가 제거되기도 했다. 과거 버전에서는 설계상의 문제로 데이터 영속성이 보장되지 않는다는 지적도 있었다.

7.1. 보안

몽고DB는 과거 버전에 설계상 문제가 있어 데이터 영속성이 보장되지 않는다는 지적이 있었다.

7.2. 기술적 비판

과거 버전에 설계상의 문제로 데이터의 영속성이 보장되지 않는다는 지적이 있었다.

8. 몽고DB 콘퍼런스

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

👆
좌우로 밀어서 보기
연도날짜도시장소비고
20146월 23–25일뉴욕쉐라톤 타임스 스퀘어 호텔
20156월 1–2일뉴욕쉐라톤 타임스 스퀘어 호텔
20166월 28–29일뉴욕뉴욕 힐튼 미드타운
20176월 20–21일시카고하얏트 리젠시 시카고뉴욕 외에서 처음 개최
20186월 26–27일뉴욕뉴욕 힐튼 미드타운
20196월 17–19일뉴욕뉴욕 힐튼 미드타운
20205월 4–6일온라인코로나19 범유행으로 인해 대면 콘퍼런스를 취소하고 완전히 온라인으로 시행
20217월 13–14일온라인코로나19 범유행으로 인해 온라인으로 콘퍼런스 개최
20226월 7–9일뉴욕자비츠 센터

9. 주요 사용자

다음은 몽고DB를 사용하는 주요 기업 및 단체 목록이다.

* MTV 네트웍스
* 크레이그리스트
* 디즈니 인터랙티브 미디어 그룹
* 워드닉
* 디아스포라
* 셔터플라이
* 포스퀘어
* 비트.ly
* 뉴욕 타임스
* 소스포지
* 비즈니스 인사이더
* 엣시
* CERN LHC
* 섬택
* 앱스케일
* 우버
* 아메바
* [https://www.mittilifestyle.com/ MittiLifestyle]
* 아마데우스
* EPIC games (포트나이트)
* FANUC (MT-LINK i)
* IIJ
* OPTiM
* 중국동방항공(中国東方航空)

10. 참고 문헌

* 카일 뱅커, 《MongoDB 인 액션》, 매닝, 2011년 3월 28일, 375쪽, ISBN 978-1-935182-87-0
* 크리스티나 초도로우; 마이클 디롤프, 《MongoDB: 더 데피니티브 가이드》, O'Reilly, 2010년 9월 23일, 216쪽, ISBN 978-1-4493-8156-1
* 미치 피틀, 《웹 개발자를 위한 MongoDB》, 애디슨-웨슬리, 2011년 3월 3일, 360쪽, ISBN 978-0-321-70533-4
* 팀 호킨스; 엘코 플러그; 피터 멥리, 《MongoDB 완벽 가이드: 클라우드 및 데스크톱 컴퓨팅을 위한 NoSQL 데이터베이스》, Apress, 2010년 9월 26일, 350쪽, ISBN 978-1-4302-3051-9