ArangoDB避坑

2022-04-08 00:00:00 文件 算法 节点 导入 可视化


近因为项目需要,不得不上手ArangoDB来做一些图谱类的构建工作,总的来说,ArangoDB的图构建入门非常的简单,除了AQL的语法和cyphter有一些差距之外,图的构建,节点和边的分开存放,以及仅支持从文件import的graph data等方面来看,基本上和neo4j没有太大区别。

用完之后感觉,还是neo4j比较香,对于我这样仅使用工具进行分析的人来说,速度不是慢到离谱的话其实都可以接受,不能接受的就是:

1、可视化功能差;

2、图算法组件严重不足

这是个人在选择graph database的时候看重的两点,一方面根据以往的经验,通过可视化的方式可以非常直观的了解不同类型节点的网络行为模式,从而人工分析和总结出一些特定的行为规律,然后再对症下药,使用适当的图算法,将这些抽象的行为规律进行量化,从而更好的挖掘出特定的节点。那么这方面就需要保证开箱即用的图算法的丰富性了。

ArangoDB相对于neo4j的缺点如上,可视化功能差强人意,图算法组件很缺,而优点,在我来看:

1、据说速度很快,因为neo4j我是在单机上使用的开源社区版,而arangodb则是在集群上使用的,所以速度上不是很好比较,只不过看了一些评估的方法说是arangodb更快balabala;

2、UI界面简单方便干净无比,neo4j 4.X版本引入了bloom和其它的一些组件之后,界面功能,要素太多,看起来略杂乱无章;

3、关于开源的问题,实际上arangodb中的smartgraph功能也是只有企业版能够提供的,只不过相对于neo4j来说,开源的arangodb支持分布式部署;


前置知识:

arangodb是一个多模式数据库,可以存放文档,key-value pair和图数据,它将三者的存储进行了统一使得通过一套api来进行操作。

和hadoop类似,arangodb生态圈也有很多的功能组键,


就分析而言,主要使用web interface进行可视化,使用shell进行命令行界面的图计算(这也是arangodb不方便的一点,图计算无法实时返回,必须先计算结果,保存,然后再可视化,略麻烦)

核心部分,collections永远存放数据,所有的节点、边、文本数据等均存在在collectios中,以json的形式保存:

[
{ "_key": "key1", ... },
{ "_key": "key2", ... },
...
]

大概是这样的。


坑1:

目前,arangodb的graph data的导入有两种方式:

1、类似于neo4j-import,我们需要在arangodbsh,即arangodb的shell界面执行arangoimp 来导入图数据,arangodb是支持csv、tsv和json格式的文件进行import的。

https://www.arangodb.com/docs/stable/programs-arangoimport-examples-csv.htmlwww.arangodb.com/docs/stable/programs-arangoimport-examples-csv.html

相关文章