배치 데이터 처리를 위해 MongoDB에서 Map-Reduce를 사용하려면 다음을 수행하십시오.
맵 함수 정의 : 맵 함수는 컬렉션의 각 문서를 처리하고 키 값 쌍을 방출합니다. 예를 들어, 필드에서 특정 값의 발생을 계산하려면 맵 함수가 각 발생에 대해 키와 카운트 1을 방출합니다.
<code class="javascript">var mapFunction = function() { emit(this.category, 1); };</code>
함수 감소 정의 : 함수 감소는 동일한 키에 대해 맵 함수에 의해 방출 된 값을 집계합니다. 여러 값으로 단일 키의 경우를 처리 할 수 있어야합니다.
<code class="javascript">var reduceFunction = function(key, values) { return Array.sum(values); };</code>
Map-Reduce 작동 실행 : 컬렉션에서 mapReduce
메소드를 사용하여 작업을 실행하십시오. 맵을 지정하고 함수를 줄여야하며 선택적으로 출력 수집을 지정할 수 있습니다.
<code class="javascript">db.collection.mapReduce( mapFunction, reduceFunction, { out: "result_collection" } );</code>
결과 분석 : MAP- 레지브 작동이 완료되면 출력 수집을 쿼리하여 결과를 분석 할 수 있습니다.
<code class="javascript">db.result_collection.find().sort({ value: -1 });</code>
이 프로세스를 사용하면 MongoDB의 대형 데이터 세트에서 복잡한 집계를 수행하여 데이터를보다 관리하기 쉬운 형식으로 변환 할 수 있습니다.
MongoDB의 대형 데이터 세트에 Map-Reduce를 사용하면 몇 가지 성능 이점이 있습니다.
대량 데이터 처리를 위해 MongoDB의 Map-Reduce 작업을 최적화하려면 다음 전략을 고려하십시오.
결과 세트 제한 : 전체 데이터 세트가 필요하지 않은 경우 쿼리를 추가하여 입력을 맵 레지브 작업에 제한하여 처리 된 데이터 양을 줄입니다.
<code class="javascript">db.collection.mapReduce( mapFunction, reduceFunction, { out: "result_collection", query: { date: { $gte: new Date('2023-01-01') } } } );</code>
out
Option을 올바르게 사용하십시오 . mapReduce
메소드의 out
Option은 소형 결과 세트의 경우 {inline: 1}
로 설정할 수 있으며, 이는 컬렉션에 쓰기보다는 결과를 직접 반환하기 때문에 더 빠를 수 있습니다. 그러나 대규모 데이터 세트의 경우 컬렉션 ( {replace: "output_collection"}
)에 쓰고 읽는 것이 더 성능이 우수 할 수 있습니다.finalize
기능을 사용하는 것을 고려하십시오.{merge: "output_collection"}
으로 설정된 out
옵션과 함께 증분 맵 레디스를 사용하십시오. 기존 데이터를 다시 처리하지 않고 새로운 결과로 출력 컬렉션을 업데이트합니다.MongoDB의 Map-Reduce는 주로 실시간 데이터 처리보다는 배치 작업을 위해 설계되었습니다. 이유는 다음과 같습니다.
결론적으로 MAP- 레지브는 데이터 분석 및 처리를위한 강력한 도구가 될 수 있지만 실시간 시나리오에는 이상적이지 않습니다. 실시간 처리하려면이 목적을 위해 설계된 MongoDB의 다른 기능을 사용하는 것을 고려해야합니다.
위 내용은 배치 데이터 처리를 위해 MongoDB에서 Map-Reduce를 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!