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
Por que suas relações importam
Search
Lucas Santos
July 12, 2019
Programming
0
96
Por que suas relações importam
Lucas Santos
July 12, 2019
Tweet
Share
More Decks by Lucas Santos
See All by Lucas Santos
The Hitchhiker's Guide for an Amazing API with TypeScript
khaosdoctor
0
88
Escalando globalmente com TypeScript e JavaScript na Klarna
khaosdoctor
0
190
The future of JavaScript
khaosdoctor
0
57
TypeScript tips that could save your life
khaosdoctor
0
190
É hora de falar sobre Deno
khaosdoctor
0
72
JS Software testing for beginners
khaosdoctor
0
74
Ambientes dinâmicos com GitHub Actions
khaosdoctor
0
39
The Dark Side of JavaScript
khaosdoctor
0
73
Integrating Containers Into JavaScript
khaosdoctor
0
64
Other Decks in Programming
See All in Programming
MCPで実現するAIエージェント駆動のNext.jsアプリデバッグ手法
nyatinte
7
970
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
230
The state patternの実践 個人開発で培ったpractice集
miyanokomiya
0
150
Google I/O recap web編 大分Web祭り2025
kponda
0
2.9k
testingを眺める
matumoto
1
120
旅行プランAIエージェント開発の裏側
ippo012
1
500
The State of Fluid (2025)
s2b
0
200
Infer入門
riru
4
1.6k
Claude Codeで実装以外の開発フロー、どこまで自動化できるか?失敗と成功
ndadayo
3
1.7k
Flutter로 Gemini와 MCP를 활용한 Agentic App 만들기 - 박제창 2025 I/O Extended Seoul
itsmedreamwalker
0
160
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
140
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
930
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
302
21k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
20k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
RailsConf 2023
tenderlove
30
1.2k
4 Signs Your Business is Dying
shpigford
184
22k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
A designer walks into a library…
pauljervisheath
207
24k
Transcript
Por que as relações entre seus dados importam?
senior solutions architect_ quem sou eu_ /khaosdoctor @_staticvoid lsantos.dev @khaosdoctor
nindoo.ai
obarra.co trainingcenter.io
abcdevelopers.org cupom: LSANTOSABCDEV2019
slsweek.netlify.com
Bancos de dados hoje_
lidamos bem com o crescimento dos dados
e o crescimento das relações entre esses dados?
O problema dos relacionamentos_
Bancos relacionais_
solução?
removemos os relacionamentos_
Bancos não-relacionais
Grafos_
O que são grafos_
nós_
1 1 Um nó simples
1 { name: 'alice' } Um nó com propriedades
alice:Person { name: 'alice' } Um nó com uma label
arestas_
FOLLOWS Relacionamento orientado 1 { name: 'alice' } 2 {
name: 'bob' }
1 { name: 'alice' } 2 { name: 'bob' }
FOLLOWS Relacionamento não orientado
FOLLOWS Relacionamento orientado com propriedades 1 { name: 'alice' }
2 { name: 'bob' } {since: '2018-04-10'}
None
None
Neo4J
Neo4J o banco para todos os seus grafos - Criado
em 2007 como uma alternativa a bancos relacionais - Escrito em Java - Utiliza Cypher como query language - Não é o único banco de grafos
Vantagens em bancos de grafos_
flexibilidade_
naturalidade_
velocidade_
Armazenamento nativo_
Armazenamento simulado_
Query language_
cypher
(a:Person)-[:FOLLOWS]->(b:Person)
Como montar uma query_
Quem me segue e segue outra pessoa que ainda não
me segue?
extrair constantes_
quem sou "eu"?
(me:Person {handler: '_StaticVoid'})
descrever o relacionamento_
uma pessoa que me segue
(p1:Person)-[r:FOLLOWS]->(me)
e segue outra pessoa
(p2:Person)<-[:FOLLOWS]-(p1:Person)-[:FOLLOWS]->(me)
que ainda não me segue
negações
WHERE NOT (p2)-[:FOLLOWS]->(me)
None
None
Extraindo inteligência
Teoria dos grafos_
Teoria dos Grafos - "Criada" por Leonhard Euler em 1736
- Visa analisar e extrair informações relevantes sobre grafos - Ótima para analisar grupos com relações bem estabelecidas - O problema das 7 pontes de Königsberg é o mais famoso - O problema do caixeiro viajante é um problema NP-Completo de grafos
Knight's tour
Inteligência Porque é muito mais do que um desenho -
Centralidade - Proximidade - PageRanking - ArticleRanking - Detecção de comunidades - Componentes conexos - Contagem de tríades - Encontrar caminhos - Menor caminho - Dijkstra - Similaridade - Predição de relacionamentos
Centralidade
importância de um nó sobre a rede
Betwenness A influência de um nó sobre o fluxo de
informações em um grafo.
None
Closeness (proximidade) Nós que são capazes de transmitir informação muito
rápido para a rede
None
PageRank A popularidade de um nó na rede
None
Detecção de comunidades_
Detecção de Louvain
None
Similaridade_
Jaccard Similaridade entre dois conjuntos
None
referências_ - https://en.wikipedia.org/wiki/Neo4j - https://en.wikipedia.org/wiki/Knight%27s_tour - https://pt.wikipedia.org/wiki/NP-completo - https://pt.wikipedia.org/wiki/Problema_do_caixeiro-viajante -
https://en.wikipedia.org/wiki/Seven_Bridges_of_Königsberg - https://en.wikipedia.org/wiki/Graph_theory - https://neo4j.com/docs/cypher-manual/current/introduction/ - https://neo4j.com/developer/cypher/ - https://neo4j.com/docs/getting-started/current/get-started-with-neo4j/ - https://neo4j.com/docs/graph-algorithms/current/introduction/ - https://www.youtube.com/watch?v=l76udM3wB4U&list=PL9Hl4pk2FsvWM9GWaguRhlCQ-pa-ERd4U - https://medium.com/neo4j/graph-visualization-with-neo4j-using-neovis-js-a2ecaaa7c379 - https://github.com/neo4j-contrib/neovis.js - https://neo4j.com/developer/tools-graph-visualization/
/khaosdoctor @_staticvoid lsantos.dev @khaosdoctor obrigado_