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 实现(我想你正在使用这个)支持线程事务(即在 Titan 中使用newTransaction()或在 TinkerPop 模型下创建的那些graph.tx().createThreadedTx())。如果您打算在同一个事务上运行多个线程,则只需要线程事务。

如果您不需要(在大多数标准用例中不需要),那么事务只是自动的并绑定到当前线程。换句话说,只要您调用读取或写入图形的方法,该线程上的事务就会“打开”,而一旦您调用graph.tx().commit()graph.tx().rollback()该线程上的事务就会关闭。

这是否意味着获得不同事务的唯一方法是在不同线程的范围内打开它们?

是的 - 如果您希望同一个线程有两个单独的打开事务,我想您必须在两个单独的线程中启动它们。

于 2016-08-16T13:34:20.347 回答