Voglio memorizzare alcuni dati nel mio database neo4j. Io uso spring-data-neo4j per quello.di CRUDRepository è molto lento?
il mio codice è come il seguente:
for (int i = 0; i < newRisks.size(); i++) {
myRepository.save(newRisks.get(i));
System.out.println("saved " + newRisks.get(i).name);
}
mio newRisks-array contiene circa 60000 oggetti e 60000 bordi. Ogni nodo e spigolo ha una proprietà. La durata di questo ciclo è di circa 15 - 20 minuti, è normale? Ho usato Java VisualVM per cercare alcuni colli di bottiglia, ma il mio utilizzo medio della CPU era del 10 - 25% (di 4 core) e il mio heap era meno della metà pieno.
Ci sono delle opzioni per potenziare questa operazione?
EDIT: supplementare è, per la prima chiamata di myRepository.save(newRisks.get(i));
JVM caduta assleep fpr alcuni minuti prima della prima uscita è venuta
Secondo EDIT:
Classe rischio:
@NodeEntity
public class Risk {
//...
@Indexed
public String name;
@RelatedTo(type = "CHILD", direction = Direction.OUTGOING)
Set<Risk> risk = new HashSet<Risk>();
public void addChild(Risk child) {
risk.add(child);
}
//...
}
Creazione di rischi:
@Autowired
private Repository myRepository;
@Transactional
public Collection<Risk> makeSomeRisks() {
ArrayList<Risk> newRisks = new ArrayList<Risk>();
newRisks.add(new Risk("Root"));
for (int i = 0; i < 60000; i++) {
Risk risk = new Risk("risk " + (i + 1));
newRisks.get(0).addChild(risk);
newRisks.add(risk);
}
for (int i = 0; i < newRisks.size(); i++) {
myRepository.save(newRisks.get(i));
}
return newRisks;
}
In base alla [documentazione] (http://static.springsource.org/spring-data/data-neo4j/docs/2.0.0.RC1/api/org/springframework/data/neo4j/repository/CRUDRepository. html), CRUDRepository.save può prendere un Iterable come argomento. Perché non solo myRepository.save (newRisks)? – Thomas
ho provato questo e funziona anche. ma non è più veloce. così posso vedere, non è morto ^^ – hilbert
potresti mostrare la struttura della tua classe e qualsiasi entità di nodo e entità di relazione a cui si riferisce. E il metodo di costruzione delle istanze di rischio? –