【问题标题】:Is it possible to open transactions in OrientDB through gremlin server?是否可以通过 gremlin 服务器在 OrientDB 中打开事务?
【发布时间】:2019-02-12 09:09:02
【问题描述】:

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

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

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】:

    假设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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 2017-02-05
      • 2011-08-22
      • 1970-01-01
      相关资源
      最近更新 更多