Map-Reduce:Adquirindo informações de
dados distribuidos
Edson de Lima ([email protected])Gabriela de Andrade ([email protected])
João Farias ([email protected])Leonardo Borges ([email protected])
Como banco de dados NoSQL guardam seus dados?
● Agregações DDD
– "...cluster of domain objects that can be treated as a single unit." Martin Fowler [1]
O problema com o padrão Agregação
● “E se eu quiser olhar para os dados entre agregados?”
– É fácil adquirir todas as informações de uma venda (Nome do cliente, hora, preço, produto, etc, etc), mas se eu quiser saber sobre o total de vendas no mês de Janeiro?
● Soluções
– Map-Reduce
● Técnica para reorganizar os dados para diferentes clientes
– Persistência Poliglota
Map-Reduce
● Lembrando o ambiente de um Sistema Distribuído
Map-Reduce
● Parte 1: Mapping
Map-Reduce
● Parte 2: Reducing
Map-Reduce
● O que é preciso para realizar uma operação de Map-Reduce?
– Um framework de Map-Reduce
● Hadoop● Spark● Riak
– Definir as funções de mapping, reducing e a query
Map-Reduce
● Exemplo
Map-Reduce: Particionando
● Vários reducers através da criação de partições
Map-Reduce: Combinando
● Reduzindo dados antes de enviar ao reducer
● Combinador-Redutor
Map-Reduce: Two-Step
● Criando operações complexas através de divide-and-conquer de pequenas operações de Map-Reduce
● Resultados intermediários: Materalized Views (M.V.)
Map-Reduce: Atualização de Dados
● Quando devemos re-computadar os dados?
– Mapping: Quando o input mudar
– Reduce: Quando os resultados do mapping mudarem
● Como evitar re-computação de reduções?
– Partições
– Se a função de redução é combinável e as mudanças são aditivas
● Faça redução do resultados anteriores (M.V.) e apenas dos novos dados
Map-Reduce: Principais pontos
● Como o padrão é usado para adquirir informação de negócio em um ambiente onde o modelo de dados não favorece isso, maximizando paralelismo, reuso de computação e tolerância a falhas
● Como aumentar a eficiência das operações de Map-Reduce
– Organização de dados: Partições e combinadores
– Pipelines de operações de Map-Reduce
– Saber quando é necessário re-computar resultados
Fontes e links
● Martin Fowler sobre o padrão Agregação
– Aggregate Oriented Database
● http://martinfowler.com/bliki/AggregateOrientedDatabase.html
– DDD-Aggregate
● http://martinfowler.com/bliki/DDD_Aggregate.html● NoSQL Distilled - Pramod J. Sadalage e Martin Fowler
– http://martinfowler.com/books/nosql.html
● Simon Miner - Understanding NoSQL
– http://www.math-cs.gordon.edu/courses/cs352/lectures-2012/12_Understanding_NoSQL.pdf
● Map-Reduce Tutorial – MongoDB
– https://docs.mongodb.org/manual/core/map-reduce/
Map-ReduceAdquirindo informações de dados distribuidos
Top Related