grafos - uma abordagem divertida - latinoware 2014

Download Grafos - Uma abordagem divertida - Latinoware 2014

If you can't read please download the document

Upload: christiano-anderson

Post on 25-May-2015

816 views

Category:

Technology


2 download

DESCRIPTION

Grafos, ArangoDB, OrientDB, Neo4J, teoria de grafos. Palestra apresentada na Latinoware 2014

TRANSCRIPT

  • 1. GrafosUma abordagem divertidaLatinoware 2014Christiano AndersonTwitter: @dump

2. Agenda Apresentao Conceitos bsicos de grafos Exemplos de uso Persistncia em grafos 3. Quem sou? Especialista em Big Data e NoSQL na Propus; Desenvolvedor Python; Trabalha desde o incio da internet comercial do Brasil; Colabora com diversos projetos em software livre; Fundador do MUG-SP; Twitter: @dump Blog: http://christiano.me 4. Essa palestra no aborda... Conceitos mais aprofundados em grafos; Cdigo ( uma palestra mais conceitual); Soluo bala de prata; 5. Novo paradigma? Grafo no algo recente; O mundo no gira apenas no banco relacional; Inovao = novas tecnologias; Inovao = pensar fora da caixa; Inovao = ser eficiente; 6. Grafo no algo recente Quem se lembra das aulas de estrutura dedados? Vetores (arrays); Fila; Pilha; rvores; Grafos; 7. O mundo no gira apenas no bancorelacional Muita gente ainda est viciada nosRDBMs, quando pensa em umnovo projeto, j comea imaginar aestrutura de tabelas; Um arquiteto precisa pensar namelhor soluo para cada caso esaber que o mundo da persistnciano tem apenas os RDBMs. 8. Novas tecnologias de persistncia 9. Pensar fora da caixa 10. Ser eficiente Usar a tecnologia certa no momento certo vaitornar seu trabalho absurdamente eficiente! 11. Grafos?Vrtice / nsRepresentao de grafo com 4vrtices e 6 arestasAresta 12. Grafos? Leonhard Euler Inventor da teoria de grafos 1736 Qual a possibilidade de atravessar todas as pontesda cidade sem repetir nenhuma? Grafo Euleriano 13. Exemplo clssico: Rede Social 14. Teoria dos grafosA teoria dos grafos um ramo da matemtica que estuda asrelaes entre os objetos de um determinado conjunto. Para talso empregadas estruturas chamadas de grafos, G(V,A), onde V um conjunto no vazio de objetos denominados vrtices e A umconjunto de pares no ordenados de V, chamado arestas.(fonte: Wikipedia) 15. Representao de Grafos 16. Exemplo simples: msicaLed ZeppelinQueenPink FloydSigur RsJethro TullGosta de 17. Outro exemploHUGOGRAFOUtiliza tecnologiaPROJETOxDEPTODEPESQUISAConheceTrabalha noFaz parte do desenvolvedor do colega doRAFA 18. Os ns podem ter atributosHUGO{tipo: 'funcionario',departamento: 'desenvolvimento',ano_nascimento: '1980',cidade: 'So Paulo'} 19. Como voc faria essasrepresentaes no banco relacional? 20. Voc no precisa deTabelas para tudoPense fora da caixa 21. Para que usar Grafos? Sistemas de recomendao Catlogo de produtos Filtragem colaborativa Redes sociais (o clssico) Sistemas geoespaciais E muito mais... 22. Quais as opes para usar grafos? 23. Se dividem em Apenas Grafos; Grafos ou Documentos; 24. Neo4J Persistncia apenas em Grafos; Implementao em Java; o banco mais popular em Grafos; GPL (mas tambm possui suporte comercial); Cypher Query Language 25. MATCH (keanu:Person { name:'KeanuReeves' })-[:ACTED_IN]-(movie:Movie)RETURN movie 26. ArangoDB Multi Modelagem: Grafos Documentos Query Language poderosa (AQL); Desenvolvido em C++ :-) Interface REST HTTP; FOXX Framework que auxilia desenvolvimento web; Drivers nativos para quase todas as linguagens; Livre, mas possui suporte comercial; 27. ArangoShellarangosh> var graph_module = require("org/arangodb/general-graph");arangosh> var graph = graph_module._create("myGraph");arangosh> graph;[ Graph myGraph EdgeDefinitions: [ ] VertexCollections: [ ] ]arangosh> graph._addVertexCollection("shop");arangosh> graph._addVertexCollection("customer");arangosh> graph._addVertexCollection("pet");arangosh> grapharangosh> var rel = graph_module._directedRelation("isCustomer", ["shop"],["customer"]);arangosh> graph._extendEdgeDefinitions(rel);arangosh> graph;[ Graph myGraph EdgeDefinitions: ["isCustomer: [shop] -> [customer]"] VertexCollections: [ ] ] 28. OrientDB Assim como ArangoDB, multi-modelagem: Documento Grafos Desenvolvido em Java; Suporta transaes ACID; Possui linguagem semelhante a SQL; Livre, mas possui suporte comercial tambm; 29. Query Language - Exemplosorientdb> insert into V set name = 'Jay'create record with RID #9:0orientdb> create vertex V set name = 'Jay'create vertex with RID #9:1orientdb> create edge Eat from (select from Person where name ='Luca') to (select from Restaurant where name = 'Dante') 30. Por onde comear? Todas as 3 tecnologias citadas nessa palestra possuem timadocumentao; Avalie sua necessidade, entenda se grafo vai resolver seuproblema; Realize testes, POCs, avaliaes com uma pequena massade dados; Faa os treinamentos disponveis em cada site; ArangoDB parece o mais verstil para comear; Use Neo4J caso precise apenas de Grafos; Java Developers: vejam o OrientDB; 31. OBRIGADO!Siga-me no Twitter: @dumpChristiano Andersonhttp://christiano.me