MongoDB
Pluggable Storage Engine
수색…
비고
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>
노트 :
- mongodb 3.2 이후 기본 엔진은 WiredTiger입니다.
-
newWiredTigerDBPath
에는 다른 저장소 엔진의 데이터가newWiredTigerDBPath
합니다. 데이터를 마이그레이션하려면 데이터를 덤프하고 새 스토리지 엔진에서 다시 가져와야합니다.
mongodump --out <exportDataDestination>
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
mongorestore <exportDataDestination>
메모리 내
모든 데이터는 빠른 읽기 / 액세스를 위해 메모리에 저장됩니다.
몽고 바위
Facebook의 RocksDB와 통합하기 위해 만들어진 키 - 값 엔진.
융합 - io
SanDisk에서 만든 저장소 엔진으로 OS 파일 시스템 계층을 우회하여 저장소 장치에 직접 쓸 수 있습니다.
TokuMX
Percona에서 만든 프랙탈 트리 인덱스를 사용하는 저장소 엔진입니다.