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

时间:2019-02-12 09:09:03

标签: transactions orientdb gremlin tinkerpop3 gremlin-server

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

我正在尝试在 javascript(NodeJs)中将gremlin与orientdb一起使用,为此,我正在使用df3 = (data.groupby([data.index.day.rename('day'), s])['b'] .describe() .reset_index()) print (df3) day a count mean std min 25% 50% \ 0 12 1.4-0.6 1.0 0.267070 NaN 0.267070 0.267070 0.267070 1 12 1.6-0.8 2.0 0.770542 0.187616 0.637877 0.704210 0.770542 2 12 1.8-1.0 3.0 0.366001 0.058221 0.299172 0.346126 0.393081 75% max 0 0.267070 0.267070 1 0.836874 0.903206 2 0.399415 0.405750 js库。我可以很好地连接到gremlin服务器(我使用的是OrientDB 3.0.14附带的服务器),但是由于两个原因,我仍无法使事务正常运行: 1)gremlin js库在Graph对象中没有tx()方法。 2)我想:“我可以在其中添加它,但是让我首先在gremlin控制台中查看OrientDB是否支持从gremlin服务器打开事务” 。因此,从gremlin控制台尝试似乎也不起作用(请记住,我要使用gremlin插件,就像在javascript中一样,我将无法使用它):

orientdb-gremlin

最后一条命令的结果为gremlin> :remote connect tinkerpop.server conf/remote-secure.yaml gremlin> :> g.tx().open() gremlin> :> g.tx().isOpen() ,因此没有打开的事务。

是否可以通过gremlin服务器跨越OrientDB 3.0.14事务?

1 个答案:

答案 0 :(得分:1)

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

true

here中进行了讨论。

实际上,不建议使用基于字符串的脚本与Gremlin Server进行交互。只用您的本机编程语言“编写Gremlin”而不是将Gremlin嵌入字符串中,这是更好的开发经验。如果可以并且不依赖于特定于图形的事务,我将重新考虑这种方法。它们使您的代码远远less portable