현재 집계 프레임 워크 결과는 16MB를 초과 할 수 없습니다. 하지만 필자는 더 중요한 것은 AF가 "본디지"유형의 쿼리를 본질적으로 동적으로 (예 : 사용자가 런타임에 필터를 제공하는 것처럼) 더 적합하다는 것을 알 수 있습니다.
MapReduce는 미리 계획되어있어 훨씬 더 복잡하고 매우 큰 출력을 생성 할 수 있습니다 (새 컬렉션에 output
). 사용자가 제어 할 수있는 런타임 입력이 없습니다. 단순히 AF로는 불가능한 (또는 효율적인) 복잡한 객체 조작을 추가 할 수 있습니다. 예를 들어 MapReduce에서 자바 스크립트를 작성하는 것처럼 자식 배열 (또는 배열과 같은 요소)을 조작하는 것은 간단하지만 AF에서는 매우 다루기 쉽고 관리하기 어려울 수 있습니다.
가장 큰 문제는 MapReduce가 자동으로 최신 상태로 유지되지 않으며 완료 시점을 예측하기 어렵다는 것입니다. 다른 NoSQL 옵션과 달리 최신 상태로 유지할 수있는 자체 솔루션을 구현해야합니다. 일반적으로 이는 일종의 타임 스탬프이며, 그림은 here과 같이 점진적인 MapReduce 업데이트입니다. 데이터가 다소 오래되어서 완료하는 데 알 수없는 시간이 걸릴 것이라는 점을 인정해야 할 수 있습니다.
StackOverflow를 둘러 보면 MongoDB의 문제를 해결할 수있는 많은 창의적인 솔루션을 찾을 수 있습니다. 많은 솔루션은 MongoDB의 일반적인 쿼리 엔진의 한계를 해결하기 위해 Aggregation Framework를 사용하며 " 라이브/즉시 "결과. (일부 AF 파이프 라인은 매우 복잡하지만 개발자/팀/제품에 따라 문제가 될 수 있음).
MR은 동시에 다른 별개의 mrs를 실행할 수 있다는 점에서 다중 스레드입니다. 또한 sinlge MR은 여전히 단일 스레드이며, MR도 여전히 느려질 것입니다. i .. MR은 인덱스를 사용할 수 없습니다. – Sammaye