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

Neo4j - Dia a dia com grafos, Neo4j e Ruby

hannelita
October 18, 2014

Neo4j - Dia a dia com grafos, Neo4j e Ruby

Palestra no TDC 2014 POA - trilha de Ruby

hannelita

October 18, 2014
Tweet

More Decks by hannelita

Other Decks in Technology

Transcript

  1. Neo4j
    Sua vida com grafos!

    View Slide

  2. Oi!
    • Hanneli (‘H' mudo)
    • CodeMiner 42
    • Café, Pokémon, Lego e bichos <3
    HIRING

    View Slide

  3. faculdade
    precisa
    representação
    fácil
    memorizar
    Afinal, por que grafos?
    Numa trilha de Ruby!

    View Slide

  4. O que não vamos ver aqui
    • Teoria avançada de grafos
    • Guia completo de Neo4j
    • Introdução sobre NoSQL
    • Exemplos de Redes Sociais (CLÁSSICO)

    View Slide

  5. Agenda
    Teoria
    básica
    surge
    representação
    Neo4j
    bancos
    Primeiros
    passos
    vantagens
    quando não
    usar

    View Slide

  6. Dia a dia com grafos
    Um exemplo além de Twitter e Facebook

    View Slide

  7. Exemplo
    Como a Codeminer monta os times para os projetos?

    View Slide

  8. Exemplo
    Como a Codeminer monta os times para os projetos?
    MATCH

    View Slide

  9. Quantas vezes
    você já não fez
    desenhos assim?

    View Slide

  10. Breve histórico
    • Euler
    • Estatística
    • Patterns/relacionamento
    • Dependências
    • Trajetos

    View Slide

  11. Persistência

    View Slide

  12. Persistência

    View Slide

  13. Persistência
    Qual uma das primeiras matérias que!
    vemos na faculdade?

    View Slide

  14. Quem lembra?
    Fila
    Stack
    Hash
    Tree
    Grafos

    View Slide

  15. Persistência
    Qual a primeira forma de armazenamento que vemos!
    na disciplina de Banco de dados?
    a. Fila
    b. Stack
    c. Hash
    d. Tree
    e. N.D.A

    View Slide

  16. Persistência

    View Slide

  17. Você já tinha pensado nisso?

    View Slide

  18. Quando me dei conta
    disso?

    View Slide

  19. Modelagem de usinas
    hidrelétricas

    View Slide

  20. Falhas modelo relacional

    View Slide

  21. Quero representar isso no modelo relacional
    USINA
    localizacao:float
    capacidade:float
    nome:float
    cidades_que_atende_ids:CIDADE
    usinas_vizinhas_id:USINA populacao:int

    View Slide

  22. FUUUUUUU….

    View Slide

  23. FUUUUUUU….
    • De acordo com a população, qual vizinhança de
    usinas devo formar?
    • Se uma usina cair, qual a melhor para reassumir
    sem comprometer o sistema?
    • Como evitar subutilização?
    • Como monitorar?

    View Slide

  24. Double Fail….

    View Slide

  25. Desaprendi?

    View Slide

  26. Olhe para isso

    View Slide

  27. Parecidos?

    View Slide

  28. Parecidos?

    View Slide

  29. Bancos orientados
    a grafos
    Porque nem tudo precisa viver em tabelas

    View Slide

  30. Neo4j

    View Slide

  31. Nossas usinas agora em grafos
    Itaipu!
    é_vizinha
    Itá
    latitude:33.43
    longitude:32:33
    capacidade:1400
    latitude:43.43
    longitude:56:33
    capacidade:700
    tensao_linha:230

    View Slide

  32. Nossas usinas agora em grafos
    Itaipu!
    é_vizinha
    Itá
    latitude:33.43
    longitude:32:33
    capacidade:1400
    latitude:43.43
    longitude:56:33
    capacidade:700
    tensao_linha:230
    Node
    Relationship
    Attributes
    index

    View Slide

  33. Representação visual

    View Slide

  34. Nossas usinas agora em grafos
    Itaipu!
    alimenta
    Foz do
    iguaçu
    latitude:33.43
    longitude:32:33
    capacidade:1400
    populacao:265000
    alimenta
    Curitiba
    populacao:1700000

    View Slide

  35. Itaipu abastece quantas pessoas?

    View Slide

  36. Traversal - Busca
    Itaipu!
    alimenta
    Foz do
    iguaçu
    latitude:33.43
    longitude:32:33
    capacidade:1400
    populacao:265000
    alimenta
    Curitiba
    populacao:1700000

    View Slide

  37. Cypher

    View Slide

  38. Neo4j com Ruby <3
    neo4j.rb
    Active Record

    View Slide

  39. Neo4j com Ruby <3
    Wrapper da REST API
    Neography

    View Slide

  40. Neo4j - Quando não usar?

    View Slide

  41. Neo4j - Quando não usar?
    • NoSQL Hater?
    • Buscas - cautela (profundidade x largura)
    • Cloud
    • Monitoramento
    • Infra (backup)
    • Pouca RAM

    View Slide

  42. Obrigada!
    @hannelita
    [email protected]

    View Slide

  43. Referências
    • NoSQL Hater?
    • Buscas - cautela (profundidade x largura)
    • Cloud
    • Monitoramento
    • Infra (backup)
    • Pouca RAM

    View Slide