如何在JanusGraph中解耦多个图形实例
我试图在Janusgraph中创建多个graph实例,但它们似乎彼此都有相同的引用,因此对一个实例执行的任何操作都会影响其他实例(请参见下面的示例)。我想将这些图设置为单独的实例,彼此不同,但在下面的步骤中,我有些犹豫 向JanusGraph添加新图形所采取的步骤 目标:有两个名为如何在JanusGraph中解耦多个图形实例,graph,gremlin,tinkerpop3,janusgraph,gremlin-server,Graph,Gremlin,Tinkerpop3,Janusgraph,Gremlin Server,我试图在Janusgraph中创建多个graph实例,但它们似乎彼此都有相同的引用,因此对一个实例执行的任何操作都会影响其他实例(请参见下面的示例)。我想将这些图设置为单独的实例,彼此不同,但在下面的步骤中,我有些犹豫 向JanusGraph添加新图形所采取的步骤 目标:有两个名为graph1,graph2的图,遍历对象分别名为g1,g2,它们彼此不同 创建名为graph1.properties,graph2.properties的属性文件。包含内容(对于Cassandra后端): ^这就是我
graph1
,graph2
的图,遍历对象分别名为g1
,g2
,它们彼此不同
graph1.properties
,graph2.properties
的属性文件。包含内容(对于Cassandra后端):
graph1。属性
和graph2。属性
具有相同的内容。。。但我不确定要改变什么
gremlin server.yaml
文件,该文件映射到新创建的graph1.properties
和graph2.properties
文件
graphs: {
graph1: conf/gremlin-server/graph1.properties,
graph2: conf/gremlin-server/graph2.properties
}
空示例中。groovy
globals << [g1 : graph1.traversal(), g2: graph2.traversal()]
globals配置的本地主机/127.0.0.1:8182-[b7696535-97d9-4b59-b30f-f83707492057]
小精灵>:远程控制台
==>所有脚本现在将被发送到Gremlin服务器-[localhost/127.0.0.1:8182]-[b7696535-97d9-4b59-b30f-f83707492057]-键入“:远程控制台”返回本地模式
小精灵>g1
==>graphtraversalsource[standardjanusgraph[cql:[127.0.0.1]],标准]
gremlin>g1.V().count()
==>100
gremlin>g2.V().count()
==>100
gremlin>g1.addV('item').property('id','123'))
==>v[327684312]
gremlin>g1.tx().commit()
==>空
gremlin>g1.V().count()
==>101
gremlin>g2.V().count()
==>101由于您使用Cassandra存储数据,为了将两个图形完全分开,您需要为每个图形使用不同的Cassandra键空间,因为这是JanusGraph使用的存储单元
如图所示:
- 键空间:用于存储JanusGraph图形的键空间的名称。允许多个JanusGraph图形在同一Cassandra集群中共存
查看,我们可以看到有关此配置参数的更多信息:
- 名称:
storage.cql.keyspace
- description:“JanusGraph键空间的名称。如果它不存在,将创建它。”
- 数据类型:
String
- 默认值:
janusgraph
- 易变性:
LOCAL
因此,通过在配置中不指定此参数,两个图形都存储在默认的janusgraph
keyspace中,这会导致它们相互冲突
由于您使用的是storage.backend=cql
,要分离这两个图形,只需提供一个显式参数storage.cql.keyspace
,对于要彼此分离的每个图形,该参数都是不同的。请查看我的更新答案;由于您使用的是storage.backend=cql
,因此需要在配置中设置storage.cql.keyspace
,而不是storage.cassandra.keyspace
。
globals << [g1 : graph1.traversal(), g2: graph2.traversal()]
==>Configured localhost/127.0.0.1:8182-[b7696535-97d9-4b59-b30f-f83707492057]
gremlin> :remote console
==>All scripts will now be sent to Gremlin Server - [localhost/127.0.0.1:8182]-[b7696535-97d9-4b59-b30f-f83707492057] - type ':remote console' to return to local mode
gremlin> g1
==>graphtraversalsource[standardjanusgraph[cql:[127.0.0.1]], standard]
gremlin> g1.V().count()
==>100
gremlin> g2.V().count()
==>100
gremlin> g1.addV('item').property('id', '123')
==>v[327684312]
gremlin> g1.tx().commit()
==>null
gremlin> g1.V().count()
==>101
gremlin> g2.V().count()
==>101 <-- g2 should have remained at 100