SlideShare une entreprise Scribd logo
1  sur  70
Télécharger pour lire hors ligne
Regis Hideki Hattori
Introdução
BD
basead
o em
Grafos
Nós
Relacio
namen
tos
Traves
sias
Camin
hos
Proprie
dades
Neo4J
Índice
Grafos
é um
gerencia
gravam
dados
em
percorrem
descobrem
são uma
sequência
de
conectam
têm têm
mapeados
por
Modelo
Características
• Armazenado e processados como grafo;
Características
• Armazenado e processados como grafo;
• Transações ACID;
Características
• Armazenado e processados como grafo;
• Transações ACID;
• Operações CRUD;
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;
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;
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;
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;
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;
APIs
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
Alguns Clientes
Documento x Grafo
Tabela x Grafo
Sharding
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);
Neo4J Server
Dashboard
Data Browser - Console
Data Browser - Grafo
Data Browser – Tabela
Data Browser - Tabela
Data Browser - Estilo
Console – Shell, Gremlin, HTTP
Cypher
joã
o
ilda
josé
jea
n
olg
a
lara
Criar
joã
o
ilda
josé
jea
n
olg
a
lara
Buscar todos
joã
o
ilda
josé
jea
n
olg
a
lara
Buscar por id, casar
joã
o
ilda
josé
jea
n
olg
a
lara
2010
2011
2009
Casar com condição, ?, renomear
joã
o
ilda
josé
jea
n
olg
a
lara
Caminho variável, retorno
sem repetição, ordenação
joã
o
ilda
josé
jea
n
olg
a
lara
?
Adição de Relacionamento
joã
o
ilda
josé
jea
n
olg
a
lara
?
Adição de Relacionamento
joã
o
ilda
josé
jea
n
olg
a
lara
ilda
josé
Adição de Relacionamento
joã
o
ilda
josé
jea
n
olg
a
lara
Adição de Relacionamento
joã
o
ilda
olg
a
dd
ee
bb
cc
aa
josé
Sistema de Recomendação
joã
o
ilda
olg
a
dd
ee
bb
cc
aa
josé
Sistema de Recomendação
joã
o
ilda
olg
a
dd
ee
bb
cc
aa
josé
Sistema de Recomendação
Sistema de Recomendação
joã
o
ilda
olg
a
dd
ee
bb
cc
aa
josé
Sistema de Recomendação
joã
o
ilda
olg
a
dd
ee
bb
cc
aa
josé
Travessia
u
v
x
z
w
y
Travessia “todos os
caminhos”
u
v
x
z
w
y
u
v
x
z
w
y
Travessia “todos os
caminhos”
Travessia – sem repetir nó
u
v
x
z
w
y
Travessia – sem repetir nó
u
v
x
z
w
y
u
v
x
z
w
y
Travessia – sem repetir nó
Travessia – menor caminho
u
v
x
z
w
y
Travessia – considerando custos
u
v
x
z
w
y
2
1
2 3
3
1
2
5
1
5
Travessia – considerando custos
u
v
x
z
w
y
2
1
2 3
3
1
2
5
1
5
Travessia – considerando custos
u
v
x
z
w
y
2
1
2 3
3
1
2
5
1
5
Detecção de ciclos
u
v
x
z
w
y
Detecção de ciclos
u
v
x
z
w
y
Detecção de ciclos
u
v
x
z
w
y
Detecção de ciclos
u
v
x
z
w
y
Detecção de ciclos
u
v
x
z
w
y
Detecção de ciclos
u
v
x
z
w
y
Detecção de ciclos
u
v
x
z
w
y
Detecção de ciclos
u
v
x
z
w
y
Detecção de ciclos
u
v
x
z
w
y
Detecção de ciclos
u
v
x
z
w
y
Detecção de ciclos
u
v
x
z
w
y
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;
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
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
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
Questão de Modelagem
Nome:João
rua:Rua Yrua:Rua X
end_comend_res
endend
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;
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;
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.

Contenu connexe

Similaire à Neo4J Introdução

CouchDB vs Postgres em Rails
CouchDB vs Postgres em RailsCouchDB vs Postgres em Rails
CouchDB vs Postgres em RailsJuan Maiz
 
CouchDB vs PostgreSQL no Rails
CouchDB vs PostgreSQL no RailsCouchDB vs PostgreSQL no Rails
CouchDB vs PostgreSQL no RailsJohalf Farina
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valorKinn Julião
 
Aplicando uma Estratégia de Banco de Dados AWS Personalizada: Encontre o Banc...
Aplicando uma Estratégia de Banco de Dados AWS Personalizada: Encontre o Banc...Aplicando uma Estratégia de Banco de Dados AWS Personalizada: Encontre o Banc...
Aplicando uma Estratégia de Banco de Dados AWS Personalizada: Encontre o Banc...Amazon Web Services
 
