当前位置:网站首页>图数据库|Nebula Graph v3.1.0 性能报告
图数据库|Nebula Graph v3.1.0 性能报告
2022-07-02 12:22:00 【图数据库NebulaGraph】

本文系 Nebula Graph 发行版 v3.1.0 的性能测试报告。
本文目录
- 测试环境
- 测试数据
- 关于 LDBC-SNB
- 测试说明
- 测试用例和结果
- MatchTest1
- MatchTest2
- MatchTest3
- MatchTest4
- MatchTest5
- 3.1.0 vs 3.0.0(Baseline)
- MatchTest1
- MatchTest2
- MatchTest3
- MatchTest4
- MatchTest5
测试结论
在 v3.1.0 版本中,查询和数据导入性能基本上和 v3.0.0 持平(参考:v3.0.0 性能报告 )。MATCH 语句针对属性读取做了优化,本次测试新增了相应的用例,性能对比 v3.0.0 有大幅提升。
测试环境
服务器和压测机皆为物理机

- 注意:服务器设置 CPU 为 Performance 模式。
测试数据
测试数据采用 LDBC-SNB SF100 数据集,SF100 数据集大小为 100G,共有 282,386,021 个点以及 1,775,513,185 条边。测试用的图空间分区数为 24,副本数为 3。
关于 LDBC-SNB
关联数据基准委员会(LDBC,Linked Data Benchmark Council),是图(Graph)和 RDF 数据管理的基准指南制定者。社交网路基准(SNB,Social Network Benchmark)是关联数据基准委员会(LDBC)开发的软件基准(Benchmark)之一。关于 LDBC-SNB 数据集,具体请参考以下文档:
- LDBC_SNB_SF100:https://ldbcouncil.org/ldbc_snb_docs/ldbc-snb-specification.pdf
- 24 Partitions:https://github.com/ldbc/ldbc_snb_docs
- 3 Replica Factors:https://github.com/ldbc/ldbc_snb_datagen_spark
测试说明
- 压测工具使用基于 Go 语言的 k6,具体请参阅 k6 官方网站;客户端使用的是 nebula-go
- 图表中横坐标轴的 “50_vu”、“100_vu” 等中的 “vu” 表示的是 k6 使用的概念 “virtual user”,即性能测试中的并发数;50_vu 表示 50 个并发用户,100_vu 表示 100 个并发用户,以此类推…
- 性能基线使用正式发布的 3.0.0 版本
ResponseTime=Latency(服务端处理时长)+网络回传结果时长+客户端反序列化结果时长- 参数说明
- QPS 即吞吐率
- Latency 即服务端耗时
- ResponseTime 即客户端耗时
测试用例和结果
仅包括本次新增的 match 测试用例
- QPS 即吞吐率
- Latency 即服务端耗时
- ResponseTime 即客户端耗时
MatchTest1
match (v:Person) where id(v) == {} return count(v.Person.firstName)



MatchTest2
match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != 'yyy' return length(v.Person.browserUsed) + length(v2.Person.gender)



MatchTest3
match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != 'yyy' with v, v2 as v3 return length(v.Person.browserUsed) + (v3.Person.gender)



MatchTest4
MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} OPTIONAL MATCH (n)<-[:KNOWS]-(l) RETURN length(m.Person.lastName) AS n1, length(n.Person.lastName) AS n2, l.Person.creationDate AS n3 ORDER BY n1, n2, n3 LIMIT 10



MatchTest5
MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} MATCH (n)-[:KNOWS]-(l) WITH m AS x, n AS y, l RETURN x.Person.firstName AS n1, y.Person.firstName AS n2, CASE WHEN l.Person.firstName is not null THEN l.Person.firstName WHEN l.Person.gender is not null THEN l.Person.birthday ELSE 'null' END AS n3 ORDER BY n1, n2, n3 LIMIT 10



v3.1.0 vs v3.0.0(Baseline)
以下数据选取 P99 值。
MatchTest1
match (v:Person) where id(v) == {} return count(v.Person.firstName)



