全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

图数据库neo4j和spark下面的graphx有什么区别?

发布时间:2023-10-13 00:59:19
发布人:xqq

一、图数据库neo4j和spark下面的graphx有什么区别

neo4j是native graph database,也就是有自己的数据库存储。它的长处在于支持交互式查询,属于oltp系统,很多人说不支持分片存储使其无法应付海量数据,本人觉得恰恰相反,可以说neo4j的存储方式是教科书式的以空间换时间,每台服务器配备ssd磁盘阵列虽然贵,但是可以大幅减少分片存储的带宽占用和通信时间开销,保证oltp的效率。

neo4j很容易上手,特有的cypher查询语言以画草图的方式查询和建模数据,很直观。适当构建查询计划的情况下,neo4j的查询效率很高,能够迅速从整网中找出符合特定模式的子网,供随后分析之用。

此外,neo4j实现了tinkerpop接口,tinkerpop是刚刚毕业的一个阿帕奇项目,有望建立图数据库的一套标准用户接口。同样实现tinkerpop的还有titan,orient等主流图数据库。

再来看graphX。

graphX是spark的系统组件,存储是基于spark rdd的,有节点和边两种rdd。熟悉spark的朋友对rdd该不会陌生,spark通过缓存rdd的操作节省了大量计算和io开支,因此spark特别适合对海量数据进行运算,此理同样适用于graphX。因此,graphX自设计之初就是奔着图计算的目标去的,属于olap系统,而非oltp系统。

graphX有丰富的函数库,能完成很多经典图算法,如pagerank、三角计数、社群发现、最短路径计算等等。此外,图存储和计算的方式不禁让人想到神经网络算法,如果将隐层用节点rdd表示,隐层之间的边用边rdd表示,运用graphX的计算优势搭建起一套多层神经网络的想法很美妙,这应该就是MLlab相应算法模块的工作原理。

因此跟graphx相关的概念集中在图计算,而非图存储和查询领域。所以经常浏览db-engines的朋友们不难发现,图数据库列表里就没有graphx这一项。在比较图存储和图查询性能时,比较集合多是neo4j、orientdb、titan、arangodb等图数据库系统。而比较图计算时,比较集合多是graphlab、giraph、graphX。

简言之,图数据库系统和图计算系统不是一回事:前者是为了存储完整数据,并根据需求从中查询数据子集供分析展示之用;后者的任务是拿到一个图结构的数据集,从中计算一些有用的东西。

如果你有随时增长的海量数据,希望以图的方式存储这些数据,从而能在需要时顺利挖出一个子图来,那就要借助于图数据库,此时如果你有充足的资金,neo4j是不二之选,否则就要从db-engines里面第二名以后的一众数据库里挑选。进一步,如果你的需求不只停留在查询,还要依据查询结果计算出一些图的特征来,那么建议你将图数据库系统同图计算系统联合使用。

延伸阅读:

二、图数据库优点有什么

使用图(或者网)的方式来表达现实世界的关系很直接、自然,易于建模。比如某人喜欢看某电影,就可以建立一条边连接这个人和这部电影,这条边就叫做“喜欢”边,同时这个人还可以有其它边,比如“朋友”边、“同学”边等,同样这个电影也可以有其它边,比如“导演”边、“主演”边等,这样就构建了自然的关系网。图数据库可以很高效的插入大量数据。图数据库面向的应用领域数据量可能都比较大,比如知识图谱、社交关系、风控关系等,总数据量级别一般在亿或十亿以上,有的甚至达到百亿边。mysql不做分表分库的情况下插入百万数据基本就慢到不行,图数据库基本能胜任亿级以上的数据,比如neo4j、titan(janus)、hugegraph等图数据库,持续插入十亿级的数据基本还能保持在一个较高的速度。图数据库可以很高效的查询关联数据。传统关系型数据库不擅长做关联查询,特别是多层关联(比如查我的好友的好友有哪些人),因为一般来说都需要做表连接,表连接是一个很昂贵的操作,涉及到大量的IO操作及内存消耗。图数据库对关联查询一般都进行针对性的优化,比如存储模型上、数据结构、查询算法等,防止局部数据的查询引发全部数据的读取。
#it技术干货

相关文章

MySQL数据库备份方法有什么?

MySQL数据库备份方法有什么?

2023-10-13
MySQL数据表怎么优化查询?

MySQL数据表怎么优化查询?

2023-10-13
MySQL的自增ID用完了怎么办?

MySQL的自增ID用完了怎么办?

2023-10-13
oracle怎样快速删除大量的数据?

oracle怎样快速删除大量的数据?

2023-10-13

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取