Pergunta

Meus requisitos básicos de um GraphDB:

  • Maduro (pronto para produção)
  • Vinculação de linguagem nativa .NET ou C ++
  • Escalabilidade horizontal: ambos
    • Redundância e fragmentação de dados automatizados
    • Algoritmos de gráfico distribuído / execução de consulta

Atualmente, desqualifiquei o seguinte:

  • InfiniteGraph: sem ligação de linguagem C ++ / .NET
  • HyperGraphDB: sem ligação de linguagem C ++ / .NET
  • Microsoft Trinity: não maduro
  • Neo4j: não distribuído

Não tenho certeza sobre a escalabilidade do seguinte:

  • Sparsity DEX
  • Franz Inc. AllegroGraph
  • Sones GraphDB

Achei as informações disponíveis sobre os recursos de escalabilidade horizontal bastante gerais.Acho que há boas razões para isso.

Qualquer informação seria apreciada.

Foi útil?

Solução

Infelizmente, seus requisitos básicos já estendem o conhecimento geral atual de gráficos - mesmo na academia. Nenhum banco de dados de gráfico puro listado será capaz de satisfazer todas as suas necessidades. Algoritmos de grafos distribuídos que estão cientes de grandes gráficos distribuídos, mas interconectados ainda são um grande problema de pesquisa. Portanto, para a sua aplicação, pode ser melhor encontrar um banco de dados de gráficos, pilha de processamento de gráficos ou RDF-Store e implementar as partes ausentes por conta própria. Quando sua aplicação é principalmente de processamento de gráfico transacional online (OLTP) (leitura / gravação pesada) com foco nos vértices e você pode renunciar aos algoritmos distribuídos por um momento, então use um destes:

  • Neo4j
  • OrientDB
  • DEX
  • HyperGraphDB
  • InfiniteGraph
  • InfoGrid
  • Microsoft Horton

Quando é mais processamento analítico online (OLAP) (principalmente lido) ainda com foco nos vértices e distribuição realmente importa então:

  • Apache Hama (projeto em estágio inicial)
  • Microsoft Trinity (projeto de pesquisa)
  • Golden Orb (bom, mas apenas Java)
  • Signal / Collect (http://www.ifi.uzh.ch/ddis/research/sc, mas um projeto de pesquisa)

Ou seu foco está mais nas bordas, raciocínio lógico / correspondência de padrões e você precisa ou melhor pode conviver com uma distribuição em um nível de borda como na Web Semântica e usar um destes RDF- / Triplo- / Quadstores:

  • AllegroGraph (ok, eles são um híbrido de armazenamento de graphdb / rdf;)
  • Jena
  • gergelim
  • Stardog
  • Virtuoso
  • ... e muitas outras lojas RDF

Bons pontos de partida podem ser DEX ou Neo4j: Se você está procurando um kernel graphdb bom e realmente rápido para C ++, DEX pode ser o melhor, mas você terá que implementar muitas coisas de rede e distribuição por conta própria. Neo4j tem muita distribuição e tolerância a falhas, mas no momento mais em um nível de fragmentação de vértice e seu kernel é Java. Para ideias e inspiração sobre a implementação de algoritmos de grafos distribuídos, talvez dê uma olhada em Golden Orb e Signal / Collect. Uma abordagem alternativa pode ser começar com AllegroGraph ou Stardog. Especialmente o AllegroGraph pode ser um pouco complicado no início, até que você seja adotado por sua maneira de pensar. Stardog ainda é jovem e Java, mas rápido e já bastante maduro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top