Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Grafos em escala: Usando Titan, Faunus e Hadoop para recomendação de produtos
Search
Arthur Grava
March 30, 2016
Technology
0
120
Grafos em escala: Usando Titan, Faunus e Hadoop para recomendação de produtos
Arthur Grava
March 30, 2016
Tweet
Share
Other Decks in Technology
See All in Technology
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
120
コードを書く隙間を見つけて生きていく技術/Findy 思考の現在地
fujiwara3
24
5.2k
PHPカンファレンス小田原2024
ysknsid25
3
660
小さな開発会社がWebサービスを作る理由
polidog
PRO
1
160
キャラクター制御のためのプロンプト術 for LINE Bot
uezo
0
520
[PlatformCon 24] Platform Orchestrators: The Missing Middle of Internal Developer Platforms?
danielbryantuk
1
180
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
710
Postman v10リリース後を振り返る
nagix
0
130
4年前、あるじゃん老害エンジニアLT合戦に登壇、米国西海岸コンピュータ歴史博物館体験記の続編
toshi_atsumi
0
200
シン・Kafka / shin-kafka
oracle4engineer
PRO
7
2.7k
社内勉強会運営のコツ
senoo
6
1.1k
「共通基盤」を超えよ! 今、Platform Engineeringに取り組むべき理由
jacopen
25
5.9k
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
41
12k
The Language of Interfaces
destraynor
151
23k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
124
32k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
A Modern Web Designer's Workflow
chriscoyier
688
190k
Infographics Made Easy
chrislema
237
18k
Why You Should Never Use an ORM
jnunemaker
PRO
50
8.6k
Become a Pro
speakerdeck
PRO
10
4.5k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
13
1.5k
Atom: Resistance is Futile
akmur
258
25k
The Brand Is Dead. Long Live the Brand.
mthomps
48
28k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Transcript
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
• ~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 O quão grande?
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]
None