目的
JanusGraph作为一个分布式的图数据库,支持很多的数据库作为它的图数据存储介质。这里将介绍运用HBase作为JanusGraph的存储数据库。
优点
- 能够很好的和 Apache Hadoop 生态圈进行融合。
- 对强一致性有很好的支持。
- 通过机器的扩容能够使得存储得到线性的扩展。
- 严格的读写事务控制。
- 运行状态参数可以通过JMX导出。
- 都具备Apache 2 许可证。
配置
在配置文件conf/janusgraph-hbase-solr.properties中添加HBase的访问,配置参数如下:
storage.backend=hbase //使用HBase作为存储后端
storage.hostname=zookeeper-host1,zookeeper-host2,zookeeper-host3 //HBase的Zookeeper
storage.hbase.table=janusgraph//HBase存储JanusGraph元数据的表名
storage.hbase.ext.zookeeper.znode.parent=/hbase //HBase使用的Znode
storage.hbase.ext.hbase.zookeeper.property.clientPort=2181 //端口
HBase的查询是基于Rowkey,所以在条件查询这块是弱项,一旦Rowkey确定如果有新的查询就比较难。所以为了解决这个问题,JanusGraph引入了索引后端,下面我们介绍下如何配置Solr作为JanusGraph的索引后端。配置文件conf/janusgraph-hbase-solr.properties配置参数如下:
index.search.backend=solr //使用solr作为索引后端
index.search.solr.mode=cloud //solr使用集群模式
index.search.solr.zookeeper-url=zookeeper-host1:2181/solr,zookeeper-
host2:2181/solr,zookeeper-host3:2181/solr //HBase使用的Zookeeper
index.search.solr.configset=janusgraph //Solr使用HBase的元数据表名
工作原理
JanusGraph源自Apache TinkerPop,支持Gremlin图遍历语言,例如下面的这个Gremlin语言:
/**
*查找Alice朋友的朋友名称列表
*/
g.V().has("name", "Alice").out("knows").out("knows").values("name")