2012-11-10 10 views
15

Ich möchte keine Daten persistieren, aber immer noch Neo4j für seine Graph Traversal und Algorithmus Fähigkeiten verwenden. In einer eingebetteten Datenbank habe ich cache_type = strong konfiguriert und nach allen Schreibvorgängen habe ich die Transaktion auf Fehler gesetzt. Aber meine Schreibgeschwindigkeiten (Knoten, Beziehungsgeschwindigkeit) sind langsam und das wird zu einem großen Engpass in meinem Prozess.Neo4j rein im Speicher ohne jegliche Persistenz laufen lassen

Also, die Frage ist, kann Neo4j ohne jegliche Persistenz Aspekte überhaupt ausgeführt werden und nur als reine API? Ich habe andere wie JGraphT ausprobiert, aber diese haben keine Traversierungsmechanismen wie die, die Neo4j bietet.

+3

Haben Sie eine machbare Lösung gefunden? – jagamot

+0

also unterstützt Neo4j das nicht? Ich würde auch gerne Neo4j im Speicher ausführen, ohne irgendeine Sicherung im Dateisystem, nur wegen seiner Graph-Traversierungsfähigkeiten. – Sergio

Antwort

4

Soweit ich weiß, werden Neo4J-Datenspeicher und Lucene-Indizes immer in Dateien geschrieben. Unter Linux könnten Sie zumindest ein Dateisystem einrichten, das die Dateien im Speicher ablegt. auch

Siehe:

+0

wir planen, eine In-Memory-Implementierung von Neo4j, aber zuerst nach 1,0, einfach keine Bandbreite jetzt tun :( Ich bin mit 1.8 und sehe nicht überall in der Dokumentation in Speicherunterstützung. – chethan

+0

Yep, ich denke, dass niemand diese Bandbreite gefunden hat ;-) – DNA

+2

Sie könnten auch ImpermanentGraphDatabase testen? https://github.com/neo4j/community/blob/master/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java –

2

Wie viele Änderungen haben Sie Gruppe in jeder Transaktion? Sie sollten versuchen, bis zu tausende von Änderungen in jeder Transaktion zu gruppieren, da das Übertragen einer Transaktion das logische Protokoll auf die Festplatte zwingt.

in Ihrem Fall jedoch könnten Sie stattdessen Ihre Transaktionen mit beginnen:

 
db.tx().unforced().begin(); 

Statt:

 
db.beginTx(); 

dem diese Transaktion nicht warten, bis die logische Protokoll macht auf die Festplatte und macht zu zwingen kleine Transaktionen viel schneller, aber ein Stromausfall kann dazu führen, dass Sie die letzten paar Sekunden Daten verlieren.

Die tx() - Methode sitzt auf GraphDatabaseAPI, die beispielsweise EmbeddedGraphDatabase implementiert.

+0

Ich wechselte jetzt zum Batch-Inserter, leichte Verbesserung aber nicht viel. Also keine Transaktionen, über die man sich Sorgen machen muss. – chethan

Verwandte Themen