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

问题描述 投票:0回答:1

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

我想在javascript(NodeJs)中使用带有orientdb的gremlin,为此我使用的是gremlin js库。我可以很好地连接到gremlin服务器(我使用的是OrientDB 3.0.14附带的服务器)但是我还不能使事务工作有两个原因:1)gremlin js库在Graph中没有tx()方法宾语。 2)我想:“我可以在那里添加它,但是如果OrientDB支持从gremlin服务器打开一个事务,那么让我先看看gremlin控制台”。所以从gremlin控制台尝试似乎也不起作用(记住我不想使用orientdb-gremlin插件,因为在javascript中我将无法使用它):

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

最后一个命令导致false,因此没有打开任何事务。

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

transactions orientdb gremlin tinkerpop3 gremlin-server
1个回答
1
投票

假设orientdb-gremlin支持g.tx()(真正的graph.tx(),由g.tx()调用 - 即Graph实例需要支持它),那么你使用javascript中的事务的唯一方法就是你将基于字符串的脚本提交给Gremlin Server并通过session这样做。我认为这可能是因为你没有看到isOpen()以无会话的方式连接到服务器时返回true - 您可以通过执行以下操作来改变它:

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

这是讨论here

提交基于字符串的脚本并不是与Gremlin Server交互的推荐方式。在本机编程语言中“编写Gremlin”而不是将Gremlin嵌入到字符串中是一种更好的开发体验。如果可以的话,我会重新考虑这种方法,并尽量不依赖特定于图表的交易。他们让你的代码远远less portable

© www.soinside.com 2019 - 2024. All rights reserved.