Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Por que suas relações importam
Lucas Santos
July 12, 2019
Programming
0
75
Por que suas relações importam
Lucas Santos
July 12, 2019
Tweet
Share
More Decks by Lucas Santos
See All by Lucas Santos
Ambientes dinâmicos com GitHub Actions
khaosdoctor
0
18
The Dark Side of JavaScript
khaosdoctor
0
28
Integrating Containers Into JavaScript
khaosdoctor
0
13
Entendendo o ecossistema de containers
khaosdoctor
1
470
gRPC with Node.js
khaosdoctor
0
340
Azure Full Cycle
khaosdoctor
0
52
Utilizando Azure para Processos Rápidos
khaosdoctor
0
55
AKS + GitHub Actions
khaosdoctor
0
66
Desmistificando Herança e Protótipos no JS - Short
khaosdoctor
1
110
Other Decks in Programming
See All in Programming
Pythonによる開発をアップデートするライブラリの紹介
daikikatsuragawa
1
690
YATA: collaborative documents and how to make them fast
horusiath
1
170
閱讀原始碼 - 再戰十年的 jQuery
eddie
1
310
RustのWebフレームワーク周りの概観
hayao
0
180
読みやすいコード クラスメソッド 2022 年度新卒研修
januswel
0
2.9k
Pythonで鉄道指向プログラミング
usabarashi
0
130
Go1.19で採用された Pattern-defeating Quicksort の紹介
po3rin
7
1.4k
Efficient UI testing in Android
alexzhukovich
2
130
2022年のモダンCSS改
tonkotsuboy_com
24
17k
FutureCon 2022 FlutterアプリのPerformance測定
harukafujita
0
140
実践 SpiceDB - クライドネイティブ時代をサバイブできるパーミッション管理の実装を目指して / Practical SpiceDB
lmt_swallow
0
130
それ全部エラーメッセージに書いてあるよ!〜独学でPHPプログラミングが上達するたった一つの方法〜
77web
1
160
Featured
See All Featured
How to name files
jennybc
40
63k
The Invisible Side of Design
smashingmag
290
48k
What’s in a name? Adding method to the madness
productmarketing
11
1.6k
The Web Native Designer (August 2011)
paulrobertlloyd
75
2k
Stop Working from a Prison Cell
hatefulcrawdad
262
17k
Statistics for Hackers
jakevdp
782
210k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
980
Build your cross-platform service in a week with App Engine
jlugia
219
17k
Reflections from 52 weeks, 52 projects
jeffersonlam
337
17k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
316
19k
Building Applications with DynamoDB
mza
84
4.8k
What's new in Ruby 2.0
geeforr
335
30k
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_