是否可以通过 gremlin 服务器在 OrientDB 中打开事务?

Is it possible to open transactions in OrientDB through gremlin server?

我通过查看 orientdb-gremlin 库的 java 源代码注意到它似乎只是一个获取 gremlin 命令并转换为 orientdb SQL 查询的包装器。

我正在尝试在 javascript (NodeJs) 中将 gremlin 与 orientdb 一起使用,为此我正在使用 gremlin js 库。我可以很好地连接到 gremlin 服务器(我使用的是 OrientDB 3.0.14 附带的服务器)但是我还不能使交易工作,原因有两个: 1) gremlin js库在Graph对象中没有tx()方法。 2)我想:"I can add it there, but let me see first in gremlin console if OrientDB supports opening a transaction from gremlin server"。所以从 gremlin 控制台尝试似乎也不起作用(记住我 不想 想要使用 orientdb-gremlin 插件,因为在 java 脚本中我不会'无法使用它):

gremlin> :remote connect tinkerpop.server conf/remote-secure.yaml
gremlin> :> g.tx().open()
gremlin> :> g.tx().isOpen()

最后一条命令的结果是 false,因此没有打开事务。

有没有办法通过 gremlin 服务器跨越 OrientDB 3.0.14 事务?

假设 orientdb-gremlin 支持 g.tx()(实际上 graph.tx()g.tx() 调用 - 即 Graph 实例需要支持它)那么唯一的如果您将基于字符串的脚本提交到 Gremlin 服务器并通过 session 提交,那么您使用来自 javascript 的事务的方式就是这样。我认为这可能就是为什么您没有看到 isOpen() return true 的原因,因为您以无会话方式连接到服务器 - 您可以通过以下方式更改它:

:remote connect tinkerpop.server conf/remote.yaml session

已讨论 here

提交基于字符串的脚本并不是真正推荐的与 Gremlin 服务器交互的方式。在您的本机编程语言中使用 "write Gremlin" 而不是将 Gremlin 嵌入字符串中是一种更好的开发体验。如果可以的话,我会重新考虑这种方法,并尽量不依赖特定于图形的事务。它们使您的代码远 less portable