2015-11-02 13 views
6

Ottengo un timeout durante l'interrogazione per profondità 2 utilizzando session.load(). Sto lavorando con Neo4j OGM 1.1.3 (Tentativo di migrare da Spring Data Neo4j 3.4) . Cercando di caricare un oggetto NodeCarica un oggetto in Neo4j OGM 1.1.3 ogm profondità di 2 molto lento

class Node { 
    Long id; 
    String name; 

    @Relationship(type="NodeToCategory") 
    Category category; 

    @Realtionship(type="NodeToChildNode") 
    Node node 
} 

class Category { 
    Long id; 
    String name; 
    String color; 
    Date createdAt; 
} 

La categoria che è collegato al mio nodo è molto popolare (20.000 nodi hanno la stessa categoria) e quando uso corro session.load(Node.class, 1L, 2) i tempi di richiesta fuori. Può essere che stia cercando di interrogare per tutte le relazioni della categoria (anche se la mia categoria di modello in Java ignora questa relazione)?

quello che mi aspetterei che si carichi è semplicemente:.

|My Node 
| |category 
| |child node 
| | | category 
| | | child node 

Che non è una richiesta molto pesante e non dovrebbe timeout (a meno che non si sta caricando i rapporti non necessari

C'è un modo per dire un solo carico di certe relazioni profondamente?

Per esempio vorrei caricare 10 livelli di un albero ma altre informazioni sul mio albero (come la categoria, ruolo che non sono realmente i nodi dell'albero ma semplicemente rappresentano più informazioni) Vorrei voglio solo t o caricali senza le loro relazioni. Quindi vorrei caricare tutti gli oggetti Node e caricare solo altri oggetti lungo la strada senza le loro relazioni.

UPDATE

trovato due questioni aperte che sembrano affrontare questi problemi:

https://github.com/neo4j/neo4j-ogm/issues/55

https://github.com/neo4j/neo4j-ogm/issues/70

risposta

0

Questo problema è stato risolto in OGM 3.0 con lo schema di carico base.

Il caricamento basato sullo schema significa che OGM ora esamina il modello del proprio dominio dell'oggetto e recupera solo ciò che è realmente presente nel modello, anziché tutto fino alla profondità specificata.

Nel tuo caso, poiché lo Category non si collega a Node, la nuova versione non caricherà questi molti nodi non necessari, portando a un enorme miglioramento delle prestazioni.