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 Slide

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

    View Slide

  3. obarra.co
    trainingcenter.io

    View Slide

  4. abcdevelopers.org
    cupom: LSANTOSABCDEV2019

    View Slide

  5. slsweek.netlify.com

    View Slide

  6. Bancos de dados hoje_

    View Slide

  7. lidamos bem com o crescimento dos
    dados

    View Slide

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

    View Slide

  9. O problema dos
    relacionamentos_

    View Slide

  10. Bancos relacionais_

    View Slide

  11. solução?

    View Slide

  12. removemos os relacionamentos_

    View Slide

  13. Bancos não-relacionais

    View Slide

  14. Grafos_

    View Slide

  15. O que são grafos_

    View Slide

  16. nós_

    View Slide

  17. 1
    1
    Um nó simples

    View Slide

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

    View Slide

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

    View Slide

  20. arestas_

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  24. View Slide

  25. View Slide

  26. Neo4J

    View Slide

  27. 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 Slide

  28. Vantagens em bancos de
    grafos_

    View Slide

  29. flexibilidade_

    View Slide

  30. naturalidade_

    View Slide

  31. velocidade_

    View Slide

  32. Armazenamento nativo_

    View Slide

  33. Armazenamento simulado_

    View Slide

  34. Query language_

    View Slide

  35. cypher

    View Slide

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

    View Slide

  37. Como montar uma query_

    View Slide

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

    View Slide

  39. extrair constantes_

    View Slide

  40. quem sou "eu"?

    View Slide

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

    View Slide

  42. descrever o relacionamento_

    View Slide

  43. uma pessoa que me segue

    View Slide

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

    View Slide

  45. e segue outra pessoa

    View Slide

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

    View Slide

  47. que ainda não me segue

    View Slide

  48. negações

    View Slide

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

    View Slide

  50. View Slide

  51. View Slide

  52. Extraindo inteligência

    View Slide

  53. Teoria dos grafos_

    View Slide

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

  55. Knight's tour

    View Slide

  56. 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 Slide

  57. Centralidade

    View Slide

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

    View Slide

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

    View Slide

  60. View Slide

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

    View Slide

  62. View Slide

  63. PageRank
    A popularidade de um nó na rede

    View Slide

  64. View Slide

  65. Detecção de comunidades_

    View Slide

  66. Detecção de Louvain

    View Slide

  67. View Slide

  68. Similaridade_

    View Slide

  69. Jaccard
    Similaridade entre dois conjuntos

    View Slide

  70. View Slide

  71. 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 Slide

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

    View Slide