SlideShare uma empresa Scribd logo
1 de 30
Graph Databases
       e
    Neo4J
Cleber Dantas


• 8+ anos de experiência na área de TI
• Especialista em desenvolvimento Web
• Líder técnico e Desenvolvedor
• Ministro treinamentos sobre desenvolvimento
  Web
• Dou algumas palestras em eventos de tecnologia
• @cleberdantas
• http://www.cleberdantas.com
NOSQL

• NOSQL não é “Nunca SQL”
• NOSQL não é “Não ao SQL”
• NOSQL não é “Geladeira”
“Categorias” de NOSQL

 •   Key-Value
 •   Column family
 •   Document
 •   Graph
NOSQL

                                                      Key-Value
• Key-value stores
   • Based on DHTs / Amazon's Dynamo paper
   • Data model: (global) collection of K-V pairs
   • Example: Dynomite, Voldemort, Tokyo



 • BigTable clones                                  Column Family
    • Based on Google's BigTable paper
    • Data model: big table, column families
    • Example: Hbase, Hypertable
NOSQL

                                                  Document
• Document databases
   • Inspired by Lotus Notes
   • Data model: collections of K-V collections
   • Example: CouchDB, MongoDB



 • Graph databases                                 Graph
    • Inspired by Euler & graph theory
    • Data model: nodes, rels, K-V on both
    • Example: AllegroGraph, VertexDB, Neo4j
Graph Theory
Graph Theory




   • Físico e matemático do século 18
   • Primeiro paper publicado sobre teoria de
     grafos foi feito por Euler em 1736
Graph Theory




   • Vamos ao que interessa 
Graph Theory
Graph Theory




   Grafo – Um conjunto de vértices ligados por arestas
Graph Theory




   Grafo – Um conjunto de vértices ligados por arestas
   Grafo – Um conjunto de nós e relacionamentos que se
           conectam 
Graph Theory



 • nós
 • relacionamentos entre os nós
 • propriedades em ambos




  Property Graph
Matrix Graph
Graph Theory – Algoritmos de percurso



• depth-first search — DFS – Profundidade
• breadth first search — BFS - Largura
Graph Theory – DFS

                            1
                            A
                                                                                   R
                                                                   A
                                                                                   S
                                                                   F
                                                                                   Q
 2
 B             4
               C            8
                            D        12
                                     E              13
                                                    F              E
                                                                                   K
                                                                   D   Pilha
 3
 G         5
           H       7
                   I        9
                            J             14
                                           K        16
                                                     L        19
                                                              M                    L
                                                                   C
                                                                                   M
                                                                   B
           6
           N           10
                       O        11
                                 P        15
                                           Q   17
                                               R         18
                                                         S                         O
                                                                   G
                                                                                   P
     ALGORITMO:                                                    I
     empilhe o nó raiz da árvore;                                              J
                                                                       H   N
     enquanto existirem nós empilhados:
       desempilhe e marque o nó;
       para todos os nós filhos deste nó marcado:
         empilhe o nó filho;

     Peguei da net 
Graph Theory – BFS

                                                                                        S
                                                                     A
                              1
                              A                                                         R
                                                                     B
                                                                                        Q
                                                                     C
                                                                                        P
  2              3            4         5             6
  B              C            D         E             F              D       Fila
                                                                                        O
                                                                     E
                                                                                        N
  7
  G         8
            H        9
                     I        10
                               J            11
                                             K        12
                                                       L        13
                                                                 M   F
                                                                                        M
                                                                     G
            14
            N            15
                         O         16
                                    P       17
                                             Q   18
                                                 R         19
                                                           S                            L
                                                                     H
                                                                                    K
                                                                         I      J
      ALGORITMO:
      enfileire o nó raiz da árvore;
      enquanto existirem nós enfileirados:
        desenfileire e marque o nó;
        para todos os nós filhos deste nó marcado:
          enfileire o nó filho;
Graph Databases



• O que é?
   – É um sistema que armazena dados em forma de grafo
     (a mais genérica das estruturas de dados), capaz de
     representar qualquer tipo de dado de uma maneira
     altamente acessível.
