如何在我的程序中创建 Janusgraph 实例以访问自定义图形
How to create a Janusgraph instance within my program to access the custom graph
JanusGraph:我使用 ConfiguredGraphFactory 创建了一个自定义图形,并且能够使用 gremlin 控制台访问该图形。我如何从我的 Scala 代码访问这个图表?
目前我是 运行 一个远程 gremlin 服务器,并从我的代码连接到这个远程服务器以在我的自定义图表上执行交易。我想知道是否有任何方法可以在我的程序中创建一个 janusgraph 实例并访问该图而不是通过远程服务器。
Janus 图版本:0.2.0
目前,在 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 图形 {} 对象。正如您在上面看到的,使用 withRemote
的唯一方法是提供绑定到远程服务器上的图形遍历的变量的名称。 JanusGraph 目前不支持动态更新服务器的全局绑定,但是一旦支持,您将能够使用 withRemote
方法获取对远程遍历对象的本地引用。如果您需要使用绑定到远程图形引用的本地图形对象,则需要与 TinkerPop 社区合作以启用此类功能。有关此事的更多信息,请参阅this TinkerPop Jira。
另一种解决方案是删除远程 JanusGraph 服务器层。如果您希望 运行 在本地处理图形,那么您可能根本不需要远程 JanusGraph 服务器。然后,您可以使用 JanusGraphFactory
实例化图形引用,并对直接与后端数据存储对话的本地图形引用执行查询。
最后,假设您配置了远程 JanusGraph 服务器和后端数据存储(即您知道如何配置远程 JanusGraph 服务器以与后端数据存储通信——这将是保存在您的 ConfigurationManagementGraph 上的配置),您可以单独使用远程 JanusGraph 服务器,并通过使用 JanusGraphFactory 打开一个属性文件来实例化本地图形引用,该属性文件的配置与 ConfigurationManagementGraph 定义的图形的配置相同。
JanusGraph:我使用 ConfiguredGraphFactory 创建了一个自定义图形,并且能够使用 gremlin 控制台访问该图形。我如何从我的 Scala 代码访问这个图表?
目前我是 运行 一个远程 gremlin 服务器,并从我的代码连接到这个远程服务器以在我的自定义图表上执行交易。我想知道是否有任何方法可以在我的程序中创建一个 janusgraph 实例并访问该图而不是通过远程服务器。
Janus 图版本:0.2.0
目前,在 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 图形 {} 对象。正如您在上面看到的,使用 withRemote
的唯一方法是提供绑定到远程服务器上的图形遍历的变量的名称。 JanusGraph 目前不支持动态更新服务器的全局绑定,但是一旦支持,您将能够使用 withRemote
方法获取对远程遍历对象的本地引用。如果您需要使用绑定到远程图形引用的本地图形对象,则需要与 TinkerPop 社区合作以启用此类功能。有关此事的更多信息,请参阅this TinkerPop Jira。
另一种解决方案是删除远程 JanusGraph 服务器层。如果您希望 运行 在本地处理图形,那么您可能根本不需要远程 JanusGraph 服务器。然后,您可以使用 JanusGraphFactory
实例化图形引用,并对直接与后端数据存储对话的本地图形引用执行查询。
最后,假设您配置了远程 JanusGraph 服务器和后端数据存储(即您知道如何配置远程 JanusGraph 服务器以与后端数据存储通信——这将是保存在您的 ConfigurationManagementGraph 上的配置),您可以单独使用远程 JanusGraph 服务器,并通过使用 JanusGraphFactory 打开一个属性文件来实例化本地图形引用,该属性文件的配置与 ConfigurationManagementGraph 定义的图形的配置相同。