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]