Simultaneidade de redução de mapa
Observação
Pipeline de Agregação como uma Alternativa ao map-reduce
A partir do MongoDB , 5.0, map-reduce está obsoleto:
Em vez de map-reduce, você deve usar um aggregation pipeline. aggregation pipeline fornece melhor desempenho e usabilidade do que a redução de mapa.
Você pode reescrever operações de redução de mapa utilizando estágios do pipeline de agregação, como
$group
,$merge
e outros.Nas operações de map-reduce que exigem funcionalidade personalizada, você pode usar os operadores de agregação
$accumulator
e$function
. Você pode usar esses operadores para definir expressões de agregação personalizadas no JavaScript.
Para obter exemplos de alternativas de aggregation pipeline para map-reduce, consulte:
A operação map-reduce é composta de muitas tarefas, incluindo leituras da collection de entrada, execuções da função map
, execuções da função reduce
, gravações em uma coleção temporária durante o processamento e gravações na coleção de saída.
Durante a operação, o map-reduce usa as seguintes travas:
A fase de leitura usa um bloqueio de leitura. Produz a cada 100 documentos.
A inserção na collection temporária usa um bloqueio de escrita para uma única escrita.
Se a coleção de saída não existir, a criação da coleção de saída usará um bloqueio de escrita.
Se a collection de saída existir, então a ação de saída (ou seja,
merge
,replace
,reduce
) aceita um bloqueio de escrita. Este bloqueio de escrita é global e bloqueia todas as operações na instânciamongod
.