我将TinkerGraph
用于Java中的集成测试(扩展的单元测试)。在此实现中,Edge ids
作为整数序列生成。我想更改它,以便将它们生成为随机UUID。这样做的原因是使测试设置的行为更接近于生产图数据库。我可以在Tinkerpop3
中执行此操作吗?
我发现Tinkerpop /蓝图(https://github.com/tinkerpop/blueprints/wiki/id-implementation)中有一个IdGraph.IdFactory
,它似乎可以满足我的需求。但是据我了解,Tinkerpop3不可用。
答案 0 :(得分:1)
这似乎有可能,但需要一些工作。 Vertex
中的Edge Ids
和TinkerGraph
使用here完成的IDManagers
确定。
您可以看到,这是通过一个配置值决定的,该值最终使用反射来构造IDManager
。
因此,您必须执行以下操作:
通过实现interface来创建自己的IDManager
,您可以使用default manager作为指导。例如:
public enum DefaultIdManager implements IdManager {
...
ANY {
@Override
public Long getNextId(final TinkerGraph graph) {
return unique random number
}
}
...
}
然后,您必须使用指定的新管理器来创建配置,并使用该管理器来创建修补程序:
BaseConfiguration config = new BaseConfiguration();
config.addProperty(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, "your.package.structure.YourIdManager.ANY");
TinkerGraph.open(config);
我想知道是否有更简单的方法,但我认为这会起作用。
旁注:
检查生产图形数据库是否提供内存层可能会更容易。我知道有一些图形数据库,使用它而不是TinkerGraph
可能会更好。我相信TinkerGraph
实际上仅用于电镀。