Tinkerpop3 自定义边缘 ID 生成器

Tinkerpop3 custom edge id generator

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

我发现 Tinkerpop/blueprints (https://github.com/tinkerpop/blueprints/wiki/id-implementation) 中有一个 IdGraph.IdFactory 似乎可以满足我的需要。但是据我了解,Tinkerpop3 不可用。

这看起来是可行的,但需要一些工作。 VertexEdge Ids in TinkerGraph 是使用 IDManagers 确定的 here.

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

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

  1. interface you can use the default manager 为准则,创建您自己的 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 我相信真的只是为了电镀。