如何在我的程序中创建Janusgraph实例来访问自定义图形

时间:2017-12-13 12:29:47

标签: janusgraph

JanusGraph:我使用ConfiguredGraphFactory创建了一个自定义图形,并且能够使用gremlin控制台访问该图形。如何从Scala代码访问此图表?

目前我正在运行远程gremlin服务器,并从我的代码连接到此远程服务器,以在我的自定义图形上执行事务处理。我想知道是否有任何方法可以在我的程序中创建janusgraph实例并访问图形而不是通过远程服务器。

Janus Graph版本:0.2.0

1 个答案:

答案 0 :(得分:3)

目前,在TinkerPop兼容系统中,您无法实例化作用于远程图形引用的本地图形引用。但是,您可以使用withRemote来实例化由远程图遍历引用支持的本地图遍历对象:

gremlin> cluster = Cluster.open('conf/remote-objects.yaml')
==>localhost/127.0.0.1:8182
gremlin> graph = EmptyGraph.instance()
==>emptygraph[empty]
gremlin> g = graph.traversal().withRemote(DriverRemoteConnection.using(cluster, "g"))
==>graphtraversalsource[emptygraph[empty], standard]
gremlin> g.V().valueMap(true)
==>[name:[marko],id:1,label:person,age:[29]]
==>[name:[vadas],id:2,label:person,age:[27]]
==>[name:[lop],id:3,label:software,lang:[java]]
==>[name:[josh],id:4,label:person,age:[32]]
==>[name:[ripple],id:5,label:software,lang:[java]]
==>[name:[peter],id:6,label:person,age:[35]]
==>[name:[matthias],id:13,label:vertex]
gremlin> g.close()
gremlin> cluster.close()

但是,由于您使用的是ConfiguredGraphFactory,我将假设您的图表是动态创建的。这意味着您的图形和遍历对象不会绑定到远程服务器上的任何变量名称,因为这些绑定传统上是在定义gremlin-server.yaml graphs {}对象的图形实例化期间形成的。如上所示,使用withRemote的唯一方法是提供绑定到远程服务器上的图遍历的变量的名称。 JanusGraph当前不支持动态更新服务器的全局绑定,但是一旦完成,您就可以使用withRemote方法获取对远程遍历对象的本地引用。如果需要使用绑定到远程图形引用的本地图形对象,则需要使用TinkerPop社区来启用此类功能。有关此问题的详细信息,请参阅this TinkerPop Jira

另一种解决方案是删除远程JanusGraph服务器的图层。如果您希望在本地运行图形处理,那么您可能根本不需要远程JanusGraph服务器。然后,您可以使用JanusGraphFactory实例化图形引用,并对直接与后端数据存储区直接对话的本地图形引用执行查询。

最后,假设您配置了远程JanusGraph服务器和后端数据存储(即您知道远程JanusGraph服务器如何配置为与后端数据存储区通信 - 这将是保存在ConfigurationManagementGraph上的配置),您可以离开单独使用远程JanusGraph服务器,并使用JanusGraphFactory打开一个属性文件来实例化本地图形引用,该文件具有与ConfigurationManagementGraph定义的图形相同的配置。