Java Tinkerpop3自定义边缘id生成器

Java Tinkerpop3自定义边缘id生成器,java,tinkerpop3,tinkergraph,Java,Tinkerpop3,Tinkergraph,我使用TinkerGraph进行Java中的集成测试(扩展单元测试)。在此实现中,边ID作为整数序列生成。我想改变这一点,以便将它们生成为随机UUID。这样做的原因是为了使测试设置更接近生产图数据库。我可以在Tinkerpop3中执行此操作吗?如果可以,如何执行 我发现在Tinkerpop/blueprints()中存在一个IdGraph.IdFactory,它似乎可以提供我所需要的。但是据我所知,Tinkerpop3不提供此功能。这看起来是可能的,但需要一些工作顶点和边ID 您可以看到,这是通

我使用
TinkerGraph
进行Java中的集成测试(扩展单元测试)。在此实现中,
边ID
作为整数序列生成。我想改变这一点,以便将它们生成为随机UUID。这样做的原因是为了使测试设置更接近生产图数据库。我可以在
Tinkerpop3
中执行此操作吗?如果可以,如何执行


我发现在Tinkerpop/blueprints()中存在一个
IdGraph.IdFactory
,它似乎可以提供我所需要的。但是据我所知,Tinkerpop3不提供此功能。

这看起来是可能的,但需要一些工作<使用
IDManagers
确定
TinkerGraph
中的code>顶点和
边ID

您可以看到,这是通过一个配置值决定的,该配置值最终使用反射来构造
IDManager

因此,您必须执行以下操作:

  • 通过实现,创建您自己的
    IDManager
    ,您可以使用作为指导原则。例如:

    public enum DefaultIdManager implements IdManager {
        ...
        ANY {
            @Override
            public Long getNextId(final TinkerGraph graph) {
                return unique random number
            }
        }
        ...
    }
    
  • 然后,您必须使用指定的新管理器创建配置,并使用该管理器创建tinkergraph:

    BaseConfiguration config = new BaseConfiguration();
    config.addProperty(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, "your.package.structure.YourIdManager.ANY");
    TinkerGraph.open(config);
    
  • 我很想知道是否有一个更简单的方法,但我认为这将工作

    旁注:

    检查生产图数据库是否提供内存层可能更容易。我知道一些graph DB会这样做,使用它而不是
    TinkerGraph
    可能会更好<代码>TinkerGraph真的只适合在周围电镀