hugegraph整合MySQL_关于图数据库HugeGraph的百万,千万,亿量级测试
1、Hugegraph测试硬件
1.1、本机硬件
本机测试hugeGraph版本:0.10.4
后置存储数据库:rocksdb,1TB的普通硬盘
1.2、测试服务器硬件
测试服务器hugegraph版本:0.9.2,服务器分配16G空间,16核
后置存储数据库cassandra:3.11.0,存储空间未限制,普通硬盘
2、基准测试
2.1、数据加载
加载功能:hugegraph自带的原生的导入工具,其schema定义其数据类型,索引和边标签属性,struct定义边。
加载大量数据时间和速度:主要是测试百万,千万,亿级别的加载速度。
2.2、查询性能
查询响应时间——针对于多度查询
查询响应时间——针对于遍历所有路径查询
查询响应时间——针对于短路径查询
3、测试报告
3.1、本机和测试flink写入速度
测试
写入速度
硬件情况
本地流程
前期数据量少大概4000条/分钟(数据量大概10多万)后期数据量大的写入未进行测试。
Intel® Core™ i5-9400 CPU @ 2.90GHz × 6,RocksDB后置数据库存储内存1TB
测试flink
前期数据量比较少大概写入2624条/分钟(3h38m-571988)
后期数据量多了大概写入1200/分钟(3d2h-5292999)
hugeGraph的16G,16核,Cassandra后置数据库存储内存未做限制
服务器上的写入速度小于本地写入速度原因:
1、服务器硬件
2、网络不稳定性
3.2、数据快速导入查询
3.2.1、百万级别导入
3.2.2、百万级别数据查询
点:150万
边:75万+新增边1万
查询多五度,点定义有六个属性值,边只有一个属性值(id)
耗时
查询
g.V()
g.E()
g.V().out()
g.V().outE()或g.V().inE()
g.V().drop()或g.E().drop()
次耗时
0.656S
0.315S
报错
报错
报错
次查询后均耗时
0.04S
0.04S
报错
报错
报错
原因
g.V()遍历只显示250条数据
g.E()遍历只显示250条数据
错误的请求,已超过大数值
遍历的大值不能超过80万
删除的大值不能超过1万
遍历所有点的g.V().out()报错:请求错误
遍历所有点的出边g.V().outE()或g.V().inE()报错:大值不能超过80W
删除所有点的数据g.V().drop()或g.E().drop()报错:大值不能超过1W
3.2.2.1、多度查询
时间
多度
一度
二度
三度
四度
五度
查询单个点
查询耗时
0.04S
0.03S
0.03S
0.03S
由于数据问题,此次查询数据结果和四度一样,时间没有参考意义
0.03S——g.V().hasLabel("person").has("id","id值")
3.2.2.2、路径遍历
路径分为两种:有环路径和无环路径。
有环路径是指路径中至少有一个对象出现的次数大于等于两次。
无环路径是指路径中所有的对象只出现一次。
查询未过滤环路的路径遍历:
时间
遍历路径
一层
二层
三层
四层
查询耗时
均耗时:0.075S
次:0.274S
后均耗时:0.08S
均耗时:0.1S
次:0.875S
后均耗时:0.085S
查询已过滤环路的路径遍历:
时间
遍历路径
一层
二层
三层
四层
五层
查询耗时
次:2.729S
后均耗时:0.450S
次:1.983S
后均耗时:0.300S
次:5.849S
后均耗时:5.210S
次:6.881S
后均耗时:6.75S
Error!
Failed to do request
没有存在五层的数据,导致查询报错
3.2.2.3、短路径查询
g.V("src_v_id")
.repeat(both().simplePath()).until(hasId("target_v_id")
.and().loops().is(lte(4))).hasId("target_v_id")
.path().limit(10)
src_v_id:起点顶点ID
target_v_id:终点顶点ID
lte(4):深度小于4
limit(10) :显示10条数据
如果不限制数据量:将10改为-1
时间
短路径
深度小于2
深度小于3
深度小于4
深度小于5
查询耗时
次:0.894S
后均耗时:0.055S
均耗时:0.055S
次:0.347S
后均耗时:0.050S
次:0.241S
后均耗时:0.060S
3.2.3、千万级别导入
点:1500W 耗时:2H
边:750万 耗时:1H38M
3.2.4、千万级别数据查询
耗时
查询
g.V()
g.E()
g.V().out()
g.V().outE()或g.V().inE()
g.V().drop()或g.E().drop()
次耗时
1.212S
0.449S
报错
报错
报错
次查询后均耗时
0.05S
0.234S
报错
报错
报错
原因
g.V()遍历只显示250条数据
g.E()遍历只显示250条数据
错误的请求,已超过大数值
遍历的大值不能超过80万
删除的大值不能超过1万
3.2.4.1、多度查询
时间
多度
一度
二度
三度
四度
五度
查询单个点
次查询耗时
1.065S
2.218S
1.149S
1.222S
1.453S
开始查询耗时:0.232S
多次查询后均耗时:0.035S——g.V().hasLabel("person").has("id","161f2f39beb3bdc6f2d0747a15fcefd5")
次查询后多次查询均耗时
0.04S
0.04S
0.03S
0.03S
0.03S
3.2.4.2、路径遍历
时间
遍历路径
一层
二层
三层
四层
查询耗时
次:0.958S
后均耗时:0.08S
次:0.639S
后均耗时:0.08S
存在环路的三层和四层路径遍历,存在对象大于等于2的情况,而且数据边的不完整性,查询的时间不具有参考性。
查询已过滤环路的路径遍历:
时间
遍历路径
一层
二层
三层
四层
五层
查询耗时
次:0.742S
后均耗时:0.075S
次:1.284S
后均耗时:0.096S
次:6.483S
后均耗时:5.111S
次:7.574S
后均耗时:6.876S
Error!
Failed to do request
没有存在五层的数据,导致查询报错
3.2.4.3、短路径查询
时间
短路径
深度小于2
深度小于3
深度小于4
深度小于5
查询耗时
次:2.728S
后均耗时:0.055S
均耗时:0.082S
耗时:0.31S
耗时:0.264S
3.2.5、亿级别数据导入
点:1.05亿 耗时:13H35M34S
边:5268万 耗时:12H36M
3.2.6、亿级别数据查询
耗时
查询
g.V()
g.E()
g.V().out()
g.V().outE()或g.V().inE()
g.V().drop()或g.E().drop()
次耗时
1.841S
1.835S
报错
报错
报错
次查询后均耗时
0.212S
0.250S
报错
报错
报错
原因
g.V()遍历只显示250条数据
g.E()遍历只显示250条数据
错误的请求,已超过大数值
遍历的大值不能超过80万
删除的大值不能超过1万
页面上限制显示250条数据:limit(251)
3.2.6.1、多度查询
时间
多度
一度
二度
三度
四度
五度
查询单个点
次查询耗时
7.352S
3.958S
3.149S
3.12S
1.453S
开始查询耗时:0.136S
多次查询后均耗时:0.030S——g.V().hasLabel("person").has("id","161f2f39beb3bdc6f2d0747a15fcefd5")
次查询后多次查询均耗时
0.254S
0.057S
0.04S
0.045S
0.03S
3.2.6.2、路径遍历
路径分为两种:有环路径和无环路径。
有环路径是指路径中至少有一个对象出现的次数大于等于两次。
无环路径是指路径中所有的对象只出现一次。
查询未过滤环路的路径遍历:
时间
遍历路径
一层
二层
三层
四层
查询耗时(id:d9530e5495fbf25d7aae082e8a65c722)
查询耗时:0.759S
查询耗时:2.77S
环路的三层和四层路径遍历,存在对象大于等于2的情况,而且数据边的不完整性,查询的时间不具有参考性。
查询耗时(id:161f2f39beb3bdc6f2d0747a15fcefd5)
查询耗时:2.28S
查询耗时:1.358S
查询已过滤环路的路径遍历:
时间
遍历路径
一层
二层
三层
四层
五层
查询耗时(id:d9530e5495fbf25d7aae082e8a65c722)
次:1.213S
后均耗时:0.095S
次:2.659S
后均耗时:0.116S
次:29.457S
后均耗时:14.990S
次:12.604S
后均耗时:9.01S
次:1.421S
后均耗时:0.122S
查询耗时(id:161f2f39beb3bdc6f2d0747a15fcefd5)
次:2.024S
后均耗时:0.080S
次:1.777S
后均耗时:0.096S
次:10.318S
后均耗时:5.199S
次:8.816S
后均耗时:6.615S
Error!
Failed to do request
没有存在五层的数据,导致查询报错
3.2.6.3、短路径查询
时间
短路径
深度小于2
深度小于3
深度小于4
查询耗时
报错:Error!
Failed to do request
由于深度小于2的报错,深度3测跑也报错,深度小于4的未进行操作。
4、测试总结:
①:当点的数据达到亿级别的时候,短路径查询出现Error!Failed to do request,不知道是由于什么原因导致该查询出现错误,需到issue上查找是否有针对于该错误的具体的原因。
②:后端存储数据库cassandra是分布部署到三台服务器上,对于单服务器部署cassandra的查询未进行测试。
该文档仅代表测试情况,具体数据仅具供参考
————————————————
版权声明:本文为CSDN博主「邹志渭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_31807383/article/details/113897242
相关文章