2013-08-28 18 views
22

Esistono triplestores (database semantici) e database di grafici generici.Qual è la differenza tra i datastore e i database di grafici?

Entrambi si basano su concetti simili di collegamento di un "oggetto" a un altro tramite una relazione. Triplestores supporta RDF e viene interrogato da SPARQL, ma tali componenti aggiuntivi possono essere (e sono) implementati anche su database di grafici generici.

Qual è la differenza fondamentale che ti farebbe preferire un db/triplestore semantico a un database di grafici generici come neo4j?

risposta

6

I miei 2 centesimi.

Neo4j rientra nella categoria del grafico delle proprietà. Supportano le relazioni dirette e ogni relazione ha solo due nodi; il nodo iniziale e il nodo finale. I nodi e le relazioni possono memorizzare dati arbitrari sotto forma di coppie chiave-valore. Tuttavia, non possono supportare le relazioni 3-arie. Ad esempio, non è possibile avere uno spigolo che collega più di due nodi, ovvero a kind of hyperdege. È tuttavia possibile emulare relazioni a 3 ary nei grafici delle proprietà creando nodi di join. You can see how to implement this in neo4j here.

I triplestores hanno un linguaggio di query standardizzato sotto forma di SPARQL ma non esiste ancora uno standard per l'interrogazione di altri database di grafici. RDF è lo standard per l'importazione/esportazione da triplestores.

11

negozi di tripli sono database grafico. RDF è un grafico. Certo, i negozi tripli tendono a non memorizzare le informazioni internamente come un grafico; non è ottimale per la risposta alle query, ma sono comunque database di grafici.

Preferiresti qualcosa di simile a neo4j se sei interessato a un ecosistema basato sugli standard del W3C. Rende banale il concetto di interoperabilità con altri sistemi basati su RDF, e fa in modo che sia semplice prendere tutto e trasferirsi in un altro negozio triplo.

10

Per iniziare, tutte le strutture di dati possono essere proiettate in modo più o meno doloroso in qualsiasi motore di archiviazione sottostante (o persino nel file system e nei file di testo). Il motivo per scegliere un determinato modello di dati e di storage back-end sono IMHO:

  • vostro sviluppo e modellazione preferenze
  • le prestazioni di runtime previsto per l'inserimento, l'archiviazione e l'interrogazione del modello.

Come accennato prima, sia RDBMS e triplestore tendono ad essere utile in fase di esecuzione in "superficiale" l'attraversamento di aderire o attraversamenti SPARQL, e da fare molto lavoro in cache o preparati vista ecc database del grafico (in modo univoco Neo4j) mettere il la struttura del grafico in realtà scende al livello di archiviazione e fa puntare il puntatore (con un numero di ottimizzazioni) sul livello del record del nodo. Pertanto, quando si attraversa il grafico, non è necessario toccare più del sottografo corrente fino al livello di archiviazione, in modo da poter attraversare parti dei dati senza toccare l'intero grafico, ottenendo prestazioni costanti per una serie di scenari interessanti .

Problemi correlati