Gremlin:如果发生异常,则回滚查询

时间:2019-05-03 08:29:29

标签: gremlin amazon-neptune

我正在尝试提交类似批处理的操作,以便在同一查询中创建多个顶点和边。

g.addV('os').property('name', 'linux').as('linux').
  addV('os').property('name', 'windows').as('windows').
  addV('os').property('name', 'mac').as('mac').
  addE('competitor').from('linux').to('UNEXISTING OS').      # fail here
  addE('competitor').from('linux').to('windows').
  addE('competitor').from('windows').to('mac').
  addE('competitor').from('linux').to('mac').
  iterate()

查询被构造为有意失败,但是创建失败行之前的所有顶点。
是否有可能为整个查询实现某种交易?因此,如果一个子查询失败,则应回滚先前执行的子查询。

谢谢!

2 个答案:

答案 0 :(得分:2)

无法使用TinkerGraph在Gremlin控制台中执行查询, 根据TinkerPop documentation,不支持内置TinkerGraph对象的事务。

但是,正如cygri所指出的那样,AWS Neptune提供了对事务(see here)的支持,该事务可以以OP的原始查询形式执行,也可以通过用分号(;)或换行符分隔查询来执行(\ n)

g.addV('os').property('name', 'linux').next();
g.addV('os').property('name', 'windows').next();
g.addE('competitor').from('1101').to('1102')

答案 1 :(得分:0)

您也可以使用Gremlin Sessions;创建会话连接,如果发生错误,它将回滚查询。