Path to the Future #1 - Tendências de Big Data
Path to the Future #1 - Tendências de Big DataPath to the Future #1 - Tendências de Big Data
Path to the Future #1 - Tendências de Big DataAmazon Web Services LATAM
 
Escalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLEscalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLFernando Ike
 
Replicação e escalabidade do ZODB com RelStorage
Replicação e escalabidade do ZODB com RelStorageReplicação e escalabidade do ZODB com RelStorage
Replicação e escalabidade do ZODB com RelStorageRuda Filgueiras
 
Desenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneDesenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneJacson Tiola
 
Em desenvolvimento - Gerência de Testes de Software - HTML5 v.7.1
Em desenvolvimento - Gerência de Testes de Software - HTML5 v.7.1Em desenvolvimento - Gerência de Testes de Software - HTML5 v.7.1
Em desenvolvimento - Gerência de Testes de Software - HTML5 v.7.1Gustavo Lopes
 
Java e Mercado de Trabalho
Java e Mercado de TrabalhoJava e Mercado de Trabalho
Java e Mercado de TrabalhoEduardo Carvalho
 
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSRubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSEmerson Macedo
 

Similaire à Neo4J Introdução (20)

CouchDB vs Postgres em Rails
CouchDB vs Postgres em RailsCouchDB vs Postgres em Rails
CouchDB vs Postgres em Rails
 
CouchDB vs PostgreSQL no Rails
CouchDB vs PostgreSQL no RailsCouchDB vs PostgreSQL no Rails
CouchDB vs PostgreSQL no Rails
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valor
 
Aplicando uma Estratégia de Banco de Dados AWS Personalizada: Encontre o Banc...
Aplicando uma Estratégia de Banco de Dados AWS Personalizada: Encontre o Banc...Aplicando uma Estratégia de Banco de Dados AWS Personalizada: Encontre o Banc...
Aplicando uma Estratégia de Banco de Dados AWS Personalizada: Encontre o Banc...
 
NOSQL - Uma real alternativa
NOSQL - Uma real alternativaNOSQL - Uma real alternativa
NOSQL - Uma real alternativa
 
Nosql4java
Nosql4javaNosql4java
Nosql4java
 
Path to the Future #1 - Tendências de Big Data
Path to the Future #1 - Tendências de Big DataPath to the Future #1 - Tendências de Big Data
Path to the Future #1 - Tendências de Big Data
 
Tendências de Big Data
Tendências de Big DataTendências de Big Data
Tendências de Big Data
 
LDAP
LDAPLDAP
LDAP
 
Tendências de Big Data
Tendências de Big DataTendências de Big Data
Tendências de Big Data
 
Tendências de Big Data
Tendências de Big DataTendências de Big Data
Tendências de Big Data
 
Escalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLEscalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQL
 
Replicação e escalabidade do ZODB com RelStorage
Replicação e escalabidade do ZODB com RelStorageReplicação e escalabidade do ZODB com RelStorage
Replicação e escalabidade do ZODB com RelStorage
 
Desenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneDesenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e Plone
 
Em desenvolvimento - Gerência de Testes de Software - HTML5 v.7.1
Em desenvolvimento - Gerência de Testes de Software - HTML5 v.7.1Em desenvolvimento - Gerência de Testes de Software - HTML5 v.7.1
Em desenvolvimento - Gerência de Testes de Software - HTML5 v.7.1
 
Bigadata casese opotunidades
Bigadata casese opotunidadesBigadata casese opotunidades
Bigadata casese opotunidades
 
Bancos de dados NoSQL na AWS
Bancos de dados NoSQL na AWSBancos de dados NoSQL na AWS
Bancos de dados NoSQL na AWS
 
Rest
RestRest
Rest
 
Java e Mercado de Trabalho
Java e Mercado de TrabalhoJava e Mercado de Trabalho
Java e Mercado de Trabalho
 
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSRubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJS
 

Plus de Creditas

Hanami & Domain-Driven Design
Hanami & Domain-Driven DesignHanami & Domain-Driven Design
Hanami & Domain-Driven DesignCreditas
 
Application layer
Application layerApplication layer
Application layerCreditas
 
Hanami with a modern touch
Hanami with a modern touchHanami with a modern touch
Hanami with a modern touchCreditas
 
Jurassic JavaScript Park - Rodando Offline até na ilha Nublar!
Jurassic JavaScript Park - Rodando Offline até na ilha Nublar!Jurassic JavaScript Park - Rodando Offline até na ilha Nublar!
Jurassic JavaScript Park - Rodando Offline até na ilha Nublar!Creditas
 
How To Get Organized
How To Get OrganizedHow To Get Organized
How To Get OrganizedCreditas
 
O que o seu texto diz sobre você
O que o seu texto diz sobre vocêO que o seu texto diz sobre você
O que o seu texto diz sobre vocêCreditas
 
