图数据库 — > Tinkerpop (一)
图数据库 — >Janusgraph 基础 (二)
图数据库 — > hugegraph (三)
图数据库 — > spark 和janusgraph组合(四)
图数据库 — > JanusGraph可视化之Gephi (五)
JanusGraph作为Titan的继承者,汲取了Titan和TinkerPop框架诸多的优点,成为了当前热门的图数据库领域的佼佼者,JanusGraph的一大特性是和其他组件的交互能力强,比如像存储的Hbase, full-text search的elasticsearch等,也可以很方便地和graphx等olap引擎交互。
在处理中,会创建并使用不同的图,就想sql中的table一样,Janusgraph这里使用的是不同的配置来管理不同的图。这里有两个组件能够分别对不同的图进行管理:ConfiguredGraphFactory和JanusGraphFactory。
我们在启动JanusGraph server时,需要对启动的yaml文件进行配置,才可以使用该组件
在gremlin-server.yaml文件中,增加:
graphManager: org.janusgraph.graphdb.management.JanusGraphManager
graphs: {
ConfigurationManagementGraph: conf/JanusGraph-configurationmanagement.properties
}
这里面的conf/JanusGraph-configurationmanagement.properties为
gremlin.graph=org.janusgraph.core.ConfiguredGraphFactory
storage.backend=cql
graph.graphname=ConfigurationManagementGraph
storage.hostname=127.0.0.1
配置好之后,启动server:./bin/janusgraph.sh start
打开 ./bin/gremlin.sh
终端
gremlin> map = new HashMap();
gremlin> map.put("storage.backend","cql"); map.put("storage.hostname", "127.0.0.1");
gremlin> ConfiguredGraphFactory.createTemplateConfiguration(new MapConfiguration(map));
==>null
gremlin> g2 = ConfiguredGraphFactory.create("graph2"); //使用配置创建了新图,新图的存储文件夹也同名(graph2)的建好
gremlin> g3 = ConfiguredGraphFactory.create("graph3");
查看所有的图
使用该组件之间使用其打开相应的配置文件,配置文件里对对于存储backend,index及图名做了相应设置:
graph = JanusGraphFactory.open('conf/janusgraph-cql.properties')
也可以直接在启动服务前配置yaml文件:
graphManager: org.janusgraph.graphdb.management.JanusGraphManager
graphs {
graph1: conf/graph1.properties,
graph2: conf/graph2.properties
}
通过下面命令获取所有的图信息:
JanusGraphFactory.getGraphNames()
他们的区别在于:
ConfiguredGraphFactory:
// ConfiguredGraphFactory
ConfiguredGraphFactory.create(“graphName”)
// JanusGraphFactory
graph = JanusGraphFactory.open('conf/janusgraph-cql.properties')
ConfigurationManagementGraph
ConfigurationManagementGraph是一个Singleton,允许你使用ConfiguredGraphFactory create/update/remove 图的配置。 请参阅上文有关配置服务以使用这些API。
注意:ConfiguredGraphFactory提供了一个通过ConfigurationManagementGraph来管理图配置的方法,因此你可以使用相应的ConfiguredGraphFactory静态方法,而不是对单例本身进行操作。 例如,你可以使用
ConfiguredGraphFactory.removeTemplateConfiguration()
而不是ConfiguredGraphFactory.getInstance().removeTemplateConfiguration()。
为方便起见,如果你的配置文件中指定了graph.graphname,但未配置后端存储的目录,tablename或keyspacename,则相关参数将自动设置为graph.graphname的值。 但是,如果你配置了其中一个参数,则优先使用该值。 如果你没有配置,则默认为配置项使用默认值。
一个特例是storage.root的配置项。 这是一个新的配置项,用于指定将用于需要本地存储目录访问的任何后端目录的根目录。 如果提供此参数,则还必须提供graph.graphname属性,这个绝对存储目录将是storage.root路径加上graph.graphname路径。
设置不同图的方式
map.put("graph.graphname", "graph1");
storage.cql.keyspace=janusgraph
map = new HashMap();
map.put("storage.backend", "berkeleyje");
map.put("storage.root", "/data/graphs");
ConfiguredGraphFactory.createTemplateConfiguration(new
MapConfiguration(map));
g1 = ConfiguredGraphFactory.create("graph1"); //storage directory === /data/graphs/graph1
g2 = ConfiguredGraphFactory.create("graph2"); //storage directory === /data/graphs/graph2
g3 = ConfiguredGraphFactory.create("graph3"); //storage directory === /data/graphs/graph3
docker run -d -p 7001:7001 -p 7199:7199 -p 9042:9042 -p 9160:9160 -v /var/lib/cassandra:/var/lib/cassandra -e CASSANDRA_START_RPC=true --name cass cassandra
graph = JanusGraphFactory.open('conf/janusgraph-cql.properties')
graphtraversalsource[standardjanusgraph[cql:[127.0.0.1]], standard]
https://github.com/JanusGraph/janusgraph/tree/master/janusgraph-examples
启动服务
$ bin/janusgraph.sh start
Forking Cassandra...
Running `nodetool statusthrift`.. OK (returned exit status 0 and printed string "running").
Forking Elasticsearch...
Connecting to Elasticsearch (127.0.0.1:9300)... OK (connected to 127.0.0.1:9300).
Forking Gremlin-Server...
Connecting to Gremlin-Server (127.0.0.1:8182)... OK (connected to 127.0.0.1:8182).
Run gremlin.sh to connect.
gremlin console连接
:remote connect tinkerpop.server conf/remote.yaml
:remote console
Ref:
1 JanusGraph ConfiguredGraphFactory
4. ConfiguredGraphFactory
5. git直连运行java
6. janusgraph server
7. janusgraph 文档
8. 如何新建一张JanusGraph图