0

TinkerGraph用于 Java 中的集成测试(扩展单元测试)。在此实现Edge ids中,生成为整数序列。我想更改它,以便将它们生成为随机 UUID。这样做的原因是为了让我的测试设置更接近我的生产图形数据库。我可以这样做Tinkerpop3吗?如果可以,怎么做?

我发现在 Tinkerpop/blueprints ( https://github.com/tinkerpop/blueprints/wiki/id-implementation ) 中存在一个IdGraph.IdFactory似乎可以提供我需要的东西。但是,据我了解,这不适用于 Tinkerpop3。

4

1 回答 1

1

这看起来是可能的,但需要一些工作。VertexEdge IdsinTinkerGraph是使用IDManagerswhich is done here确定的。

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

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

  1. IDManager通过实现您可以使用默认管理器作为指导的接口来创建您自己的。例如:

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

    BaseConfiguration config = new BaseConfiguration();
    config.addProperty(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, "your.package.structure.YourIdManager.ANY");
    TinkerGraph.open(config);
    

我很想知道是否有更简单的方法,但我认为这会奏效。

边注:

检查您的生产图形数据库是否提供内存层可能更容易。我知道一些图形数据库会这样做并且使用它而不是TinkerGraph可能会更好。TinkerGraph我相信真的只是为了电镀。

于 2018-11-28T09:33:34.757 回答