2012-05-22 12 views
10

Attualmente sto usando il binding python incorporato per neo4j. Al momento non ho alcun problema dal momento che il mio grafico è molto piccolo (sparse e fino a 100 nodi). L'algoritmo che sto sviluppando coinvolge un bel po 'di traversal sul grafico, in particolare DFS sul grafico in generale e su diversi sottografi. In futuro intendo eseguire l'algoritmo su grafici di grandi dimensioni (apparentemente sparsi e con milioni di nodi).Scegliere un modo appropriato per utilizzare Neo4j in Python

Avendo letto diversi thread relativi alle prestazioni di attacchi python/Neo4j here, here, mi chiedo se devo già passare a qualche cliente REST API per Python (come bulbflow, py2neo, neo4jrestclient) fino a quando io sono troppo per il cambiamento tutto il codice

Purtroppo, non ho trovato alcuna fonte completa di informazioni per confrontare approcci diversi.

Qualcuno potrebbe fornire ulteriori informazioni su questo problema? Quali criteri dovrei prendere in considerazione quando si sceglie una delle opzioni?

risposta

0

Non proprio sicuro, non sono un esperto, ma penso che dipenda anche dalle vostre aspettative Django e dalla quantità di struttura necessaria. Py2neo è molto pragmatico e snello, Bulbflow sembra costruire un intero stack di mappatura ecc. E neo4jrestclient si concentra su Django (potrebbe essere sbagliato)?

+0

Devo confessare che non conosco Django. Non è qualcosa legato alle applicazioni web? Sto facendo tutto localmente su 1 macchina in questo momento. Dovrei ancora controllarlo? – npobedina

+0

non sono sicuro, vorrei fare un tentativo. –

8

Django è un framework MVC per cui potresti essere interessato se la tua deve essere un'applicazione web.

Dal punto di vista di py2neo (di cui sono l'autore), sto cercando di concentrarmi sulle prestazioni utilizzando automaticamente il meccanismo di esecuzione batch, laddove appropriato, oltre a fornire un forte supporto per Cypher. Recentemente ho anche lavorato molto sulla fornitura di buone opzioni per la gestione dell'unicità all'interno degli indici, in particolare i metodi get_or_create e add_if_none.

3

Il modo più semplice per eseguire algoritmi da Python è quello di utilizzare Gremlin (https://github.com/tinkerpop/gremlin/wiki).

Con Gremlin si può racchiudere tutto in una richiesta HTTP per ridurre di andata e ritorno in testa.

Ecco come eseguire gli script Gremlin da lampadine (http://bulbflow.com):

>>> from bulbs.neo4jserver import Graph 
>>> g = Graph() 
>>> script = "g.v(id).out('knows').out('knows')" 
>>> params = dict(id=3) 
>>> g.gremlin.execute(script, params) 

La documentazione API lampadine Gremlin sono qui: http://bulbflow.com/docs/api/bulbs/gremlin/

+1

grazie per la raccomandazione. Ho già letto alcuni confronti tra Gremlin e Cypher. Quindi, suppongo di dover provare entrambi per decidere quale è più appropriato nel mio caso d'uso. Sembra che ci sia un problema con il sito web di bulbflow. Sai se sarà presto disponibile? – npobedina

+1

C'è stato un problema DNS che si sta aggiornando. Per ora puoi accedervi qui: http://bulbflow.herokuapp.com – espeed

+0

è possibile eseguire query Cypher contro neo4j usando bulbflow? la documentazione su questo tema sembra essere oscura. è davvero meglio (più veloce) attenersi a Gremlin quando si lavora con bulbflow? – npobedina

Problemi correlati