Trabalho de Top. 
Especiais em bancos 
de dados (noSql) 
André Carvalho – andrestc@cos.ufrj.br
“UMA COMPARAÇÃO DO DESEMPENHO DE SGBDS DE GRAFOS 
COM ARMAZENAMENTO NATIVO E SGBDS DE GRAFOS COM 
ARMAZENAMENTO BASEADO EM...
Agenda 
´ Introdução 
´ Objetivo 
´ Conjunto de Dados 
´ Experimentos 
´ Resultados 
´ Conclusão 
´ Trabalhos Futur...
Objetivo 
´ Comparar o desempenho de bancos de grafos 
´ Com armazenamento nativo 
´ Neo4j 
´ Com armazenamento chave/...
Conjunto de Dados 
´ Hyperlink Graphs 
http://webdatacommons.org/hyperlinkgraph/ 
´ Uma amostra da web extraída a partir...
Experimentos 
´ Três conjuntos de experimentos 
´ 100 mil arestas (~ 70 mil vértices) 
´ 2 milhões de arestas (~ 1 milh...
Experimentos 
´ Carga Inicial 
´ Neo4j e Titan à BatchGraph (Tinkerpop) 
´ HypergraphDB à Armazenando átomos em memór...
Resultados - Carga Inicial do 
Grafo 
4000 
3500 
3000 
2500 
2000 
1500 
1000 
500 
0 
Criação do Grafo 100k Arestas 
100...
Resultados - Carga Inicial do 
Grafo 
12655 
12079 
12361 
12700 
12600 
12500 
12400 
12300 
12200 
12100 
12000 
11900 
...
Resultados - Carga Inicial do 
Grafo 
35000 
30000 
25000 
20000 
15000 
10000 
5000 
0 
Tempo (ms) 
Criação do Grafo 2 mi...
Resultados - Carga Inicial do 
Grafo 
205789 
255065 
317381 
350000 
300000 
250000 
200000 
150000 
100000 
50000 
0 
Ne...
Resultados – Carga Inicial 
do Grafo 
0 
500000 
1000000 
1500000 
2000000 
2500000 
3000000 
100000 
500000 
900000 
1300...
Resultados – Carga Inicial 
do Grafo 
60000000 
50000000 
40000000 
30000000 
20000000 
10000000 
0 
Neo4j Titan Hypergrap...
Resultados – Carga Inicial 
do Grafo 
0.056 
0.154 
0.934 
0.64 
2.38 
4.35 
4.47 
Neo4j Titan Hypergraph 
0.063 
100k 0.0...
Resultados – Inserção de 
Propriedades em nós 
Neo4j Titan Hypergraph 
20 
18 
16 
14 
12 
10 
8 
6 
4 
2 
0 
100k 1.19888...
Resultados – Menor 
Caminho entre dois nós 
Neo4j Titan Hypergraph 
18 
16 
14 
12 
10 
8 
6 
4 
2 
0 
100k 0.07936 0.0933...
Resultados – Busca Em 
Largura 
Neo4j Titan Hypergraph 
1 
0.9 
0.8 
0.7 
0.6 
0.5 
0.4 
0.3 
0.2 
0.1 
0 
100k 0.07987341...
Resultados – Calculo de 
Centralidade 
Neo4j Titan Hypergraph 
60000 
50000 
40000 
30000 
20000 
10000 
0 
100k 2039 5897...
Análise de Cache 
´ Comparação entre implementações de cache de 
objeto 
´ Neo4j 
´ High Performance Cache ativado 
´ ...
Resultados – Menor 
Caminho entre dois nós 
Menor Caminho entre dois nós 
Neo4j Neo4j HPC Titan Data Cache Titan 
2.5 
2 
...
Resultados – Busca Em 
Largura 
Busca em Largura 
Neo4j Neo4j HPC Titan Data Cache Titan 
1 
0.9 
0.8 
0.7 
0.6 
0.5 
0.4 ...
Resultados – Calculo de 
Centralidade 
Calculo de Centralidade 
Neo4j Neo4j HPC Titan Data Cache Titan 
120000 
100000 
80...
Conclusões 
´ De modo geral, os bancos com armazenamento 
baseado em chave/valor se mostraram bastante 
inferiores ao Neo...
Conclusões 
´ Para grafos menores (100k arestas) o cache de objeto 
fez pouca diferença 
´ No caso do Neo4j se mostrou b...
Trabalhos Futuros 
´ Analisar as configurações do BerkeleyDB a fim de 
buscar melhorar a performance do Hypergraph e do 
...
Trabalho de Top. 
Especiais em bancos 
de dados (noSql) 
André Carvalho – andrestc@cos.ufrj.br
Próximos SlideShares
Carregando em…5
×

Uma comparação do desempenho de SGBDS de grafos com armazenamento nativo e SGBDS de grafos com armazenamento baseado em chave/valor

260 visualizações

Publicada em

Apresentação de trabalho de disciplina de Mestrado.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
260
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Uma comparação do desempenho de SGBDS de grafos com armazenamento nativo e SGBDS de grafos com armazenamento baseado em chave/valor

  1. 1. Trabalho de Top. Especiais em bancos de dados (noSql) André Carvalho – andrestc@cos.ufrj.br
  2. 2. “UMA COMPARAÇÃO DO DESEMPENHO DE SGBDS DE GRAFOS COM ARMAZENAMENTO NATIVO E SGBDS DE GRAFOS COM ARMAZENAMENTO BASEADO EM CHAVE/VALOR”
  3. 3. Agenda ´ Introdução ´ Objetivo ´ Conjunto de Dados ´ Experimentos ´ Resultados ´ Conclusão ´ Trabalhos Futuros
  4. 4. Objetivo ´ Comparar o desempenho de bancos de grafos ´ Com armazenamento nativo ´ Neo4j ´ Com armazenamento chave/valor (BerkeleyDB) ´ TitanDB ´ HypergraphDB
  5. 5. Conjunto de Dados ´ Hyperlink Graphs http://webdatacommons.org/hyperlinkgraph/ ´ Uma amostra da web extraída a partir de um Crawler ´ PLD ´ 43 milhões de vértices (Websites) ´ 623 milhões de arestas (Links) ´ Arquivos ´ Index File – 297 MB (1 GB) ´ ID - URL ´ Arc File – 2.8 GB (10 GB) ´ ID - ID
  6. 6. Experimentos ´ Três conjuntos de experimentos ´ 100 mil arestas (~ 70 mil vértices) ´ 2 milhões de arestas (~ 1 milhão de vértices) ´ 10 milhões de arestas (~ 3 milhões de vértices) ´ Tarefas realizadas: ´ Carga inicial do Grafo ´ Inserção de informações (propriedades) nos nós ´ Menor caminho entre dois nós ´ Busca em largura a partir de um nó ´ Calculo de centralidade de todos os nós ´ Executados em: ´ Intel i7, 8gb de RAM, Windows 7
  7. 7. Experimentos ´ Carga Inicial ´ Neo4j e Titan à BatchGraph (Tinkerpop) ´ HypergraphDB à Armazenando átomos em memória para verificar se já foram inseridos ´ Inserção de informações ´ Utilizando índices ´ Menor caminho entre nós e busca em largura ´ Titan à Gremlin (Tinkerpop) ´ Neo4j e Hypergraph à API’s próprias ´ Centralidade ´ API’s próprias ´ Carregando todos os vértices e contando suas arestas incidentes
  8. 8. Resultados - Carga Inicial do Grafo 4000 3500 3000 2500 2000 1500 1000 500 0 Criação do Grafo 100k Arestas 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 Tempo (ms) Quantidade de Arestas Neo4j Titan Hypergraph
  9. 9. Resultados - Carga Inicial do Grafo 12655 12079 12361 12700 12600 12500 12400 12300 12200 12100 12000 11900 11800 11700 Neo4j Titan Hypergraph Tempo (ms) 100k Arestas
  10. 10. Resultados - Carga Inicial do Grafo 35000 30000 25000 20000 15000 10000 5000 0 Tempo (ms) Criação do Grafo 2 milhões de arestas Quantidade de Arestas Neo4j Titan Hypergraph
  11. 11. Resultados - Carga Inicial do Grafo 205789 255065 317381 350000 300000 250000 200000 150000 100000 50000 0 Neo4j Titan Hypergraph Tempo (ms) 2kk Arestas
  12. 12. Resultados – Carga Inicial do Grafo 0 500000 1000000 1500000 2000000 2500000 3000000 100000 500000 900000 1300000 1700000 2100000 2500000 2900000 3300000 3700000 4100000 4500000 4900000 5300000 5700000 6100000 6500000 6900000 7300000 7700000 8100000 8500000 8900000 9300000 9700000 Tempo (ms) Quantidade de arestas Criação do Grafo 10kk Arestas Neo4j Titan Hypergraph
  13. 13. Resultados – Carga Inicial do Grafo 60000000 50000000 40000000 30000000 20000000 10000000 0 Neo4j Titan Hypergraph Tempo (ms) 10kk Arestas
  14. 14. Resultados – Carga Inicial do Grafo 0.056 0.154 0.934 0.64 2.38 4.35 4.47 Neo4j Titan Hypergraph 0.063 100k 0.063 0.056 0.154 2kk 0.934 0.64 2.38 10kk 4.35 4.47 15.60 15.60 ESPAÇO EM DISCO (GB) ESPAÇO OCUPADO EM DISCO
  15. 15. Resultados – Inserção de Propriedades em nós Neo4j Titan Hypergraph 20 18 16 14 12 10 8 6 4 2 0 100k 1.198886076 0.994379747 0.603544304 2kk 1.1379 1.07584 14.87694 10kk 1.43385 18.7803 0 Tempo (ms) Tempo médio na inserção propriedades 100k 2kk 10kk
  16. 16. Resultados – Menor Caminho entre dois nós Neo4j Titan Hypergraph 18 16 14 12 10 8 6 4 2 0 100k 0.07936 0.09338 0.43828 2kk 1.62647 0.24174 10kk 2.53481 17.08998 Tempo médio (ms) Calculo do Menor Caminho
  17. 17. Resultados – Busca Em Largura Neo4j Titan Hypergraph 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 100k 0.079873418 0.096582278 0.523658228 2kk 0.123159335 0.898228739 Tempo (ms) médio Busca em Largura (profundidade max. 3)
  18. 18. Resultados – Calculo de Centralidade Neo4j Titan Hypergraph 60000 50000 40000 30000 20000 10000 0 100k 2039 5897 18408 2kk 13379 55537 10kk 48708 Tempo (ms) Calculo de Centralidade * Hypergraph com 2kk: 6.912.718 ms
  19. 19. Análise de Cache ´ Comparação entre implementações de cache de objeto ´ Neo4j ´ High Performance Cache ativado ´ 1GB para vértices ´ 500MB para arestas ´ Titan ´ Cache de objeto ativado ´ 1.5GB para vértices e arestas ´ Repetindo a execução dos algoritmos de grafos
  20. 20. Resultados – Menor Caminho entre dois nós Menor Caminho entre dois nós Neo4j Neo4j HPC Titan Data Cache Titan 2.5 2 1.5 1 0.5 0 100k 0.07936 0.06308 0.09424 0.09338 2kk 1.62647 0.49148 2.16129 0.24174
  21. 21. Resultados – Busca Em Largura Busca em Largura Neo4j Neo4j HPC Titan Data Cache Titan 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 100k 0.079873418 0.065101266 0.068518987 0.096582278 2kk 0.123159335 0.091173021 0.386042033 0.898228739
  22. 22. Resultados – Calculo de Centralidade Calculo de Centralidade Neo4j Neo4j HPC Titan Data Cache Titan 120000 100000 80000 60000 40000 20000 0 100k 2039 1308 5421 5897 2kk 13379 13692 101136 55537
  23. 23. Conclusões ´ De modo geral, os bancos com armazenamento baseado em chave/valor se mostraram bastante inferiores ao Neo4j; ´ Principalmente em grafos maiores. ´ Apesar disso, a diferença nos resultados entre o TitanDB e o HypergraphDB evidencia as diferenças de implementação; ´ Por ser muito genérico, o HypergraphDB acaba sofrendo problemas de performance. ´ Comunidade pouco ativa e “não profissional”. ´ Problemas de performance conhecidos.
  24. 24. Conclusões ´ Para grafos menores (100k arestas) o cache de objeto fez pouca diferença ´ No caso do Neo4j se mostrou bastante eficiente em grafos maiores ´ As configurações, de modo geral, são pouco documentadas. É necessário um esforço, por meio de experimentação, para obter melhoras na performance. ´ A Tinkerpop Stack apesar de interessante, ainda carece de algumas funcionalidades, principalmente de algoritmos.
  25. 25. Trabalhos Futuros ´ Analisar as configurações do BerkeleyDB a fim de buscar melhorar a performance do Hypergraph e do Titan; ´ Comparar os resultados com outros tipos de armazenamento, por exemplo, o relacional; ´ Contribuir para algum dos projetos do Tinkerpop Stack.
  26. 26. Trabalho de Top. Especiais em bancos de dados (noSql) André Carvalho – andrestc@cos.ufrj.br

×