首页 > 解决方案 > 如何在 Gremlin Server 上以编程方式在运行时创建新的图形实例

问题描述

我有一个连接到 Gremlin 服务器的 Java 项目。我想在运行时创建 5 个 Neo4j 的新图形实例?请问如何在 Gremlin Server 上执行此操作?

另外,我听说过 Gremlin Server 中的会话和无会话状态,但并不真正理解这样做的目的?!有人可以谈谈这一点,但更重要的是,展示如何在 Gremlin Server 上的 Java 项目中使用会话状态和无会话状态?

提前谢谢了。

例如:

List<GraphTraversalSource> graphs;

for (int x= 0 ;  x < 5 ; x++) {
 graph = Neo4jGraph.open();
 g = graph.traversal(); 
 graphs.add(g);
}

标签: gremlingremlin-server

解决方案


简短的回答是 Gremlin Server 不允许以编程方式创建图表 - 在 Gremlin Server 启动之前预先配置图表。

更长的答案是 Gremlin Server 有点像 Gremlin Server Protocol 的参考实现,这意味着根据您使用的启用 TinkerPop 的图形数据库,您可能会得到不同的问题答案。例如,DS Graph 和 JanusGraph 都有动态图构建的选项。另一方面,Neo4j 和 TinkerGraph 使用 Gremlin Server 的原始参考实现,因此没有那种功能。

关于参考实现的最后一点导致了更长的答案。您可以提交一个脚本来创建类似Neo4jGraphor的图形,TinkerGraph但它不会将它们添加到 Gremlin Server 拥有的图形的全局列表中(您尝试在伪代码中使用 来模拟graphs.add(g))。这当然意味着您将无法Graph在以后的请求中访问那些新创建的实例........除非您使用会话. TinkerPop 同时具有无会话和基于会话的请求的原因是会话对服务器来说往往更昂贵,因为它们在请求之间维护更多状态,并将请求绑定到单个 Gremlin 服务器,而不是在集群中传播请求。TinkerPop 建议对几乎所有用例使用无会话,并为一些相当狭窄的用例(如工具 - 基于 Gremlin 的可视化 UI)保留会话请求。

可能有一些方法可以为您的目的扩展 Gremlin Server(JanusGraph 使用他们的 Gremlin Server 打包做到了),但这需要您了解代码本身。我可能会为您提供一些额外的指导,但 StackOverflow 可能不是这样做的正确位置。如果您想更详细地讨论该选项,请随时在gremlin-users 邮件列表上提问。


推荐阅读