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

Por que suas relações importam

Por que suas relações importam

0a8f40c6cc23fb6c8aad4de732c5abaf?s=128

Lucas Santos

July 12, 2019
Tweet

Transcript

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

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

    nindoo.ai
  3. obarra.co trainingcenter.io

  4. abcdevelopers.org cupom: LSANTOSABCDEV2019

  5. slsweek.netlify.com

  6. Bancos de dados hoje_

  7. lidamos bem com o crescimento dos dados

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

  9. O problema dos relacionamentos_

  10. Bancos relacionais_

  11. solução?

  12. removemos os relacionamentos_

  13. Bancos não-relacionais

  14. Grafos_

  15. O que são grafos_

  16. nós_

  17. 1 1 Um nó simples

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

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

  20. arestas_

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

    name: 'bob' }
  22. 1 { name: 'alice' } 2 { name: 'bob' }

    FOLLOWS Relacionamento não orientado
  23. FOLLOWS Relacionamento orientado com propriedades 1 { name: 'alice' }

    2 { name: 'bob' } {since: '2018-04-10'}
  24. None
  25. None
  26. Neo4J

  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
  28. Vantagens em bancos de grafos_

  29. flexibilidade_

  30. naturalidade_

  31. velocidade_

  32. Armazenamento nativo_

  33. Armazenamento simulado_

  34. Query language_

  35. cypher

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

  37. Como montar uma query_

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

    me segue?
  39. extrair constantes_

  40. quem sou "eu"?

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

  42. descrever o relacionamento_

  43. uma pessoa que me segue

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

  45. e segue outra pessoa

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

  47. que ainda não me segue

  48. negações

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

  50. None
  51. None
  52. Extraindo inteligência

  53. Teoria dos grafos_

  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
  55. Knight's tour

  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
  57. Centralidade

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

  59. Betwenness A influência de um nó sobre o fluxo de

    informações em um grafo.
  60. None
  61. Closeness (proximidade) Nós que são capazes de transmitir informação muito

    rápido para a rede
  62. None
  63. PageRank A popularidade de um nó na rede

  64. None
  65. Detecção de comunidades_

  66. Detecção de Louvain

  67. None
  68. Similaridade_

  69. Jaccard Similaridade entre dois conjuntos

  70. None
  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/
  72. /khaosdoctor @_staticvoid lsantos.dev @khaosdoctor obrigado_