A palestra apresenta conceitos básicos de grafos, exemplos de uso e opções de persistência em grafos. O documento discute teoria de grafos, representação de grafos, casos de uso como redes sociais e sistemas de recomendação, e ferramentas como Neo4j, ArangoDB e OrientDB. O palestrante sugere avaliar cuidadosamente as necessidades do projeto antes de escolher uma solução de grafos.
Uma abordagem divertida sobre grafos com Neo4j, ArangoDB e OrientDB
1. Grafos
Uma abordagem divertida
Latinoware 2014
Christiano Anderson
Twitter: @dump
2. Agenda
● Apresentação
● Conceitos básicos de grafos
● Exemplos de uso
● Persistência em grafos
3. Quem sou?
● Especialista em Big Data e NoSQL na Propus;
● Desenvolvedor Python;
● Trabalha desde o início 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 não aborda...
● Conceitos mais aprofundados em grafos;
● Código (é uma palestra mais conceitual);
● Solução “bala de prata”;
5. Novo paradigma?
● Grafo não é algo recente;
● O mundo não gira apenas no banco relacional;
● Inovação = novas tecnologias;
● Inovação = pensar fora da caixa;
● Inovação = ser eficiente;
6. Grafo não é algo recente
● Quem se lembra das aulas de estrutura de
dados?
– Vetores (arrays);
– Fila;
– Pilha;
– Árvores;
– Grafos;
7. O mundo não gira apenas no banco
relacional
● Muita gente ainda está viciada nos
RDBMs, quando pensa em um
novo projeto, já começa imaginar a
estrutura de tabelas;
● Um arquiteto precisa pensar na
melhor solução para cada caso e
saber que o mundo da persistência
não tem apenas os RDBMs.
10. Ser eficiente
● Usar a tecnologia certa no momento certo vai
tornar seu trabalho absurdamente eficiente!
11. Grafos?
Vértice / nós
Representação de grafo com 4
vértices e 6 arestas
Aresta
12. Grafos?
● Leonhard Euler → Inventor da teoria de grafos
– 1736
– Qual a possibilidade de atravessar todas as pontes
da cidade sem repetir nenhuma?
– Grafo Euleriano
14. Teoria dos grafos
A teoria dos grafos é um ramo da matemática que estuda as
relações entre os objetos de um determinado conjunto. Para tal
são empregadas estruturas chamadas de grafos, G(V,A), onde V é
um conjunto não vazio de objetos denominados vértices e A é um
conjunto de pares não ordenados de V, chamado arestas.
(fonte: Wikipedia)
21. Para que usar Grafos?
● Sistemas de recomendação
● Catálogo de produtos
● Filtragem colaborativa
● Redes sociais (o clássico)
● Sistemas geoespaciais
● E muito mais...
24. Se dividem em
● Apenas Grafos;
● Grafos ou Documentos;
25. Neo4J
● Persistência apenas em Grafos;
● Implementação em Java;
● É o banco mais popular em Grafos;
● GPL (mas também possui suporte comercial);
● Cypher Query Language
27. 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;
29. OrientDB
● Assim como ArangoDB, é multi-modelagem:
– Documento
– Grafos
● Desenvolvido em Java;
● Suporta transações ACID;
● Possui linguagem semelhante a SQL;
● Livre, mas possui suporte comercial também;
30. Query Language - Exemplos
orientdb> insert into V set name = 'Jay'
create record with RID #9:0
orientdb> create vertex V set name = 'Jay'
create vertex with RID #9:1
orientdb> create edge Eat from (select from Person where name =
'Luca') to (select from Restaurant where name = 'Dante')
31. Por onde começar?
● Todas as 3 tecnologias citadas nessa palestra possuem ótima
documentação;
● Avalie sua necessidade, entenda se grafo vai resolver seu
problema;
● Realize testes, POCs, avaliações com uma pequena massa
de dados;
● Faça os treinamentos disponíveis em cada site;
● ArangoDB parece o mais versátil para começar;
● Use Neo4J caso precise apenas de Grafos;
● Java Developers: vejam o OrientDB;