Database Reference
In-Depth Information
können sich dabei von Version zu Version ändern. Wir verwenden Gremlin
1.3, das Blueprints 1.0 nutzt. Wenn Sie bei einer der beiden eine andere Ver-
sion nutzen, finden Sie die Besonderheiten in den Blueprint API-Javadocs.
Genau wie bei PostgreSQL werden einfache einzeilige Funktionen automa-
tisch in eine implizite Transaktion gepackt. Ummehrzeilige Transaktionen zu
demonstrieren, müssen wir den automatischen Transaktionsmodus des Gra-
phen-Objekts deaktivieren. Damit lassen wir Neo4j wissen, dass wir Trans-
aktionen manuell verarbeiten wollen. Sie können den Transaktionsmodus
über die setTransactionMode -Funktion festlegen.
gremlin> g.setTransactionMode(TransactionalGraph.Mode.MANUAL)
Wir können eine Transaktion für ein Graphen-Objekt mit startTransacti-
on und stopTransaction(conclusion) beginnen und beenden. Wenn Sie die
Transaktion anhalten, müssen Sie auch angeben, ob die Transaktion erfolg-
reich war. Wenn nicht, kann Neo4j alle Befehle seit dem Start zurücknehmen
(Rollback). Sie sollten die Transaktion in einen try/catch -Block packen, um
sicherzustellen, dass jede Ausnahme einen Rollback anstößt.
g.startTransaction()
try {
// Mehrere Schritte ausführen...
g.stopTransaction(TransactionalGraph.Conclusion.SUCCESS)
} catch(e) {
g.stopTransaction(TransactionalGraph.Conclusion.FAILURE)
}
Wenn Sie außerhalb der Grenzen von Gremlin und direkt mit der Neo4j-
EmbeddedGraphDatabase arbeiten wollen, können Sie die Java API-Syntax für
Transaktionen verwenden. Möglicherweise müssen Sie diesen Stil verwen-
den, wenn Sie Java-Code entwickeln oder eine Sprache nutzen, die hinter
den Kulissen Java ist (z. B. JRuby).
r = g.getRawGraph()
tx = r.beginTx()
try {
// Mehrere Schritte ausführen...
tx.success()
} finally {
tx.finish()
}
Beide Varianten sind vollständig ACID-konform. Selbst bei Systemfehlern
wird sichergestellt, dass alle Schreiboperationen zurückgenommen werden,
wenn der Server wieder gestartet wird. Wenn Sie Transaktionen nicht selbst
Search WWH ::




Custom Search