Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Por que suas relações importam

Por que suas relações importam

Lucas Santos

July 12, 2019
Tweet

More Decks by Lucas Santos

Other Decks in Programming

Transcript

  1. Por que as relações
    entre seus dados importam?

    View full-size slide

  2. senior solutions architect_
    quem sou eu_
    /khaosdoctor @_staticvoid
    lsantos.dev
    @khaosdoctor
    nindoo.ai

    View full-size slide

  3. obarra.co
    trainingcenter.io

    View full-size slide

  4. abcdevelopers.org
    cupom: LSANTOSABCDEV2019

    View full-size slide

  5. slsweek.netlify.com

    View full-size slide

  6. Bancos de dados hoje_

    View full-size slide

  7. lidamos bem com o crescimento dos
    dados

    View full-size slide

  8. e o crescimento das relações entre
    esses dados?

    View full-size slide

  9. O problema dos
    relacionamentos_

    View full-size slide

  10. Bancos relacionais_

    View full-size slide

  11. removemos os relacionamentos_

    View full-size slide

  12. Bancos não-relacionais

    View full-size slide

  13. O que são grafos_

    View full-size slide

  14. 1
    1
    Um nó simples

    View full-size slide

  15. 1
    { name: 'alice' }
    Um nó com propriedades

    View full-size slide

  16. alice:Person
    { name: 'alice' }
    Um nó com uma label

    View full-size slide

  17. FOLLOWS
    Relacionamento orientado
    1
    { name: 'alice' }
    2
    { name: 'bob' }

    View full-size slide

  18. 1
    { name: 'alice' }
    2
    { name: 'bob' }
    FOLLOWS
    Relacionamento não orientado

    View full-size slide

  19. FOLLOWS
    Relacionamento orientado com propriedades
    1
    { name: 'alice' }
    2
    { name: 'bob' }
    {since: '2018-04-10'}

    View full-size slide

  20. 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

    View full-size slide

  21. Vantagens em bancos de
    grafos_

    View full-size slide

  22. flexibilidade_

    View full-size slide

  23. naturalidade_

    View full-size slide

  24. Armazenamento nativo_

    View full-size slide

  25. Armazenamento simulado_

    View full-size slide

  26. Query language_

    View full-size slide

  27. (a:Person)-[:FOLLOWS]->(b:Person)

    View full-size slide

  28. Como montar uma query_

    View full-size slide

  29. Quem me segue e segue
    outra pessoa que ainda
    não me segue?

    View full-size slide

  30. extrair constantes_

    View full-size slide

  31. quem sou "eu"?

    View full-size slide

  32. (me:Person {handler: '_StaticVoid'})

    View full-size slide

  33. descrever o relacionamento_

    View full-size slide

  34. uma pessoa que me segue

    View full-size slide

  35. (p1:Person)-[r:FOLLOWS]->(me)

    View full-size slide

  36. e segue outra pessoa

    View full-size slide

  37. (p2:Person)<-[:FOLLOWS]-(p1:Person)-[:FOLLOWS]->(me)

    View full-size slide

  38. que ainda não me segue

    View full-size slide

  39. WHERE NOT (p2)-[:FOLLOWS]->(me)

    View full-size slide

  40. Extraindo inteligência

    View full-size slide

  41. Teoria dos grafos_

    View full-size slide

  42. 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

    View full-size slide

  43. Knight's tour

    View full-size slide

  44. 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

    View full-size slide

  45. Centralidade

    View full-size slide

  46. importância de um nó sobre a rede

    View full-size slide

  47. Betwenness
    A influência de um nó sobre o fluxo de informações em um grafo.

    View full-size slide

  48. Closeness (proximidade)
    Nós que são capazes de transmitir informação muito rápido para a rede

    View full-size slide

  49. PageRank
    A popularidade de um nó na rede

    View full-size slide

  50. Detecção de comunidades_

    View full-size slide

  51. Detecção de Louvain

    View full-size slide

  52. Similaridade_

    View full-size slide

  53. Jaccard
    Similaridade entre dois conjuntos

    View full-size slide

  54. 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/

    View full-size slide

  55. /khaosdoctor @_staticvoid
    lsantos.dev @khaosdoctor
    obrigado_

    View full-size slide