Modern sql
Modern sqlModern sql
Modern sqlCreditas
 
Positive reinforcement and statistics
Positive reinforcement and statisticsPositive reinforcement and statistics
Positive reinforcement and statisticsCreditas
 
Text mining Pre-processing
Text mining Pre-processingText mining Pre-processing
Text mining Pre-processingCreditas
 
Melanoma: how to detect skin cancer
Melanoma: how to detect skin cancerMelanoma: how to detect skin cancer
Melanoma: how to detect skin cancerCreditas
 
Rails Girls - RubyConfBR 2015
Rails Girls - RubyConfBR 2015Rails Girls - RubyConfBR 2015
Rails Girls - RubyConfBR 2015Creditas
 
Como melhorar sua comunicação com sua equipe, sua mãe e seu chefe
Como melhorar sua comunicação com sua equipe, sua mãe e seu chefeComo melhorar sua comunicação com sua equipe, sua mãe e seu chefe
Como melhorar sua comunicação com sua equipe, sua mãe e seu chefeCreditas
 
O paradoxo da escolha
O paradoxo da escolhaO paradoxo da escolha
O paradoxo da escolhaCreditas
 
A arte de ser Mensch
A arte de ser MenschA arte de ser Mensch
A arte de ser MenschCreditas
 
An introduction to MySQL
An introduction to MySQLAn introduction to MySQL
An introduction to MySQLCreditas
 
GTD - Getting Things Done
GTD - Getting Things DoneGTD - Getting Things Done
GTD - Getting Things DoneCreditas
 
Pig - Analyzing data sets
Pig - Analyzing data setsPig - Analyzing data sets
Pig - Analyzing data setsCreditas
 
Learning how to learn
Learning how to learnLearning how to learn
Learning how to learnCreditas
 
OOCSS and SMACSS
OOCSS and SMACSSOOCSS and SMACSS
OOCSS and SMACSSCreditas
 
Debugging with pry
Debugging with pryDebugging with pry
Debugging with pryCreditas
 

Plus de Creditas (20)

Hanami & Domain-Driven Design
Hanami & Domain-Driven DesignHanami & Domain-Driven Design
Hanami & Domain-Driven Design
 
Application layer
Application layerApplication layer
Application layer
 
Hanami with a modern touch
Hanami with a modern touchHanami with a modern touch
Hanami with a modern touch
 
Jurassic JavaScript Park - Rodando Offline até na ilha Nublar!
Jurassic JavaScript Park - Rodando Offline até na ilha Nublar!Jurassic JavaScript Park - Rodando Offline até na ilha Nublar!
Jurassic JavaScript Park - Rodando Offline até na ilha Nublar!
 
How To Get Organized
How To Get OrganizedHow To Get Organized
How To Get Organized
 
O que o seu texto diz sobre você
O que o seu texto diz sobre vocêO que o seu texto diz sobre você
O que o seu texto diz sobre você
 
Modern sql
Modern sqlModern sql
Modern sql
 
Positive reinforcement and statistics
Positive reinforcement and statisticsPositive reinforcement and statistics
Positive reinforcement and statistics
 
Text mining Pre-processing
Text mining Pre-processingText mining Pre-processing
Text mining Pre-processing
 
Melanoma: how to detect skin cancer
Melanoma: how to detect skin cancerMelanoma: how to detect skin cancer
Melanoma: how to detect skin cancer
 
Rails Girls - RubyConfBR 2015
Rails Girls - RubyConfBR 2015Rails Girls - RubyConfBR 2015
Rails Girls - RubyConfBR 2015
 
Como melhorar sua comunicação com sua equipe, sua mãe e seu chefe
Como melhorar sua comunicação com sua equipe, sua mãe e seu chefeComo melhorar sua comunicação com sua equipe, sua mãe e seu chefe
Como melhorar sua comunicação com sua equipe, sua mãe e seu chefe
 
O paradoxo da escolha
O paradoxo da escolhaO paradoxo da escolha
O paradoxo da escolha
 
A arte de ser Mensch
A arte de ser MenschA arte de ser Mensch
A arte de ser Mensch
 
An introduction to MySQL
An introduction to MySQLAn introduction to MySQL
An introduction to MySQL
 
GTD - Getting Things Done
GTD - Getting Things DoneGTD - Getting Things Done
GTD - Getting Things Done
 
Pig - Analyzing data sets
Pig - Analyzing data setsPig - Analyzing data sets
Pig - Analyzing data sets
 
Learning how to learn
Learning how to learnLearning how to learn
Learning how to learn
 
OOCSS and SMACSS
OOCSS and SMACSSOOCSS and SMACSS
OOCSS and SMACSS
 
Debugging with pry
Debugging with pryDebugging with pry
Debugging with pry
 

Neo4J Introdução