O documento discute grafos de banco de dados e as características do Neo4j. Ele descreve como o Neo4j armazena e processa dados como grafos, oferecendo características como transações ACID, operações CRUD, escalabilidade, disponibilidade e a linguagem de consulta Cypher. Ele também discute como o Neo4j pode ser usado para modelar e consultar dados relacionais.
7. Características
• Armazenado e processados como grafo;
• Transações ACID;
• Operações CRUD;
• Escalável para muitos bilhões de nós,
arestas e propriedades;
8. Características
• Armazenado e processados como grafo;
• Transações ACID;
• Operações CRUD;
• Escalável para muitos bilhões de nós,
arestas e propriedades;
• Alta disponibilidade em sistemas
distribuídos;
9. Características
• Armazenado e processados como grafo;
• Transações ACID;
• Operações CRUD;
• Escalável para muitos bilhões de nós,
arestas e propriedades;
• Alta disponibilidade em sistemas
distribuídos;
• Cypher;
10. Características
• Armazenado e processados como grafo;
• Transações ACID;
• Operações CRUD;
• Escalável para muitos bilhões de nós,
arestas e propriedades;
• Alta disponibilidade em sistemas
distribuídos;
• Cypher;
• Algoritmos de travessia;
11. Características
• Armazenado e processados como grafo;
• Transações ACID;
• Operações CRUD;
• Escalável para muitos bilhões de nós, arestas
e propriedades;
• Alta disponibilidade em sistemas distribuídos;
• Cypher;
• Algoritmos de travessia;
• Biblioteca embutida ou por meio de interface
REST;
13. Communit
y
Advanced Enterpri
se
Ferramenta de
gerenciamento avançado
Não Sim Sim
Suporte Comunid
ade
online
E-mail
(5x10)
Telefon
e
(7x24)
Alta disponibilidade,
clustering, failover e
backups
Não Não Sim
Assinatura anual/instância 0 6k USD 24k
USD
Tabela de Preços
18. MySQL vs Neo4J
x MySQL Neo4J
2 0,016 s 0,010 s
3 30,267 s 0,168 s
4 1.543 s 1,359 s
5 + 1h 2,132 s
• Rede social com 1.000.000 de pessoas;
• Cada pessoa com aproximadamente
50 amigos;
• Retornar todos os amigos (x=2),
amigos e amigos de amigos (x=3);
63. CRUD
• Para todas as operações abaixo, é
preciso buscar o nó/relacionamento
com o START.
– Excluir:
delete no;
– Excluir propriedade:
delete no.propriedade;
– Atualizar propriedade:
SET no.propriedade = valor;
64. Questão de Modelagem
rua:Rua X
tipo:
residencial
rua:Rua Y
tipo:comerci
al
Nome:Joã
o
end end
rua:Rua X rua:Rua Y
Nome:Joã
o
end_re
s
end_co
m
65. Apenas endereço
residencial:
START joao = node(id)
MATCH (joao)->[:end]-
>(endereco)
WHERE endereco.tipo =
‘residencial’
Questão de Modelagem
rua:Rua X
tipo:
residencial
rua:Rua Y
Tipo:comerci
al
Nome:Joã
o
end end
66. Todos os endereços:
START joao = node(id)
MATCH (joao)->[:end_res|end_com]-
>(endereco)
RETURN endereco;
Questão de Modelagem
rua:Rua X rua:Rua Y
Nome:Joã
o
end_re
s
end_co
m
68. Questão de Modelagem
Nome:João
rua:Rua Yrua:Rua X
end_comend_res
endend
Específico:
START joao = node(id)
MATCH (joao)->[:end_res]-
>(endereco)
RETURN endereco;
69. Questão de Modelagem
Nome:João
rua:Rua Yrua:Rua X
end_comend_res
endend
Genérico:
START joao = node(id)
MATCH (joao)->[:end]-
>(endereco)
RETURN endereco;
70. Referências
• BROWN UNIVERSITY. The Neo4j Manual.
Disponível em:
<http://cs.brown.edu/courses/cs227/paper
s/neo4j.pdf>. Acesso em: 6 de setembro
de 2013.
• IAN, R.; WEBBER, J.; EIFREM, E. Graph
Databases. 1. ed. O’Reilly, 2013.
• NEO4J. Learn. Disponível em:
<http://www.neo4j.org/learn>. Acesso em
5 de setembro de 2013.