Olá pessoal, tudo bem?

Recentemente, decidi aprender um pouco sobre MapReduce, e espero conseguir repassar aqui o que aprendi até o momento.

Conceito

MapReduce é uma técnica computacional que permite condensar e manipular dados em grande escala, sendo desenvolvido primeiramente (mas não exclusivamente) para processar grandes conjuntos de dados em ambientes distribuídos.

O conceito por trás de MapReduce é bem simples, é “mapear” e “reduzir” :-D. Brincadeiras à parte, o mesmo define uma função para mapear valores em uma coleção e outra função para reduzir o resultado do mapeamento em um modelo de dados diferente (não necessariamente mais simples), geralmente condensado.

Exemplo

Para exemplificar de forma simples, vou utilizar duas coleções, uma para clientes (Customer) e outra para ordens (Order):

MapReduceCol

 

O que temos em comum em ambos os modelos acima é o CustomerId, certo? Então ele será a nossa chave para mapear e reduzir ambas as coleções.

Levando em consideração um cenário onde queremos saber o total das ordens por cliente, temos:

MapReduceResult

 

No exemplo, a função Map está apenas mapeando as colunas CustomerId e Name de Customers, e colunas CustomerId e Total de Orders, separando pelo Id do cliente. A função Reduce está unindo os resultados de clientes ao de ordens, aplicando a função soma no total das ordens.

 

Era isso pessoal, no próximo post irei mostrar um exemplo prático de MapReduce no MongoDB usando C#.

Abraço a todos!