NEO4J



• O que é?
   – Um banco de dados de grafo (ver slide anterior, sem
     maldade)
   – Open source (mas não free, quer dizer depende -
     AGPL)
   – Escrito em Java, a princípio para linguagens da JVM
     (4J)
   – Possui API REST (Client de .NET utiliza)
   – Escala bem na vertical, mas na horizontal ainda não
     (estão trabalhando nisso)
DEMO




 Sem mandinga agora por favor
NEO4J – Consultando dados



• Traversal Framework
• Cypher Query Language
NEO4J – Voltando ao Matrix




  • Buscar amigos do NEO
  • Traversal
NEO4J – Voltando ao Matrix




  • Buscar amigos do NEO
  • Traversal
NEO4J – Índice




  • Podemos criar índices para propriedades de
    nós e relacionamentos
  • Por padrão quando criamos um nó ele é
    indexado pelo ID incremental interno do
    NEO4J (não muito útil a princípio)
  • A indexação é feita utilizando Lucene
  • auto_index parece que funciona mesmo
NEO4J – WebAdmin
DEMO– Criando índice




• Criando índice de maneira porca só para mostrar o WebAdmin 
NEO4J – Cyper Query Language



• “Tipo um SQL”
• Novo jeito de “queriar”
• Bem mais intuitivo para nós (SQL boys) do que o
  Traversal Framework
DEMO – Cyper Query Language
Recursos



•   http://en.wikipedia.org/wiki/Graph_theory
•   http://www.neo4j.org/
•   http://stackoverflow.com/questions/tagged/neo4j
•   http://watch.neo4j.org/
•   http://lmgtfy.com/?q=neo4j
•   http://www.cleberdantas.com (não tem nada sobre
    isso, mas é sempre válido um jabá)
Obrigado. Perguntas? Se eu souber responder claro 

Mais conteúdo relacionado

Mais procurados

Intruções de pagamento (1)
Intruções de pagamento (1)Intruções de pagamento (1)
Intruções de pagamento (1)diretoriabragpta
 
1 cabine e plataforma do operador
1  cabine e plataforma do operador1  cabine e plataforma do operador
1 cabine e plataforma do operadorJEFERSONPIRES2012
 
Beckman verif func
Beckman verif funcBeckman verif func
Beckman verif funcalvarezhma
 
Ficha nº 2 funções
Ficha nº 2   funçõesFicha nº 2   funções
Ficha nº 2 funçõesaldaalves
 
palavras cruzadas sobre trovadorismo resposta
palavras cruzadas sobre trovadorismo respostapalavras cruzadas sobre trovadorismo resposta
palavras cruzadas sobre trovadorismo respostaDilmara Faria
 
Cópia de img
Cópia de imgCópia de img
Cópia de imgdjaoavi
 

Mais procurados (14)

Intruções de pagamento (1)
Intruções de pagamento (1)Intruções de pagamento (1)
Intruções de pagamento (1)
 
3eva2011
3eva20113eva2011
3eva2011
 
3eva2011
3eva20113eva2011
3eva2011
 
3eva2011
3eva20113eva2011
3eva2011
 
3eva2011
3eva20113eva2011
3eva2011
 
3eva2011
3eva20113eva2011
3eva2011
 
1 cabine e plataforma do operador
1  cabine e plataforma do operador1  cabine e plataforma do operador
1 cabine e plataforma do operador
 
Beckman verif func
Beckman verif funcBeckman verif func
Beckman verif func
 
Ficha nº 2 funções
Ficha nº 2   funçõesFicha nº 2   funções
Ficha nº 2 funções
 
palavras cruzadas sobre trovadorismo resposta
palavras cruzadas sobre trovadorismo respostapalavras cruzadas sobre trovadorismo resposta
palavras cruzadas sobre trovadorismo resposta
 
3eva2011
3eva20113eva2011
3eva2011
 
3eva2011
3eva20113eva2011
3eva2011
 
3eva2011
3eva20113eva2011
3eva2011
 
