수색…


비고

MongoDB 3.0에서 MMAP (기본값) 및 WiredTiger는 안정적인 저장소 엔진입니다. 일반적으로 앱의 읽기가 무거운 경우 MMAP을 사용합니다. 쓰기가 많은 경우 WiredTiger를 사용하십시오.

솔루션에는 MMAP로 구성된 노드 하나와 WiredTiger에서 구성 할 수있는 혼합 된 복제 세트 멤버가있을 수도 있습니다. 하나를 사용하여 대용량 데이터를 삽입하고 다른 하나를 분석 도구로 읽을 수 있습니다.

MongoDB 3.2 이후 WiredTiger가 기본 엔진이됩니다.

MMAP

MMAP은 mmap() Linux 명령의 이름을 따서 명명 된 플러그 가능한 저장소 엔진입니다. 파일을 가상 메모리에 매핑하고 읽기 호출을 최적화합니다. 큰 파일을 가지고 있지만 작은 부분 만 읽을 필요가 있다면 mmap() 은 전체 파일을 메모리로 가져 오는 read() 호출보다 훨씬 빠릅니다.

한 가지 단점은 동일한 콜렉션에 대해 병렬로 처리되는 두 개의 쓰기 호출을 가질 수 없다는 것입니다. 따라서 MMAP에는 컬렉션 수준의 잠금 기능이 있으며 WiredTiger가 제공하는 문서 수준의 잠금 기능은 없습니다. 이 컬렉션 잠금은 하나의 MMAP 인덱스가 여러 문서를 참조 할 수 있고 해당 문서가 동시에 업데이트 될 수 있기 때문에 색인이 일치하지 않기 때문에 필요합니다.

WiredTiger

WiredTiger는 LSM 트리를 지원 하여 인덱스를 저장합니다 . LSM 트리는 엄청난 작업량의 무작위 삽입을 작성해야 할 때 쓰기 조작에 더 빠릅니다.

WiredTiger에는 현재 위치 정보없습니다 . 문서의 요소를 업데이트해야하는 경우 이전 문서가 삭제되는 동안 새 문서가 삽입됩니다.

WiredTiger는 또한 문서 수준의 동시성을 제공 합니다 . 두 개의 쓰기 작업이 동일한 문서에 영향을 미치지 않는다고 가정하지만, 그렇게되면 한 번의 작업이 되감기되어 나중에 실행됩니다. 되감기가 거의 없다면 성능이 크게 향상됩니다.

WiredTiger는 파일 시스템의 데이터 및 색인 압축위한 Snappy 및 zLib 알고리즘을 지원합니다. Snappy가 기본값입니다. CPU 사용량은 적지 만 zLib보다 압축률이 낮습니다.

WiredTiger 엔진 사용 방법

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>

노트 :

  1. mongodb 3.2 이후 기본 엔진은 WiredTiger입니다.
  2. newWiredTigerDBPath 에는 다른 저장소 엔진의 데이터가 newWiredTigerDBPath 합니다. 데이터를 마이그레이션하려면 데이터를 덤프하고 새 스토리지 엔진에서 다시 가져와야합니다.
    mongodump --out <exportDataDestination>
    mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
    mongorestore <exportDataDestination>

메모리 내

모든 데이터는 빠른 읽기 / 액세스를 위해 메모리에 저장됩니다.

몽고 바위

Facebook의 RocksDB와 통합하기 위해 만들어진 키 - 값 엔진.

융합 - io

SanDisk에서 만든 저장소 엔진으로 OS 파일 시스템 계층을 우회하여 저장소 장치에 직접 쓸 수 있습니다.

TokuMX

Percona에서 만든 프랙탈 트리 인덱스를 사용하는 저장소 엔진입니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow