Uma comparação do desempenho de SGBDS de grafos com armazenamento nativo e SGBDS de grafos com...

26
Trabalho de Top. Especiais em bancos de dados (noSql) André Carvalho – [email protected]

Transcript of Uma comparação do desempenho de SGBDS de grafos com armazenamento nativo e SGBDS de grafos com...

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

Trabalho de Top. Especiais em bancos de dados (noSql)

André Carvalho – [email protected]

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

“UMA COMPARAÇÃO DO DESEMPENHO DE SGBDS DE GRAFOS COM ARMAZENAMENTO NATIVO E SGBDS DE GRAFOS COM

ARMAZENAMENTO BASEADO EM CHAVE/VALOR”

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

Agenda

´  Introdução

´  Objetivo

´  Conjunto de Dados

´  Experimentos

´  Resultados

´  Conclusão

´  Trabalhos Futuros

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

Objetivo

´  Comparar o desempenho de bancos de grafos

´  Com armazenamento nativo

´  Neo4j

´  Com armazenamento chave/valor (BerkeleyDB)

´  TitanDB

´  HypergraphDB

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

Conjunto de Dados

´  Hyperlink Graphs

´  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

http://webdatacommons.org/hyperlinkgraph/

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

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

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

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

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

Resultados - Carga Inicial do Grafo

0

500

1000

1500

2000

2500

3000

3500

4000

10000 20000 30000 40000 50000 60000 70000 80000 90000 100000

Tem

po

(m

s)

Quantidade de Arestas

Criação do Grafo 100k Arestas

Neo4j

Titan

Hypergraph

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

Resultados - Carga Inicial do Grafo

12655

12079

12361

11700

11800

11900

12000

12100

12200

12300

12400

12500

12600

12700

Neo4j Titan Hypergraph

Tem

po

(m

s)

100k Arestas

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

Resultados - Carga Inicial do Grafo

0

5000

10000

15000

20000

25000

30000

35000

Tem

po

(m

s)

Quantidade de Arestas

Criação do Grafo 2 milhões de arestas

Neo4j

Titan

Hypergraph

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

Resultados - Carga Inicial do Grafo

205789

255065

317381

0

50000

100000

150000

200000

250000

300000

350000

Neo4j Titan Hypergraph

Tem

po

(m

s)

2kk Arestas

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

Resultados – Carga Inicial do Grafo

0

500000

1000000

1500000

2000000

2500000

3000000

1000

00

5000

00

9000

00

1300

000

1700

000

2100

000

2500

000

2900

000

3300

000

3700

000

4100

000

4500

000

4900

000

5300

000

5700

000

6100

000

6500

000

6900

000

7300

000

7700

000

8100

000

8500

000

8900

000

9300

000

9700

000

Tem

po

(m

s)

Quantidade de arestas

Criação do Grafo 10kk Arestas

Neo4j

Titan

Hypergraph

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

Resultados – Carga Inicial do Grafo

0

10000000

20000000

30000000

40000000

50000000

60000000

Neo4j Titan Hypergraph

Tem

po

(m

s)

10kk Arestas

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

Resultados – Carga Inicial do Grafo

Neo4j Titan Hypergraph

100k 0.063 0.056 0.154

2kk 0.934 0.64 2.38

10kk 4.35 4.47 15.60

0.06

3

0.05

6

0.15

4

0.93

4

0.64

2.38

4.35

4.47

15.6

0

ESPA

ÇO

EM

DIS

CO

(G

B)

ESPAÇO OCUPADO EM DISCO

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

Resultados – Inserção de Propriedades em nós

Neo4j Titan Hypergraph

100k 1.198886076 0.994379747 0.603544304

2kk 1.1379 1.07584 14.87694

10kk 1.43385 18.7803 0

0

2

4

6

8

10

12

14

16

18

20

Tem

po

(m

s)

Tempo médio na inserção propriedades

100k

2kk

10kk

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

Resultados – Menor Caminho entre dois nós

Neo4j Titan Hypergraph

100k 0.07936 0.09338 0.43828

2kk 1.62647 0.24174

10kk 2.53481 17.08998

0

2

4

6

8

10

12

14

16

18

Tem

po

dio

(m

s)

Calculo do Menor Caminho

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

Resultados – Busca Em Largura

Neo4j Titan Hypergraph

100k 0.079873418 0.096582278 0.523658228

2kk 0.123159335 0.898228739

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Tem

po

(m

s) m

éd

io Busca em Largura (profundidade max. 3)

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

Resultados – Calculo de Centralidade

Neo4j Titan Hypergraph

100k 2039 5897 18408

2kk 13379 55537

10kk 48708

0

10000

20000

30000

40000

50000

60000

Tem

po

(m

s)

Calculo de Centralidade

* Hypergraph com 2kk: 6.912.718 ms

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

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

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

Resultados – Menor Caminho entre dois nós

Neo4j Neo4j HPC Titan Data Cache Titan

100k 0.07936 0.06308 0.09424 0.09338

2kk 1.62647 0.49148 2.16129 0.24174

0

0.5

1

1.5

2

2.5

Menor Caminho entre dois nós

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

Resultados – Busca Em Largura

Neo4j Neo4j HPC Titan Data Cache Titan

100k 0.079873418 0.065101266 0.068518987 0.096582278

2kk 0.123159335 0.091173021 0.386042033 0.898228739

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Busca em Largura

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

Resultados – Calculo de Centralidade

Neo4j Neo4j HPC Titan Data Cache Titan

100k 2039 1308 5421 5897

2kk 13379 13692 101136 55537

0

20000

40000

60000

80000

100000

120000

Calculo de Centralidade

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

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.

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

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.

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

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.

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

Trabalho de Top. Especiais em bancos de dados (noSql)

André Carvalho – [email protected]