mysql实现图的遍历_NoSQL完胜MySQL:大规模图形遍历实战

【IT168 专稿】本文作者Marko A.Rodriguez博士是一位图形系统顾问,其研究重点主要是图形/网络领域的理论及实践类问题。这篇文章以一次简单的图形遍历任务为基础,为大家并行展示MySQL与Neo4j在这方面的处理能力。

bf908a2ae1c25efc5e594dcf4169d845.png

本文所使用的数据集为一幅人工生成的统计图,该图形由一百万个顶点与四百万条边线构成。其角度分布汇总结果如以下对数坐标图所示。图形的全部顶点分为一千个顶点子集,具体排布情况见上图。

ba1655ec58772009d5961af0ffc135d1.png

1、载入图形

图形数据集被分别加载到MySQL与Neo4j当中。在MySQL方面,使用如下模式的单独列表加以处理。

CREATETABLEgraph (

outVINTNOTNULL,

inVINTNOTNULL);CREATEINDEXoutV_index USING BTREEONgraph (outV);CREATEINDEXinV_index USING BTREEONgraph (inV);

数据载入完成后,列表内容如下所示。第一行的内容意为:“顶点0与顶点1相连。”

mysql>SELECT*FROMgraph LIMIT10;+------+-----+|outV|inV|+------+-----+|0|1||0|2||0|6||0|7||0|8||0|9||0|10||0|12||0|19||0|25|+------+-----+10rowsinset(0.04sec)

这一拥有一百万个顶点的数据集同样被载入Neo4j之中。在Gremlin中,图形边界按以下方式描述。第一行内容意为:“顶点0与顶点992915相连。”

gremlin>g.E[1..10]==>e[183][0-related->992915]==>e[182][0-related->952836]==>e[181][0-related->910150]==>e[180][0-related->897901]==>e[179][0-related->871349]==>e[178][0-related->857804]==>e[177][0-related->798969]==>e[176][0-related->773168]==>e[175][0-related->725516]==>e[174][0-related->700292]

2、为缓存热身

在利用MySQL与Neo4j对图形数据结构进行遍历之前,两款数据库都应该进行一下“热身”运动。在MySQL方面,先运行“SELECT * FROM graph(选择所有图形内容)”指令,而且全部结果都经过了循环访问。而在Neo4j中,则对图形中的每个顶点进行循环访问并对每个顶点的延展边界加以检索。最后,将整个实验流程在MySQL与Neo4j中各运行两遍,并根据第二次得出的结果进行评估。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值