Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Map-Reduce e Coleções Fragmentadas

Nesta página

  • collection fragmentada como entrada
  • collection fragmentada como saída

Observação

Pipeline de Agregação como uma Alternativa ao map-reduce

A partir do MongoDB 5.0, map-reduce está obsoleto:

Para obter exemplos de alternativas de aggregation pipeline para map-reduce, consulte:

map-reduce oferece suporte a operações em collection fragmentadas, tanto como entrada quanto como saída. Esta seção descreve os comportamentos de mapReduce específicos para collection fragmentadas.

No entanto, a partir da versão 4.2, MongoDB deprecia a opção map-reduce para criar uma nova collection fragmentada, bem como o uso da sharded opção para map-reduce. Para gerar saída para uma collection fragmentada, crie primeiro a collection fragmentada. O MongoDB 4.2 também descontinua a substituição de uma collection fragmentada existente.

Ao utilizar a collection fragmentada como entrada para uma operação de map-reduce, o mongos despachará automaticamente a tarefa de map-reduce para cada fragmento em paralelo. Não é necessária nenhuma opção especial. mongos aguardará a conclusão das tarefas em todos os shards.

Se o campo out para mapReduce tiver o valor sharded , o MongoDB fragmentará a collection de saída usando o campo _id como a chave de fragmento.

Observação

A partir da versão 4.2, o MongoDB descontinua o uso da opção sharded para mapReduce/db.collection.mapReduce().

Para gerar saída para uma collection fragmentada:

  • Se a collection de saída não existir, crie primeiro a collection fragmentada.

    A partir da versão 4,2, MongoDB deprecia a opção map-reduce para criar uma nova collection fragmentada e o uso da sharded opção para map-reduce. Dessa forma, para gerar saída para uma collection fragmentada, crie primeiro a collection fragmentada.

    Se você não criou a collection fragmentada primeiro, o MongoDB criará e fragmentará a collection no campo _id . No entanto, é recomendável criar primeiro a collection fragmentada.

  • A partir da versão 4.2, o MongoDB descontinua a substituição de uma collection fragmentada existente.

  • A partir da versão 4.0, se a collection de output já existir, mas não estiver fragmentada, o map-reduce falhará.

  • Para uma nova collection fragmentada ou vazia, o MongoDB utiliza os resultados do primeiro estágio da operação de map-reduce para criar as parte iniciais distribuídas entre os fragmentos.

  • mongos despacha, em paralelo, uma tarefa de pós-processamento de redução de mapa para cada fragmento que possui um bloco. Durante o pós-processamento, cada fragmento extrairá os resultados para seus próprios blocos dos outros fragmentos, executará a redução/finalização final e gravará localmente na coleta de saída.

Observação

  • Durante a tarefa posterior de map-reduce, o MongoDB faz a divisão da parte conforme necessário.

  • O balanceamento de parte para a collection de saída é automaticamente evitado durante o pós-processamento para evitar problemas de simultaneidade.

← Mapear-Reduzir