Pregunta

Mis requisitos básicos de GraphDB:

  • Maduro (listo para producción)
  • Enlace de lenguaje nativo .NET o C ++
  • Escalabilidad horizontal: ambos
    • Redundancia y fragmentación de datos automatizados
    • Algoritmos de gráficos distribuidos / ejecución de consultas

Actualmente descalifiqué lo siguiente:

  • InfiniteGraph: sin enlace de lenguaje C ++ / .NET
  • HyperGraphDB: sin enlace de lenguaje C ++ / .NET
  • Microsoft Trinity: no maduro
  • Neo4j: no distribuido

No estoy seguro de la escalabilidad de lo siguiente:

  • Escasa DEX
  • Franz Inc. AllegroGraph
  • Sones GraphDB

Encontré la información disponible sobre las capacidades de escalabilidad horizontal bastante general.Supongo que hay buenas razones para ello.

Se agradecería cualquier información.

¿Fue útil?

Solución

Desafortunadamente, sus requisitos básicos ya amplían la comprensión general actual de los gráficos, incluso en el ámbito académico. Ninguna base de datos de gráficos puros enumerados podrá satisfacer todas sus necesidades. Los algoritmos de gráficos distribuidos que son conscientes de los grandes gráficos distribuidos pero interconectados siguen siendo un gran problema de investigación. Por lo tanto, para su aplicación, podría ser mejor encontrar una base de datos de gráficos, una pila de procesamiento de gráficos o RDF-Store que coincidan e implementar las partes faltantes por su cuenta. Cuando su aplicación es principalmente Procesamiento de gráficos transaccionales en línea (OLTP) (lectura / escritura pesada) con un enfoque en los vértices y puede renunciar a los algoritmos distribuidos por un momento, luego use uno de estos:

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

Cuando se trata más del procesamiento analítico en línea (OLAP) (en su mayoría de lectura) todavía con un enfoque en los vértices y la distribución realmente importa entonces:

  • Apache Hama (proyecto en etapa inicial)
  • Microsoft Trinity (proyecto de investigación)
  • Golden Orb (bueno, pero solo Java)
  • Signal / Collect (http://www.ifi.uzh.ch/ddis/research/sc, pero un proyecto de investigación)

¿O se centra más en los bordes, el razonamiento lógico / coincidencia de patrones y necesita o mejor puede vivir con una distribución en un nivel de borde como en la Web Semántica y luego use uno de estos RDF- / Triple- / Quadstores: / p>

  • AllegroGraph (está bien, son un híbrido de tienda graphdb / rdf;)
  • Jena
  • Sésamo
  • Perro estrella
  • Virtuoso
  • ... y muchas más tiendas RDF

Un buen punto de partida puede ser DEX o Neo4j: si está buscando un kernel de graphdb bueno y realmente rápido para C ++, DEX podría ser lo mejor, pero tendría que implementar muchas cosas de red y distribución por su cuenta. Neo4j tiene mucha distribución y tolerancia a fallas, pero por el momento más en un nivel de fragmentación de vértices y su núcleo es Java. Para obtener ideas e inspiración sobre la implementación de algoritmos de gráficos distribuidos, quizás eche un vistazo a Golden Orb y Signal / Collect. Un enfoque alternativo podría comenzar con AllegroGraph o Stardog. Especialmente AllegroGraph puede ser un poco complicado al principio hasta que te adopten a su forma de pensar. Stardog es todavía joven y Java, pero rápido y ya bastante maduro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top