맵 리듀스 및 샤드 컬렉션을 참조하세요.
참고
맵 리듀스의 대안으로서의 집계 파이프라인
MongoDB 5.0 부터 맵 리듀스 는 더 이상 사용되지 않습니다.
맵 리듀스 대신 집계 파이프라인을 사용해야 합니다. 집계 파이프라인은 맵 리듀스보다 성능과 유용성 측면에서 더 우수합니다.
4}
$group
$merge
, 등과 같은 집계 파이프라인 단계를 사용하여 맵 축소 연산을 다시 작성할 수 있습니다.사용자 지정 기능이 필요한 맵 리듀스 작업의 경우
$accumulator
및$function
집계 연산자를 사용할 수 있습니다. 이러한 연산자를 사용하여 JavaScript에서 사용자 지정 집계 표현식을 정의할 수 있습니다.
맵 리듀스 대안으로서의 집계 파이프라인 예시는 다음을 참조하세요.
맵 리듀스는 샤드 collection에 대한 작업을 입력과 출력 모두에서 지원합니다. 이 섹션에서는 샤드 collection과 관련된 mapReduce
의 동작에 대해 설명합니다.
입력으로서의 샤드 collection
샤딩된 collection을 맵 리듀스 작업의 입력으로 사용하는 경우 mongos
는 job을 각 샤드에 병렬로 자동으로 디스패치합니다. 특별한 옵션은 필요하지 않습니다. mongos
은(는) 모든 샤드의 작업이 완료될 때까지 대기합니다.
출력으로서의 샤드 collection
mapReduce
에 대한 out
필드에 sharded
값이 있는 경우, MongoDB는 _id
필드를 샤드 키로 사용하여 출력 collection을 샤딩합니다.
샤드 collection으로 출력하려면 다음을 수행합니다.
출력 컬렉션이 존재하지 않는 경우 먼저 샤드 컬렉션을 생성합니다.
출력 컬렉션 이 이미 존재하지만 샤딩된 되지 않은 경우 맵 리듀스 듀스가 실패합니다.
새 컬렉션이나 빈 샤드 컬렉션의 경우, MongoDB는 맵 리듀스 작업의 첫 번째 단계 결과를 사용하여 샤드 간에 분산된 초기 청크 를 생성합니다.
mongos
청크를 소유한 모든 샤드에 맵 리듀스 후처리 작업을 병렬로 발송합니다. 후처리 중에 각 샤드는 다른 샤드에서 자체 청크에 대한 결과를 가져오고, 최종 축소/완료를 실행하고, 출력 collection에 로컬로 씁니다.
참고
이후의 맵 리듀스 작업 중에 MongoDB는 필요에 따라 청크를 분할합니다.
동시성 문제를 방지하기 위해 후처리 중에 output collection에 대한 청크 균형 조정이 자동으로 방지됩니다.