Domanda

I miei requisiti di base da un GraphDB:

  • Maturo (pronto per la produzione)
  • Associazione di linguaggi .NET o C ++ nativi
  • Scalabilità orizzontale: entrambe
    • Ridondanza e partizionamento orizzontale dei dati automatizzate
    • Algoritmi di grafi distribuiti / esecuzione di query

Al momento ho squalificato quanto segue:

  • InfiniteGraph: nessuna associazione di linguaggi C ++ / .NET
  • HyperGraphDB: nessuna associazione di linguaggi C ++ / .NET
  • Microsoft Trinity: non maturo
  • Neo4j: non distribuito

Non sono sicuro della scalabilità di quanto segue:

  • Sparsity DEX
  • Franz Inc. AllegroGraph
  • Sones GraphDB

Ho trovato le informazioni disponibili sulle capacità di scalabilità orizzontale abbastanza generali.Immagino che ci siano buone ragioni per questo.

Qualsiasi informazione sarebbe apprezzata.

È stato utile?

Soluzione

Sfortunatamente i tuoi requisiti di base estendono già la comprensione generale dei grafici odierna, anche in ambito accademico. Nessun database a grafo puro elencato sarà in grado di soddisfare tutte le vostre esigenze. Gli algoritmi di grafi distribuiti che sono a conoscenza di grafici grandi distribuiti ma interconnessi sono ancora un grosso problema di ricerca. Quindi per la tua applicazione potrebbe essere meglio trovare un database di grafici, uno stack di elaborazione di grafici o un archivio RDF ben corrispondenti e implementare le parti mancanti da solo. Quando la tua applicazione è principalmente OLTP (Online Transactional Graph Processing) (lettura / scrittura pesante) con un focus sui vertici e puoi dimettersi dagli algoritmi distribuiti per un momento, quindi usa uno di questi:

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

Quando è più OLAP (Online Analytical Processing) (per lo più letto) ancora con un focus sui vertici e la distribuzione conta davvero:

  • Apache Hama (progetto in fase iniziale)
  • Microsoft Trinity (progetto di ricerca)
  • Golden Orb (buono, ma solo Java)
  • Signal / Collect (http://www.ifi.uzh.ch/ddis/research/sc, ma un progetto di ricerca)

Oppure si concentra maggiormente sui margini, il ragionamento logico / il pattern matching e hai bisogno o meglio puoi vivere con una distribuzione a livello di edge come nel Web semantico, quindi usa uno di questi RDF- / Triple- / Quadstores: / p>

  • AllegroGraph (ok, sono un ibrido di negozio graphdb / rdf;)
  • Jena
  • Sesamo
  • Stardog
  • Virtuoso
  • ... e molti altri archivi RDF

Buoni punti di partenza potrebbero essere DEX o Neo4j: se stai cercando un kernel graphdb buono e molto veloce per C ++ DEX potrebbe essere il migliore, ma dovresti implementare molte cose di rete e di distribuzione da solo. Neo4j ha molta distribuzione e tolleranza ai guasti, ma al momento più a livello di vertex sharding e il suo kernel è Java. Per idee e ispirazione sull'implementazione di algoritmi a grafo distribuito, forse dai un'occhiata a Golden Orb e Signal / Collect. Un approccio alternativo potrebbe iniziare con AllegroGraph o Stardog. Soprattutto AllegroGraph potrebbe essere un po 'complicato all'inizio fino a quando non sarai adottato al loro modo di pensare. Stardog è ancora giovane e Java, ma veloce e già abbastanza maturo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top