2015-01-30 9 views
5

Sto utilizzando l'ultima comunità Neo4j (2.2.0-M03) per l'archiviazione dei miei grafici. Sono interessato ad accedervi da Python. Secondo il Neo4j ufficiale documentation, ci sono diverse alternative.Il modo più appropriato per utilizzare Neo4j da Python nel 2015

Da quello che ho capito controllando i documenti, giocando un po 'e controllando this post, py2neo è l'unico che supporta Neo4j 2 (ed etichette). Tuttavia, se mi piacerebbe scrivere ed eseguire algoritmi specifici su Neo4j, dovrei usare Gremlin, attraverso Bulbs, che tuttavia non sembra supportare Neo4j 2.

Ora, vorrei utilizzare alcuni algoritmi personalizzati non attualmente in Neo4j, come Spreading Activation. È in grado di scrivere algoritmi direttamente in Neo4j in Java e di eseguirli da Python usando i comandi cypher tramite py2neo l'unica alternativa? Mi sto perdendo qualcosa?

Cheers

PS. Volevo postare link a tutti i software che ho citato ma sfortunatamente ho bisogno di almeno 10 reputazione per pubblicare più di 2 link ...

+0

Puoi descrivere cosa intendi con "algoritmi di scrittura"? Che tipo? Sì, in generale py2neo è la strada da percorrere, ma sarà difficile darti consigli se non specifichi cosa stai cercando di fare. – FrobberOfBits

+0

Grazie a @FrobberOfBits, ho modificato la domanda. Mi piacerebbe utilizzare algoritmi personalizzati, ad esempio Spreading Activation. – redsk

+0

Questo sarebbe "La scrittura degli algoritmi direttamente in Neo4j in Java e l'esecuzione da Python tramite http l'unica alternativa?" –

risposta

4

Questa è una domanda molto difficile, sembra che tu abbia bisogno di una guida al design non una veloce domanda neo4j . A seconda di come stai usando l'attivazione di spreading, potrebbe essere meglio non modificare il server, ma non posso dirlo perché il tuo caso d'uso è probabilmente coinvolto. Tieni presente che puoi sempre utilizzare neo4j come archivio grafico e quindi inserire concetti di livello superiore come la diffusione dell'attivazione nel codice dell'applicazione, non nel server.

La domanda presuppone che io pensi di volerlo mettere nel server. Quindi quali sono le opzioni? In generale, potresti scrivere un plug-in per server ed estendere l'API RESTful (che non ti aiuterà con py2neo) D'altra parte, non credo che la definizione della tua funzione di cifratura personalizzata sia supportata in questo momento, quindi non puoi necessariamente modificare il linguaggio cifrato stesso, quindi utilizzare i collegamenti py2neo per sfruttare una nuova funzione di cifratura. Advice given elsewhere suggerisce di prendere in considerazione l'implementazione dello spreading unmanaged extension. Se l'hai fatto, ancora una volta, non vedo come py2neo ti possa aiutare.

Breve termine, penso che dovresti considerare NON modificare neo4j stesso, ma piuttosto mettere la tua attivazione di diffusione in codice python che forse usa py2neo. A lungo termine, se neo4j si presenta con un modo di fare funzioni utente definite dall'utente (UDF) che capisco sia sulla roadmap di sviluppo (forse?), Allora quella potrebbe essere una soluzione migliore, ma non la consiglierei senza molti più requisiti e dettagli.

+0

Grazie @FrobberOfBits. Stavo davvero cercando di capire quale alternativa potrei prendere in considerazione per ideare un buon design per la mia applicazione. Le estensioni non gestite Neo4j sono un buon suggerimento. – redsk

+0

Una possibile alternativa sarebbe utilizzare il linguaggio grafico [Gremlin] (https://github.com/tinkerpop/gremlin/wiki) (probabilmente attraverso [tinkerpop3] (http://www.tinkerpop.com/) (non pronto per Neo4j 2.2 afaik). In questo caso, p2neo supporta la chiamata di uno script Gremlin attraverso una [estensione specifica] (http://py2neo.org/2.0/ext/gremlin.html). – redsk

+0

Infine, come hai suggerito, Spreading Activation (o altri algoritmi di grafi) potrebbero essere implementati direttamente in Python (anche se py2neo, probabilmente). In questo caso, tuttavia, probabilmente mi aspetto che le prestazioni si degradino un po ', poiché ogni passo dell'algoritmo implicherebbe il passaggio dei dati da Neo4j all'applicazione Python. – redsk

Problemi correlati