【问题标题】:How to programmatically create a new graph instance at runtime on Gremlin Server如何在 Gremlin Server 上以编程方式在运行时创建新的图形实例
【发布时间】:2019-10-30 14:56:50
【问题描述】:

我有一个连接到 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);
}

【问题讨论】:

    标签: gremlin gremlin-server


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 2010-12-27
      • 2018-03-23
      • 2014-05-28
      相关资源
      最近更新 更多