Cópia de img
Cópia de imgCópia de img
Cópia de img
 

Destaque

Bancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagemBancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagemJoão Gabriel Lima
 
Aplicações não convencionais de grafos
Aplicações não convencionais de grafosAplicações não convencionais de grafos
Aplicações não convencionais de grafospichiliani
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introduçãoWise Systems
 
Introdução a nosql - II SACIC
Introdução a nosql - II SACICIntrodução a nosql - II SACIC
Introdução a nosql - II SACICcaironoleto
 
E agora: que tipo de Banco de Dados devo usar?
E agora: que tipo de Banco de Dados devo usar?E agora: que tipo de Banco de Dados devo usar?
E agora: que tipo de Banco de Dados devo usar?Fabíola Fernandes
 
Web Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLWeb Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLOtávio Calaça Xavier
 
Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Christiano Anderson
 
NoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dadosNoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dadosNicolas Ibanheiz
 
Desmistificando NoSQL e Novas Tecnologias de Bancos de Dados
Desmistificando NoSQL e Novas Tecnologias de Bancos de DadosDesmistificando NoSQL e Novas Tecnologias de Bancos de Dados
Desmistificando NoSQL e Novas Tecnologias de Bancos de DadosFabíola Fernandes
 

Destaque (12)

Bancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagemBancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagem
 
Aplicações não convencionais de grafos
Aplicações não convencionais de grafosAplicações não convencionais de grafos
Aplicações não convencionais de grafos
 
Com vocês, Django!
Com vocês, Django!Com vocês, Django!
Com vocês, Django!
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introdução
 
Introdução a nosql - II SACIC
Introdução a nosql - II SACICIntrodução a nosql - II SACIC
Introdução a nosql - II SACIC
 
Python e bancos NoSQL
Python e bancos NoSQLPython e bancos NoSQL
Python e bancos NoSQL
 
E agora: que tipo de Banco de Dados devo usar?
E agora: que tipo de Banco de Dados devo usar?E agora: que tipo de Banco de Dados devo usar?
E agora: que tipo de Banco de Dados devo usar?
 
Web Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLWeb Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQL
 
Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014
 
Bancos de dados NoSQL
Bancos de dados NoSQLBancos de dados NoSQL
Bancos de dados NoSQL
 
NoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dadosNoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dados
 
Desmistificando NoSQL e Novas Tecnologias de Bancos de Dados
Desmistificando NoSQL e Novas Tecnologias de Bancos de DadosDesmistificando NoSQL e Novas Tecnologias de Bancos de Dados
Desmistificando NoSQL e Novas Tecnologias de Bancos de Dados
 

Semelhante a Graph Databases e Neo4J

Semelhante a Graph Databases e Neo4J (9)

Atividade ensino religioso viirtudes
Atividade ensino religioso viirtudesAtividade ensino religioso viirtudes
Atividade ensino religioso viirtudes
 
Atividade ensino religioso viirtudes
Atividade ensino religioso viirtudesAtividade ensino religioso viirtudes
Atividade ensino religioso viirtudes
 
Portfolio Illustrator
Portfolio IllustratorPortfolio Illustrator
Portfolio Illustrator
 
Cômoda Allegro 5 gavetas
Cômoda Allegro 5 gavetasCômoda Allegro 5 gavetas
Cômoda Allegro 5 gavetas
 
Cômoda Harmonia 5 gavetas
Cômoda Harmonia 5 gavetasCômoda Harmonia 5 gavetas
Cômoda Harmonia 5 gavetas
 
3eva2011
3eva20113eva2011
3eva2011
 
3eva2011
3eva20113eva2011
3eva2011
 
3eva2011
3eva20113eva2011
3eva2011
 
3eva2011
3eva20113eva2011
3eva2011
 

Mais de Cleber Dantas

[Minha Vida TechDay] Novo Dieta e Saúde
[Minha Vida TechDay] Novo Dieta e Saúde[Minha Vida TechDay] Novo Dieta e Saúde
[Minha Vida TechDay] Novo Dieta e SaúdeCleber Dantas
 
