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
77
Por que suas relações importam
Lucas Santos
July 12, 2019
Tweet
Share
More Decks by Lucas Santos
See All by Lucas Santos
Escalando globalmente com TypeScript e JavaScript na Klarna
khaosdoctor
0
150
The future of JavaScript
khaosdoctor
0
28
TypeScript tips that could save your life
khaosdoctor
0
86
É hora de falar sobre Deno
khaosdoctor
0
62
JS Software testing for beginners
khaosdoctor
0
34
Ambientes dinâmicos com GitHub Actions
khaosdoctor
0
30
The Dark Side of JavaScript
khaosdoctor
0
51
Integrating Containers Into JavaScript
khaosdoctor
0
38
Entendendo o ecossistema de containers
khaosdoctor
1
740
Other Decks in Programming
See All in Programming
The Future of C++ Interoperability: Insights from Porting a Game to Swift
teamhimeh
0
270
Introduction for Open Source Swift Workshop
giginet
PRO
0
180
Open Source Swiftc Workshop
kitasuke
1
180
Parallel Socket Communication in Swift
s_shimotori
0
220
Open Source Swift Workshop - Foundation and first party libraries
ikesyo
0
180
ここ1~2年くらいで 使えるようになった(主要ブラウザーの最新版 がすべて対応した ) ウェブの新機能について ランダムに喋る!
myzkyy
9
6.5k
document.write再考
brn
5
2.5k
とにかくHTTP3をライトニングに話す / Anyway, I'll talk to Lightning about HTTP3.
seike460
PRO
0
120
決断するための勇気、そのためのBacklog / Courage to make decisions, Backlog for that.
seike460
PRO
4
1.9k
マイ隙間家具OSSたちのご紹介
karupanerura
2
150
今の SmartHR にエンジニアで入社するとどうなるの?
daisukeshinoku
1
360
htmx is fun!
codehex
2
190
Featured
See All Featured
Building Applications with DynamoDB
mza
88
5.6k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.2k
Designing with Data
zakiwarfel
94
4.8k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
67
38k
Gamification - CAS2011
davidbonilla
76
4.5k
The Pragmatic Product Professional
lauravandoore
24
5.7k
Infographics Made Easy
chrislema
237
18k
What the flash - Photography Introduction
edds
64
11k
What’s in a name? Adding method to the madness
productmarketing
PRO
14
2.6k
Code Reviewing Like a Champion
maltzj
512
39k
The Art of Programming - Codeland 2020
erikaheidi
40
12k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
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_