最近在搞好友推荐方便的工做,选择了图数据的方法,使用并学习了HugeGraph,再次记录一下。html
HugeGraph是百度在2018年中旬开源的一款图数据库(Graph Database)系统,能够存储海量的顶点(Vertex)和边(Edge)。实现了Apache ThinkerPop 3[^1]框架,支持Gremlin图查询语言[^2]。HugeGraph支持多用户并行操做,用户可输入Gremlin查询语句,并及时获得图查询结果。也能够再用户程序中调用hugeGraph API进行图分析或查询。java
HugeGraph支持在线及离线环境下的图操做,支持批量导入数据,支持高效的负责关联关系分析,而且可以与大数据平台无缝集成。git
HugeGraph具有以下特色:github
**总结:**部署HugeGraph须要HugeGraph-Server,在网页上操做图须要HugeGraph-Studio,在java项目中操做图须要HugeGraph-Client,其余三个视状况须要的时候再部署使用。算法
依赖:sql
JDK1.8shell
使用使用的是RocksDB存储则须要GCC >= 4.3.0 ,下面的步骤假设使用RocksDB做为存储数据库
步骤1:后端
# 下载tar包 wget https://github.com/hugegraph/hugegraph/releases/download/v${version}/hugegraph-${version}.tar.gz tar -zxvf hugegraph-${version}.tar.gz
步骤2:浏览器
修改 hugegraph.properties
backend=rocksdb serializer=binary rocksdb.data_path=. rocksdb.wal_path=.
步骤3:
初始化数据库(仅第一次启动时须要)
cd hugegraph-${version} bin/init-store.sh
步骤4:
启动server
bin/start-hugegraph.sh Starting HugeGraphServer... Connecting to HugeGraphServer (http://127.0.0.1:8080/graphs)....OK
步骤5:
查看服务状态:
jps 6475 HugeGraphServer # curl请求restuflAPI,结果返回200,表明server启动正常 echo `curl -o /dev/null -s -w %{http_code} "http://localhost:8080/graphs/hugegraph/graph/vertices"`
步骤6:
# 中止server $cd hugegraph-${version} $bin/stop-hugegraph.sh
步骤1:
# 下载tar包并解压 wget https://github.com/hugegraph/hugegraph-studio/releases/download/v${version}/hugegraph-studio-${version}.tar.gz tar zxvf hugegraph-studio-${version}.tar.gz
步骤2:
修改配置文件hugegraph-studio.properties
studio.server.host
的值localhost
修改为机器名或 IP,这是 HugeGraphStudio 对外提供服务的host
,若是只须要本地访问则保持不变便可;studio.server.port
的值8088
修改为想要的端口,这是 HugeGraphStudio 对外提供服务的port
;graph.server.host
的值localhost
修改为 HugeGraphServer 的host
,HugeGraphStudio 经过此项和graph.server.port
与 HugeGraphServer 创建链接;graph.server.port
的值8080
修改为 HugeGraphServer 的port
,HugeGraphStudio 经过graph.server.host
和此项与 HugeGraphServer 创建链接;graph.name
的值hugegraph
修改为要链接的 HugeGraphServer 的图名,目前只容许链接一个图。# 启动HugeGraph-Studio $ cd hugegraph-studio-${version} $ bin/hugegraph-studio.sh
步骤3:
浏览器打开:http://localhost:8088便可访问。
官网给了一个性能测试的报告:https://hugegraph.github.io/hugegraph-doc/performance/hugegraph-benchmark-0.5.6.html
总结起来就是:
当时选择HugeGraph的缘由一是需求须要导大量的数据,涉及大约十几亿的插入,因此须要找一个插入性能高的,而且好友关系变更的时候也须要异步更新图关系。而是HugeGraph虽然是新秀,可是中文官方文档很简介清楚,利于学习使用。
参考:
[^1]: Apache ThinkerPop 3是图形数据库(OLTP)和图形分析系统(OLAP)的图形计算框架。 [^2]: Gremlin是Apache ThinkerPop框架下的图遍历语言,Gremlin是一种函数式数据流语言,可使用户使用简洁的方式表述复杂的属性图的遍历或查询。