MatchTest2
match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != 'yyy' return length(v.Person.browserUsed) + length(v2.Person.gender)



MatchTest3
match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != 'yyy' with v, v2 as v3 return length(v.Person.browserUsed) + (v3.Person.gender)



MatchTest4
MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} OPTIONAL MATCH (n)<-[:KNOWS]-(l) RETURN length(m.Person.lastName) AS n1, length(n.Person.lastName) AS n2, l.Person.creationDate AS n3 ORDER BY n1, n2, n3 LIMIT 10



MatchTest5
MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} MATCH (n)-[:KNOWS]-(l) WITH m AS x, n AS y, l RETURN x.Person.firstName AS n1, y.Person.firstName AS n2, CASE WHEN l.Person.firstName is not null THEN l.Person.firstName WHEN l.Person.gender is not null THEN l.Person.birthday ELSE 'null' END AS n3 ORDER BY n1, n2, n3 LIMIT 10



以上,欢迎你前往 GitHub 体验 v3.1.0 版本,GitHub 地址:https://github.com/vesoft-inc/nebula/releases/tag/v3.1.0
交流图数据库技术?加入 Nebula 交流群请先填写下你的 Nebula 名片,Nebula 小助手会拉你进群~~
边栏推荐
- 【LeetCode】1020-飞地的数量
- [salesforce] how to confirm your salesforce version?
- [leetcode] 977 - carré du tableau ordonné
- ssh/scp 使不提示 All activities are monitored and reported.
- 智联招聘的基于 Nebula Graph 的推荐实践分享
- [leetcode] 1905 statistics sub Island
- 6090. 极大极小游戏
- Pyinstaller's method of packaging pictures attached to exe
- SQL modification statement
- [leetcode] 1254 - count the number of closed Islands
猜你喜欢

【LeetCode】1905-统计子岛屿

Finally, I understand the event loop, synchronous / asynchronous, micro task / macro task, and operation mechanism in JS (with test questions attached)

基于 Nebula Graph 构建百亿关系知识图谱实践
![[experience cloud] how to get the metadata of experience cloud in vscode](/img/45/012c2265402ba1b44f4497f468bc61.png)
[experience cloud] how to get the metadata of experience cloud in vscode

PHP static members

Aiko ai Frontier promotion (7.2)

Experiment collection of University "Fundamentals of circuit analysis". Experiment 7 - Research on sinusoidal steady-state circuit

Soul torture, what is AQS???

(Video + graphic) machine learning introduction series - Chapter 5 machine learning practice
![[salesforce] how to confirm your salesforce version?](/img/ce/4c844b1b686397faa1b6aa3d57e034.png)
[salesforce] how to confirm your salesforce version?
随机推荐
Experiment collection of University "Fundamentals of circuit analysis". Experiment 4 - Research on linear circuit characteristics
《大学“电路分析基础”课程实验合集.实验六》丨典型信号的观察与测量
【LeetCode】1905-统计子岛屿
隐藏在 Nebula Graph 背后的星辰大海
Golang MD5 encryption and MD5 salt value encryption
【Salesforce】如何确认你的Salesforce版本?
[network security] network asset collection
XPT2046 四线电阻式触摸屏
Fiddler实现手机抓包——入门
C # get PLC information (kepserver) II
[leetcode] 189 rotation array
Target detection - make your own deep learning target detection data set with labelimg
[development environment] install the Chinese language pack for the 2013 version of visual studio community (install test agents 2013 | install visual studio 2013 simplified Chinese)
PHP static members
6092. 替换数组中的元素
Moveit obstacle avoidance path planning demo
[idea] recommend an idea translation plug-in: translation "suggestions collection"
ssh/scp 使不提示 All activities are monitored and reported.
蚂蚁集团大规模图计算系统TuGraph通过国家级评测
For the problem that Folium map cannot be displayed, the temporary solution is as follows