Performance em aplicações Web
Performance em aplicações WebPerformance em aplicações Web
Performance em aplicações WebCleber Dantas
 
Dicas de otimização e performance de aplicações Web com ASP.NET
Dicas de otimização e performance de aplicações Web com ASP.NET Dicas de otimização e performance de aplicações Web com ASP.NET
Dicas de otimização e performance de aplicações Web com ASP.NET Cleber Dantas
 
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...Cleber Dantas
 
5 dicas simples de performance
5 dicas simples de performance5 dicas simples de performance
5 dicas simples de performanceCleber Dantas
 
[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQLCleber Dantas
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaCleber Dantas
 
IIS para desenvolvedores
IIS para desenvolvedoresIIS para desenvolvedores
IIS para desenvolvedoresCleber Dantas
 
LABjs e JQuery Templates
LABjs e JQuery TemplatesLABjs e JQuery Templates
LABjs e JQuery TemplatesCleber Dantas
 
Novidades asp.net mvc 4
Novidades asp.net mvc 4Novidades asp.net mvc 4
Novidades asp.net mvc 4Cleber Dantas
 
ASP.NET MVC - O que tem de melhor
ASP.NET MVC - O que tem de melhorASP.NET MVC - O que tem de melhor
ASP.NET MVC - O que tem de melhorCleber Dantas
 
Como trabalhar com ajax, json e cache
Como trabalhar com ajax, json e cacheComo trabalhar com ajax, json e cache
Como trabalhar com ajax, json e cacheCleber Dantas
 

Mais de Cleber Dantas (13)

[Minha Vida TechDay] Novo Dieta e Saúde
[Minha Vida TechDay] Novo Dieta e Saúde[Minha Vida TechDay] Novo Dieta e Saúde
[Minha Vida TechDay] Novo Dieta e Saúde
 
Performance em aplicações Web
Performance em aplicações WebPerformance em aplicações Web
Performance em aplicações Web
 
Dicas de otimização e performance de aplicações Web com ASP.NET
Dicas de otimização e performance de aplicações Web com ASP.NET Dicas de otimização e performance de aplicações Web com ASP.NET
Dicas de otimização e performance de aplicações Web com ASP.NET
 
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
 
5 dicas simples de performance
5 dicas simples de performance5 dicas simples de performance
5 dicas simples de performance
 
[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
 
IIS para desenvolvedores
IIS para desenvolvedoresIIS para desenvolvedores
IIS para desenvolvedores
 
LABjs e JQuery Templates
LABjs e JQuery TemplatesLABjs e JQuery Templates
LABjs e JQuery Templates
 
Novidades asp.net mvc 4
Novidades asp.net mvc 4Novidades asp.net mvc 4
Novidades asp.net mvc 4
 
Inversion ofcontrol
Inversion ofcontrolInversion ofcontrol
Inversion ofcontrol
 
ASP.NET MVC - O que tem de melhor
ASP.NET MVC - O que tem de melhorASP.NET MVC - O que tem de melhor
ASP.NET MVC - O que tem de melhor
 
Como trabalhar com ajax, json e cache
Como trabalhar com ajax, json e cacheComo trabalhar com ajax, json e cache
Como trabalhar com ajax, json e cache
 

Graph Databases e Neo4J

  • 1. Graph Databases e Neo4J
  • 2. Cleber Dantas • 8+ anos de experiência na área de TI • Especialista em desenvolvimento Web • Líder técnico e Desenvolvedor • Ministro treinamentos sobre desenvolvimento Web • Dou algumas palestras em eventos de tecnologia • @cleberdantas • http://www.cleberdantas.com
  • 3. NOSQL • NOSQL não é “Nunca SQL” • NOSQL não é “Não ao SQL” • NOSQL não é “Geladeira”
  • 4. “Categorias” de NOSQL • Key-Value • Column family • Document • Graph
  • 5. NOSQL Key-Value • Key-value stores • Based on DHTs / Amazon's Dynamo paper • Data model: (global) collection of K-V pairs • Example: Dynomite, Voldemort, Tokyo • BigTable clones Column Family • Based on Google's BigTable paper • Data model: big table, column families • Example: Hbase, Hypertable
  • 6. NOSQL Document • Document databases • Inspired by Lotus Notes • Data model: collections of K-V collections • Example: CouchDB, MongoDB • Graph databases Graph • Inspired by Euler & graph theory • Data model: nodes, rels, K-V on both • Example: AllegroGraph, VertexDB, Neo4j
  • 8. Graph Theory • Físico e matemático do século 18 • Primeiro paper publicado sobre teoria de grafos foi feito por Euler em 1736
  • 9. Graph Theory • Vamos ao que interessa 
  • 11. Graph Theory Grafo – Um conjunto de vértices ligados por arestas
  • 12. Graph Theory Grafo – Um conjunto de vértices ligados por arestas Grafo – Um conjunto de nós e relacionamentos que se conectam 
  • 13. Graph Theory • nós • relacionamentos entre os nós • propriedades em ambos Property Graph
  • 15. Graph Theory – Algoritmos de percurso • depth-first search — DFS – Profundidade • breadth first search — BFS - Largura
  • 16. Graph Theory – DFS 1 A R A S F Q 2 B 4 C 8 D 12 E 13 F E K D Pilha 3 G 5 H 7 I 9 J 14 K 16 L 19 M L C M B 6 N 10 O 11 P 15 Q 17 R 18 S O G P ALGORITMO: I empilhe o nó raiz da árvore; J H N enquanto existirem nós empilhados: desempilhe e marque o nó; para todos os nós filhos deste nó marcado: empilhe o nó filho; Peguei da net 
  • 17. Graph Theory – BFS S A 1 A R B Q C P 2 3 4 5 6 B C D E F D Fila O E N 7 G 8 H 9 I 10 J 11 K 12 L 13 M F M G 14 N 15 O 16 P 17 Q 18 R 19 S L H K I J ALGORITMO: enfileire o nó raiz da árvore; enquanto existirem nós enfileirados: desenfileire e marque o nó; para todos os nós filhos deste nó marcado: enfileire o nó filho;
  • 18. Graph Databases • O que é? – É um sistema que armazena dados em forma de grafo (a mais genérica das estruturas de dados), capaz de representar qualquer tipo de dado de uma maneira altamente acessível.
  • 19. NEO4J • O que é? – Um banco de dados de grafo (ver slide anterior, sem maldade) – Open source (mas não free, quer dizer depende - AGPL) – Escrito em Java, a princípio para linguagens da JVM (4J) – Possui API REST (Client de .NET utiliza) – Escala bem na vertical, mas na horizontal ainda não (estão trabalhando nisso)
  • 20. DEMO Sem mandinga agora por favor
  • 21. NEO4J – Consultando dados • Traversal Framework • Cypher Query Language
  • 22. NEO4J – Voltando ao Matrix • Buscar amigos do NEO • Traversal
  • 23. NEO4J – Voltando ao Matrix • Buscar amigos do NEO • Traversal
  • 24. NEO4J – Índice • Podemos criar índices para propriedades de nós e relacionamentos • Por padrão quando criamos um nó ele é indexado pelo ID incremental interno do NEO4J (não muito útil a princípio) • A indexação é feita utilizando Lucene • auto_index parece que funciona mesmo
  • 26. DEMO– Criando índice • Criando índice de maneira porca só para mostrar o WebAdmin 
  • 27. NEO4J – Cyper Query Language • “Tipo um SQL” • Novo jeito de “queriar” • Bem mais intuitivo para nós (SQL boys) do que o Traversal Framework
  • 28. DEMO – Cyper Query Language
  • 29. Recursos • http://en.wikipedia.org/wiki/Graph_theory • http://www.neo4j.org/ • http://stackoverflow.com/questions/tagged/neo4j • http://watch.neo4j.org/ • http://lmgtfy.com/?q=neo4j • http://www.cleberdantas.com (não tem nada sobre isso, mas é sempre válido um jabá)
  • 30. Obrigado. Perguntas? Se eu souber responder claro 