graph ou banco de dados relacional?

5

Estou começando a pensar que muitas das minhas tabelas podem ser substituídas apenas por um gráfico db:

Por exemplo: Eu tenho 4 tabelas: contas, votos, posts, relacionamentos

mas posso representar tudo isso em uma tabela de gráficos com diferentes arestas,

NODE1 -> type of relation -> NODE2
account -> vote_+1 -> post
account -> wrote -> post
account -> friend -> account2

há alguma diferença de desempenho entre eles?

    
por rodi 13.06.2011 / 19:37
fonte

5 respostas

5

você pode sempre representar dados relacionais em forma de gráfico

a chave é como você está usando os dados - principalmente atualizações transacionais, principalmente consultas de travessia de gráfico?

se você tiver tempo, faça a conversão e faça o perfil de suas operações mais comuns nos dois bancos de dados

    
por 13.06.2011 / 23:40
fonte
2

Na verdade, mais do que ser um gráfico DB, o que você descreve é mais como triplestore .

Triplica assunto - > predicado - > objeto, é o que você está chamando node1 - > type_of_relation - > node2.

Se você combinar isso com o mecanismo de inferência , poderá ter uma ferramenta muito poderosa. Você poderia não apenas consultar relações diretas, mas também relações implícitas. Por exemplo, se você definir regras como:

A - > avô - > B: = (A - > pai - > x) & & (x - > pai - > B)

Eles podem consultar os avós, mas você não precisa armazenar essas informações no banco de dados. Claro que este é um exemplo muito simples, você pode usá-lo para construir relações bastante complicadas.

A linguagem de consulta para triplestores é SPARQL , que é aproximadamente baseada em SQL, e é bastante simples de entender.

    
por 14.06.2011 / 13:34
fonte
0

É um sistema ao vivo? Você tem problemas de desempenho?

Se não, não se incomode em mudar tudo para um banco de dados gráfico. Se você não ganha nada, mas leva muito tempo longe de outras tarefas, vale a pena? Não.

Se sim, identifique (perfil) se é ou não o banco de dados o problema. Se for, faça alguns testes e verifique se um banco de dados gráfico será mais rápido ou não.

Não apenas "otimize" sem realmente saber se vale a pena ou não. O mais importante é ter uma boa arquitetura e depois você pode ver se há algum problema. Primeiro, quando você encontrar o problema, você começa a encontrar uma solução melhor.

    
por 14.06.2011 / 00:03
fonte
0

Uma tabela auxiliar de relacionamento many2many (uma tabela com apenas duas chaves estrangeiras) é uma lista de adjacências digraph. Um gráfico db pode ser vantajoso se você tiver muitos relacionamentos de m2m, no entanto, ele vem com o mesmo custo de um m2m, o que é sempre uma coisa ruim, a menos que seja realmente necessário.

Por exemplo, account -> vote_+1 -> post e account -> friend -> account2 são relacionamento m2m, mas account -> wrote -> post não são.

    
por 14.06.2011 / 01:15
fonte
0

Absolutamente sim. O GraphDB permite acelerar muitas operações, como a travessia. Mas o ganho depende do caso de uso específico.

    
por 16.06.2011 / 11:18
fonte