0

私はこのプラグインを使用して、tinkerpop 3.x を使用して orient DB とやり取りできるようにしています。

どうすればさまざまなトランザクションを作成できるのでしょうか?

TitanDB を使用すると、次のように簡単になります。

t1 = graph.newTransaction();
t2 = graph.newTransaction();
t3 = graph.newTransaction();

OrientDB-Gremlin で次のことを試しました。

t1 = graph.tx().createThreadedTx();
t2 = graph.tx().createThreadedTx();

次のエラーを受け取りました:

java.lang.UnsupportedOperationException: Graph does not support threaded transactions

これは、異なるトランザクションを取得する唯一の方法は、異なるスレッドのスコープ内でそれらを開くことであることを意味しますか?

4

1 に答える 1

1

OrientDB 実装 (これを使用していると思われます) がスレッド化されたトランザクション (つまりnewTransaction()、TinkerPop モデルを使用して、またはその下で Titan で作成されたもの) をサポートしているようには見えませんgraph.tx().createThreadedTx()。同じトランザクションで複数のスレッドを操作する場合にのみ、スレッド化されたトランザクションが必要です。

それが必要ない場合 (ほとんどの標準的な使用例では必要ありません)、トランザクションは単純に自動化され、現在のスレッドにバインドされます。つまり、グラフの読み取りまたは書き込みを行うメソッドを呼び出すとすぐに、そのスレッドのトランザクションが「開かれ」、呼び出すgraph.tx().commit()graph.tx().rollback()、そのスレッドのトランザクションが閉じられるとすぐに。

これは、異なるトランザクションを取得する唯一の方法は、異なるスレッドのスコープ内でそれらを開くことであることを意味しますか?

はい - 同じスレッドに 2 つの別個の開いているトランザクションを持たせたい場合は、それらを 2 つの別個のスレッドで開始する必要があると思います。

于 2016-08-16T13:34:20.347 に答える