【问题标题】:How to rollback gremlin transaction using gremlinpython?如何使用 gremlinpython 回滚 gremlin 事务?
【发布时间】:2020-06-10 12:27:05
【问题描述】:

我是 gremlin 的新手,我正在尝试使用 python 库 gremlinpython 连接到 Janus Graph 并且需要知道是否可以回滚事务。

我发现单次遍历等同于单次事务(tinkerPop docs),遍历是在连接到gremlin服务器后创建的: g = traversal().withRemote(...) 并且所有带有 g 的操作都在一个事务中执行。

但我无法找到如果任何操作发生错误会发生什么。 是否可以回滚使用 g 进行的所有操作? gremlin 服务器允许像 g.tx().rollback()g.tx().commit() 那样做一些事情 - 回滚或批准事务,但是否可以使用 gremlinpython 来做到这一点?

【问题讨论】:

    标签: transactions gremlin tinkerpop janusgraph gremlinpython


    【解决方案1】:

    如果发生错误,Gremlin Server 将自动为您回滚事务。如果成功,它将自动为您提交。 “回滚”或“提交”的语义取决于图数据库(即,即使面对回滚,某些图也可能提交部分事务),在 JanusGraph 的情况下,将进一步依赖于底层存储引擎(例如 Cassandra、Hbase、 ETC)。

    【讨论】:

    • 谢谢!并且可以肯定的是:如果我进行遍历,然后使用此遍历创建 2 个顶点,并且第二次创建失败,那么这两个顶点都不会在 JanusGraph 中创建?我正在使用带有 Cassandra 后端的 JanusGraph
    • 我认为你不应该对 cassandra 做出这样的假设——它没有强酸保证。 docs.janusgraph.org/basics/transactions
    • 如果某次 JanusGraph 遍历操作失败,您能推荐一下怎么办吗?我需要在失败后自动恢复:从导致失败的最后一步开始或撤消失败前完成的所有步骤
    • 一种可能的解决方案是构建您的应用程序,以便所有突变都是幂等的,然后如果您遇到失败,您只需重试相同的遍历,直到它成功。
    猜你喜欢
    • 1970-01-01
    • 2021-03-20
    • 2015-12-03
    • 1970-01-01
    • 2021-03-07
    • 2010-11-07
    • 1970-01-01
    • 2010-10-04
    • 2021-10-17
    相关资源
    最近更新 更多