本文章的内容分为几个部分
-
我是因为什么场景需要使用HugeGraph
-
怎么安装HugeGraph,中途遇到了哪些问题,怎么解决?
-
安装后相关进一步使用的方法
-
后续可拓展的使用场景
我的场景
在系统数据线的建设过程中,通过对现状系统间数据交换的调研,调研方式采用Excel的形式让各个系统填报,获得了所在系统信息,从哪个上游系统获得了什么数据这三个要素。进过三个要素的分析,确认在没有数据交换平台的前提下,会形成一个网状结构,需要进行解耦。对于分析人员来说,需要能快速的查到,系统间数据交互的关系。
虽然调研结果是Excel,我们可以很方便的将数据导入关系型数据库中进行查看,但未解耦前的数据线是一个网状结构,关系型数据库在数据查询的时候就需要对表多次进行关联,很自然的我们会想到利用图数据库对信息进行保存和查询。该数据库需要能将关系型数据库或Excel里的数据加载后进行可视化的展现。
安装HugeGraph
通过访问HugeGraph的git仓库官方文档,来查看具体的操作:
https://github.com/hugegraph/hugegraph-doc/blob/master/SUMMARY.md
访问 Install HugeGraph-Server 来查看操作步骤
访问GitHub速度太慢
由于众所周知的原因,浏览器直接打开Github页面访问速度很慢,我们在查看可以参考帖子修改DNS信息后打开速度就变快了,可以流畅的查看官方文档了。
http://www.mamicode.com/info-detail-2926030.html
尝试使用一键部署
用wget的方式去下载tar包,发现速度特别的慢,用wget -b 将任务挂到后台以后,过了一个晚上,白天起来看,发现任务还是断掉了,无法下载下来。
尝试使用下载tar包部署
无论用本地电脑的浏览器,还是在服务器上,都无法把tar包下载下来,实在是太慢了,而且过段时间就会失败
最终使用源码编译安装
由于网络原因,使用无法直接获得安装包,只好采用源码编译,因为码云上有同步对应的Git仓库,因此可以从码云中获取对应的代码。
https://gitee.com/mirrors/hugegraph?_from=gitee_search
通过Git将代码clone到本地,使用ide工具进行打包,我使用的是社区版的idea
打包时遇到错误:
Cannot run program "bash": CreateProcess error=2, 系统找不到指定的文件。 ->
查看了target目录,发现已经编译完成了代码,最后在打包的时候,因为需要执行生成的dist.sh命令,因为操作系统是windows 的,没有bash来执行shell。目前我的思路是想说,电脑因为安装了git的话,不是有gitbash吗?能否让idea 在gitbash中执行打包动作,那应该就能解决这个问题了。
参考了这个帖子 ,进行了配置,将idea的Terminal转换成了gitbash
此时发现在idea点击maven工具的package按钮,还是无法打包报一样的错,此时感觉在去研究idea的maven工具的机制比较花时间,直接在gitbash里手工执行脚本吧。
直接在gitbash中执行
sh dist.sh 报错: tar (child): Cannot connect to D: resolve failed
查看一下dist.sh,发现里面的打包路径,位于D盘,而D:会在shell中会被识别为remote path,可以修改dist.sh的命令增加--force-local 来处理,或者手工把路径改成“/d/” 这种linux的文件路径。
改完以后手工执行dist.sh就可以打包成功了。
接下去参照官方手册即可成功完成安装。
本地maven环境变量的配置参考帖子
https://www.cnblogs.com/liuhongfeng/p/5057827.html
如果在部署中产生了异常,可能是由于配置文件是dos格式的,我们可以在linux上安装dos2unix来对文件进行转换就可以正常启动了。
怎么进行使用
通过hugegraph-loader来完成数据的装载。我采用的方式是将Excel的数据通过客户端导入mysql后,使用hugegraph-load将mysql的数据导入到hugegraph里。具体的配置信息可以参考loader里面的样例文件,文件路径在assembly\static\example\mysql 里面。
要特别注意的是:mysql建表的时候最好与图的定义是一致的,否则在导入的时候,可能会遇到许多属性不一致的错误。
数据导入成功以后,我们就可以通过hugegraph-studio来进行可视化的展示了。展示的效果参考图片
点和边上都可以保存许多属性信息的,这边不太方便进行展示。
studio的查询语法,我们可以通过下面这个帖子来进行比较全面的学习
深入学习图数据库语言Gremlin 系列文章链接汇总-Jermy Li
后续可拓展的使用场景