dia a dia com grafos, neo4j e ruby

43
Neo4j Sua vida com grafos!

Upload: hanneli-tavante

Post on 24-Jan-2015

128 views

Category:

Technology


4 download

DESCRIPTION

Palestra no TDC POA 2014 - trilha de Ruby

TRANSCRIPT

Page 1: Dia a dia com grafos, Neo4j e Ruby

Neo4jSua vida com grafos!

Page 2: Dia a dia com grafos, Neo4j e Ruby

Oi!

• Hanneli (‘H' mudo)

• CodeMiner 42

• Café, Pokémon, Lego e bichos <3

HIRING

Page 3: Dia a dia com grafos, Neo4j e Ruby

faculdadeprecisa

representação

fácil

memorizar

Afinal, por que grafos?Numa trilha de Ruby!

Page 4: Dia a dia com grafos, Neo4j e 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)

Page 5: Dia a dia com grafos, Neo4j e Ruby

Agenda

Teoria básica

surge representação

Neo4j

bancos

Primeiros passos

vantagensquando não

usar

Page 6: Dia a dia com grafos, Neo4j e Ruby

Dia a dia com grafosUm exemplo além de Twitter e Facebook

Page 7: Dia a dia com grafos, Neo4j e Ruby

ExemploComo a Codeminer monta os times para os projetos?

Page 8: Dia a dia com grafos, Neo4j e Ruby

ExemploComo a Codeminer monta os times para os projetos?

MATCH

Page 9: Dia a dia com grafos, Neo4j e Ruby

Quantas vezes você já não fez

desenhos assim?

Page 10: Dia a dia com grafos, Neo4j e Ruby

Breve histórico• Euler

• Estatística

• Patterns/relacionamento

• Dependências

• Trajetos

Page 11: Dia a dia com grafos, Neo4j e Ruby

Persistência

Page 12: Dia a dia com grafos, Neo4j e Ruby

Persistência

Page 13: Dia a dia com grafos, Neo4j e Ruby

PersistênciaQual uma das primeiras matérias que!

vemos na faculdade?

Page 14: Dia a dia com grafos, Neo4j e Ruby

Quem lembra?

FilaStackHashTree

Grafos

Page 15: Dia a dia com grafos, Neo4j e Ruby

PersistênciaQual a primeira forma de armazenamento que vemos!

na disciplina de Banco de dados?

a. Filab. Stackc. Hashd. Treee. N.D.A

Page 16: Dia a dia com grafos, Neo4j e Ruby

Persistência

Page 17: Dia a dia com grafos, Neo4j e Ruby

Você já tinha pensado nisso?

Page 18: Dia a dia com grafos, Neo4j e Ruby

Quando me dei conta disso?

Page 19: Dia a dia com grafos, Neo4j e Ruby

Modelagem de usinas hidrelétricas

Page 20: Dia a dia com grafos, Neo4j e Ruby

Falhas modelo relacional

Page 21: Dia a dia com grafos, Neo4j e Ruby

Quero representar isso no modelo relacional

USINAlocalizacao:floatcapacidade:floatnome:floatcidades_que_atende_ids:CIDADEusinas_vizinhas_id:USINA populacao:int

Page 22: Dia a dia com grafos, Neo4j e Ruby

FUUUUUUU….

Page 23: Dia a dia com grafos, Neo4j e Ruby

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?

Page 24: Dia a dia com grafos, Neo4j e Ruby

Double Fail….

Page 25: Dia a dia com grafos, Neo4j e Ruby

Desaprendi?

Page 26: Dia a dia com grafos, Neo4j e Ruby

Olhe para isso

Page 27: Dia a dia com grafos, Neo4j e Ruby

Parecidos?

Page 28: Dia a dia com grafos, Neo4j e Ruby

Parecidos?

Page 29: Dia a dia com grafos, Neo4j e Ruby

Bancos orientados a grafos

Porque nem tudo precisa viver em tabelas

Page 30: Dia a dia com grafos, Neo4j e Ruby

Neo4j

Page 31: Dia a dia com grafos, Neo4j e Ruby

Nossas usinas agora em grafos

Itaipu! é_vizinha Itá

latitude:33.43 longitude:32:33capacidade:1400

latitude:43.43 longitude:56:33capacidade:700

tensao_linha:230

Page 32: Dia a dia com grafos, Neo4j e Ruby

Nossas usinas agora em grafos

Itaipu! é_vizinha Itá

latitude:33.43 longitude:32:33capacidade:1400

latitude:43.43 longitude:56:33capacidade:700

tensao_linha:230 Node

Relationship

Attributes

index

Page 33: Dia a dia com grafos, Neo4j e Ruby

Representação visual

Page 34: Dia a dia com grafos, Neo4j e Ruby

Nossas usinas agora em grafos

Itaipu! alimenta Foz do iguaçu

latitude:33.43 longitude:32:33capacidade:1400

populacao:265000alimenta

Curitiba

populacao:1700000

Page 35: Dia a dia com grafos, Neo4j e Ruby

Itaipu abastece quantas pessoas?

Page 36: Dia a dia com grafos, Neo4j e Ruby

Traversal - Busca

Itaipu! alimenta Foz do iguaçu

latitude:33.43 longitude:32:33capacidade:1400

populacao:265000alimenta

Curitiba

populacao:1700000

Page 37: Dia a dia com grafos, Neo4j e Ruby

Cypher

Page 38: Dia a dia com grafos, Neo4j e Ruby

Neo4j com Ruby <3

neo4j.rb

Active Record

Page 39: Dia a dia com grafos, Neo4j e Ruby

Neo4j com Ruby <3

Wrapper da REST API

Neography

Page 40: Dia a dia com grafos, Neo4j e Ruby

Neo4j - Quando não usar?

Page 41: Dia a dia com grafos, Neo4j e Ruby

Neo4j - Quando não usar?• NoSQL Hater?

• Buscas - cautela (profundidade x largura)

• Cloud

• Monitoramento

• Infra (backup)

• Pouca RAM

Page 42: Dia a dia com grafos, Neo4j e Ruby

Obrigada!

@hannelita

[email protected]

Page 43: Dia a dia com grafos, Neo4j e Ruby

Referências• NoSQL Hater?

• Buscas - cautela (profundidade x largura)

• Cloud

• Monitoramento

• Infra (backup)

• Pouca RAM