[MinhaVida TechDay] NEO4J

693 views

Published on

Palestra que fiz no MVTechDay sobre o banco de dados de grafo NEO4J

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
693
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

[MinhaVida TechDay] NEO4J

  1. 1. Graph Databases e Neo4J
  2. 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. 3. NOSQL• NOSQL não é “Nunca SQL”• NOSQL não é “Não ao SQL”• NOSQL não é “Geladeira”
  4. 4. “Categorias” de NOSQL • Key-Value • Column family • Document • Graph
  5. 5. NOSQL Key-Value• Key-value stores • Based on DHTs / Amazons Dynamo paper • Data model: (global) collection of K-V pairs • Example: Dynomite, Voldemort, Tokyo • BigTable clones Column Family • Based on Googles BigTable paper • Data model: big table, column families • Example: Hbase, Hypertable
  6. 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
  7. 7. Graph Theory
  8. 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. 9. Graph Theory • Vamos ao que interessa 
  10. 10. Graph Theory
  11. 11. Graph Theory Grafo – Um conjunto de vértices ligados por arestas
  12. 12. Graph Theory Grafo – Um conjunto de vértices ligados por arestas Grafo – Um conjunto de nós e relacionamentos que se conectam 
  13. 13. Graph Theory • nós • relacionamentos entre os nós • propriedades em ambos Property Graph
  14. 14. Matrix Graph
  15. 15. Graph Theory – Algoritmos de percurso• depth-first search — DFS – Profundidade• breadth first search — BFS - Largura
  16. 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. 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. 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. 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. 20. DEMO Sem mandinga agora por favor
  21. 21. NEO4J – Consultando dados• Traversal Framework• Cypher Query Language
  22. 22. NEO4J – Voltando ao Matrix • Buscar amigos do NEO • Traversal
  23. 23. NEO4J – Voltando ao Matrix • Buscar amigos do NEO • Traversal
  24. 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
  25. 25. NEO4J – WebAdmin
  26. 26. DEMO– Criando índice• Criando índice de maneira porca só para mostrar o WebAdmin 
  27. 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. 28. DEMO – Cyper Query Language
  29. 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. 30. Obrigado. Perguntas? Se eu souber responder claro 

×