Grafos em escala

Transcrição

Grafos em escala
Grafos em escala
Usando Titan, Faunus e Hadoop para
recomendação de produtos
Arthur Grava
Engenheiro Líder de Big Data
@arthur_grava
[email protected]
• 786 lojas físicas
• 8 centros de distribuição
• +18 mil colaboradores
• +40 milhões de clientes
• 16 milhões de visitantes únicos mês
Sistemas de recomendação
Sistemas de recomendação
• Magazine Luiza
• ~40k visitantes únicos por hora
• ~120k views em produtos por hora
Sistemas de recomendação
Sistemas de recomendação
Sistemas de recomendação
Sistemas de recomendação
Sistemas de recomendação
Grafos
Grafos
• Conjunto de vértices
Grafos
• Conjunto de vértices
• Conjunto de arestas entre vértices
Porque utilizar Grafos?
• Modelagem simplificada
• Abstração das relações entre clientes e produtos
• Facilidade em iterar nas entidades e seus
relacionamentos
• Facilidade para o cálculo de comportamentos básicos
Schema
Como representar dados em grafos?
Titan
Facilidades lidando com grafos
• Titan, assim como outros bancos / frameworks, utilizam o
Gremlin (DSL para grafos)
• Facilita a escrita do código
• Compatibilidade com outras plataformas
Facilidades lidando com grafos
Facilidades lidando com grafos
Facilidades lidando com grafos
viu
Facilidades em cálculos simples
Facilidades em cálculos simples
Facilidades em cálculos simples
Facilidades em cálculos simples
Facilidades em cálculos simples
SKU
COUNT
tv_2
1
tv_3
2
tv_4
3
tv_5
1
Facilidades em cálculos simples
SKU
COUNT
tv_4
3
tv_3
2
tv_2
1
tv_5
1
Problemas?
Problemas...
Problemas...
Problemas...
http://thinkaurelius.github.io/titan/wikidoc/0.4.4/Titan-Data-Model.html
Problemas...
http://thinkaurelius.github.io/titan/wikidoc/0.4.4/Titan-Data-Model.html
Problemas...
• Estávamos criando supernodes
• Produtos muito populares causando esse problema
Problemas...
• Estávamos criando supernodes
• Produtos muito populares causando esse problema
Solução
• Remodelagem do grafo
• Manter arestas que podem causar impacto por
volume como unidirecionais
Mais problemas...
• Não temos mais a aresta que de produto para sessão!
Mais problemas...
• Não temos mais a aresta que de produto para sessão!
Stewie
O quão grande?
• ~600 milhões de vértices
• ~ 2.5 bilhões de arestas
• 1TB+ de dados
• Tempo de resposta para uma query simples
• 45ms
• ~2500 read requests / sec
• ~100 write requests / sec
Muito obrigado!
Arthur Grava
Engenheiro Líder de Big Data
@arthur_grava
[email protected]
Perguntas?
Arthur Grava
Engenheiro Líder de Big Data
@arthur_grava
[email protected]