Palestra no TDC 2014 POA - trilha de Ruby
Neo4jSua vida com grafos!
View Slide
Oi!• Hanneli (‘H' mudo)• CodeMiner 42• Café, Pokémon, Lego e bichos <3HIRING
faculdadeprecisarepresentaçãofácilmemorizarAfinal, por que grafos?Numa trilha de Ruby!
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)
AgendaTeoriabásicasurgerepresentaçãoNeo4jbancosPrimeirospassosvantagensquando nãousar
Dia a dia com grafosUm exemplo além de Twitter e Facebook
ExemploComo a Codeminer monta os times para os projetos?
ExemploComo a Codeminer monta os times para os projetos?MATCH
Quantas vezesvocê já não fezdesenhos assim?
Breve histórico• Euler• Estatística• Patterns/relacionamento• Dependências• Trajetos
Persistência
PersistênciaQual uma das primeiras matérias que!vemos na faculdade?
Quem lembra?FilaStackHashTreeGrafos
PersistênciaQual a primeira forma de armazenamento que vemos!na disciplina de Banco de dados?a. Filab. Stackc. Hashd. Treee. N.D.A
Você já tinha pensado nisso?
Quando me dei contadisso?
Modelagem de usinashidrelétricas
Falhas modelo relacional
Quero representar isso no modelo relacionalUSINAlocalizacao:floatcapacidade:floatnome:floatcidades_que_atende_ids:CIDADEusinas_vizinhas_id:USINA populacao:int
FUUUUUUU….
FUUUUUUU….• De acordo com a população, qual vizinhança deusinas devo formar?• Se uma usina cair, qual a melhor para reassumirsem comprometer o sistema?• Como evitar subutilização?• Como monitorar?
Double Fail….
Desaprendi?
Olhe para isso
Parecidos?
Bancos orientadosa grafosPorque nem tudo precisa viver em tabelas
Neo4j
Nossas usinas agora em grafosItaipu!é_vizinhaItálatitude:33.43longitude:32:33capacidade:1400latitude:43.43longitude:56:33capacidade:700tensao_linha:230
Nossas usinas agora em grafosItaipu!é_vizinhaItálatitude:33.43longitude:32:33capacidade:1400latitude:43.43longitude:56:33capacidade:700tensao_linha:230NodeRelationshipAttributesindex
Representação visual
Nossas usinas agora em grafosItaipu!alimentaFoz doiguaçulatitude:33.43longitude:32:33capacidade:1400populacao:265000alimentaCuritibapopulacao:1700000
Itaipu abastece quantas pessoas?
Traversal - BuscaItaipu!alimentaFoz doiguaçulatitude:33.43longitude:32:33capacidade:1400populacao:265000alimentaCuritibapopulacao:1700000
Cypher
Neo4j com Ruby <3neo4j.rbActive Record
Neo4j com Ruby <3Wrapper da REST APINeography
Neo4j - Quando não usar?
Neo4j - Quando não usar?• NoSQL Hater?• Buscas - cautela (profundidade x largura)• Cloud• Monitoramento• Infra (backup)• Pouca RAM
Obrigada!@hannelita[email protected]
Referências• NoSQL Hater?• Buscas - cautela (profundidade x largura)• Cloud• Monitoramento• Infra (backup)• Pouca RAM