Upload
vinicius-munhoz
View
385
Download
4
Embed Size (px)
DESCRIPTION
Apresentação realizada no curso de Análise e Desenvolvimento de Sistemas do IFSP São Carlos, na disciplina de Desenvolvimento Web 2.
Citation preview
NEO4J
TH
E G
RA
PH
DA
T AB
AS
E
O QUE É NEO4J?
Neo4j é um banco de dados;
Neo4j é NoSQL;
Neo4j não é relacional;
Banco de dadosNoSQL
Não Relacional
QUÊ?
GRAFOS!
GRAFOS!
GRAFOS!
PROPERTY GRAPH
E COMO EU FAÇO UMA “QUERY”?• Podemos escrever queries
manualmente em Cypher, que é o equivalente a linguagem SQL
• Podemos usar a API do java e fazer buscas e inserções através de métodos
CYPHERCREATE
(no1:TipoDoNo {chave:”valor”, chave2:”valor2”}),
(no2:TipoDoNo {chave:”valor”, chave2:”valor2”}),
(no1)-[:RELACIONAMENTO {chave: “valor”}]->(no2)
COMO ISSO É FEITO NO JAVA?NeoService neo = ... // Get Factory
// Criando o “Neo”Node anderson = neo.createNode();anderson.setProperty( “nome”, “Thomas Anderson” );anderson.setProperty( “idade”, 29 );
// Criando o MorpheusNode morpheus = neo.createNode();morpheus.setProperty( “nome”, “Morpheus” );morpheus.setProperty( “rank”, “Capitão” );morpheus.setProperty( “tags”, vetorDeStrings);
COMO ISSO É FEITO NO JAVA?
// Criando o Relacionamento dizendo que Anderson conhece o Morpheus
anderson.createRelationshipTo( morpheus, TiposRelacao.CONHECE);
CYPHER E SQL COMPARADOSSELECT *
FROM “Pessoa"
WHERE idade = 25
MATCH
(p:pessoa{idade: 25})
RETURN p
UM POUCO MAIS COMPLEXO...
SELECT Planetas.*
FROM Planetas
INNER JOIN VisitouPlaneta ON Planeta.id = VisitouPlaneta.planeta_id
INNER JOIN Pessoa ON VisitouPlaneta.pessoa_id = Pessoa.id
WHERE Pessoa.nome = 'Anakin'
MATCH
(:pessoa{name:”Anakin”})-[:visitou]->(p)
RETURN p
Modelo Relacional Modelo em Grafos
DÚVIDAS?