图数据库|Nebula Graph v3.1.0 性能报告
本文系 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 小助手会拉你进群~~
图数据库|Nebula Graph v3.1.0 性能报告的更多相关文章
- 初识分布式图数据库 Nebula Graph 2.0 Query Engine
摘要:本文主要介绍 Query 层的整体结构,并通过一条 nGQL 语句来介绍其通过 Query 层的四个主要模块的流程. 一.概述 分布式图数据库 Nebula Graph 2.0 版本相比 1.0 ...
- 分布式图数据库 Nebula Graph 的 Index 实践
导读 索引是数据库系统中不可或缺的一个功能,数据库索引好比是书的目录,能加快数据库的查询速度,其实质是数据库管理系统中一个排序的数据结构.不同的数据库系统有不同的排序结构,目前常见的索引实现类型如 B ...
- 图数据库 Nebula Graph TTL 特性
导读 身处在现在这个大数据时代,我们处理的数据量需以 TB.PB, 甚至 EB 来计算,怎么处理庞大的数据集是从事数据库领域人员的共同问题.解决这个问题的核心在于,数据库中存储的数据是否都是有效的.有 ...
- 分布式图数据库 Nebula Graph 中的集群快照实践
1 概述 1.1 需求背景 图数据库 Nebula Graph 在生产环境中将拥有庞大的数据量和高频率的业务处理,在实际的运行中将不可避免的发生人为的.硬件或业务处理错误的问题,某些严重错误将导致集群 ...
- GraphX 在图数据库 Nebula Graph 的图计算实践
不同来源的异构数据间存在着千丝万缕的关联,这种数据之间隐藏的关联关系和网络结构特性对于数据分析至关重要,图计算就是以图作为数据模型来表达问题并予以解决的过程. 一.背景 随着网络信息技术的飞速发展,数 ...
- 图数据库 Nebula Graph 的数据模型和系统架构设计
Nebula Graph:一个开源的分布式图数据库.作为唯一能够存储万亿个带属性的节点和边的在线图数据库,Nebula Graph 不仅能够在高并发场景下满足毫秒级的低时延查询要求,而且能够提供极高的 ...
- 图数据库 Nebula Graph 是什么
图数据库(英语:Graph Database)是一个使用图结构进行语义查询的数据库.该系统的关键概念是图,形式上是点 (Node 或者 Vertex) 和边 (Edge 或者 Relationship ...
- 图数据库 Nebula Graph 在 Boss 直聘的应用
本文首发于 Nebula Graph 官方博客:https://nebula-graph.com.cn/posts/nebula-graph-risk-control-boss-zhipin/ 摘要: ...
- 图数据库 Nebula Graph 的安装部署
Nebula Graph:一个开源的分布式图数据库.作为唯一能够存储万亿个带属性的节点和边的在线图数据库,Nebula Graph 不仅能够在高并发场景下满足毫秒级的低时延查询要求,还能够实现服务高可 ...
- 使用图数据库 Nebula Graph 数据导入快速体验知识图谱 OwnThink
前言 本文由 Nebula Graph 实习生@王杰贡献. 最近 @Yener 开源了史上最大规模的中文知识图谱--OwnThink(链接:https://github.com/ownthink/Kn ...
随机推荐
- 工单 工序外协 更改PR/PO
工序外协详解介绍'https://blog.csdn.net/weixin_43814706/article/details/113586961' 需求:创建工序委外的工单时更改对应PR/PO 行文本 ...
- git中 commit 和 pull 的先后顺序问题会产生多余的merge记录
commit 和 pull 的先后顺序问题 最近提交代码,发现一个问题. 自己很清楚的记得本次的提交是没有进行合并的. 奇怪的死 gitlab中的 history 历史中显示了我对本次进行了Merge ...
- 提高Unity编译dll的速度
前言 我们有一个Unity纯C#开发的mmo项目(使用ILRuntime热更,开发阶段跑纯C#),在开发到后期之后,每次修改C#代码编译时间在25秒左右,这部分的等待时间是很长的, 我在想有没有办法可 ...
- LyScriptTools 反汇编类API接口手册
LyScriptTools模块实在LyScript模块反汇编基础上封装而成,其提供了更多的反汇编方法,可以更好的控制x64dbg完成自动化反汇编任务,API参考手册如下. 插件地址:https://g ...
- 从嘉手札<2023-12-09>
大雪时节 有种风雪欲来的静谧 如同飘摇的浮舟 人们常说上岸 可对于常年生活在水里的鱼儿来说 哪里是岸边呢 我不知道未来 但唯一可以确定的是 无论你过的怎么样 你都需要给自己一个交待 哪怕风雪兼程 哪怕 ...
- 最好的个人博客评论区实现方案推荐:waline
我的博客一直没有一个好看的评论区,自己做又不会..没错,我是个前端渣渣.调研了一下,一开始想套用一些网上的静态模板,但是改造成本还是挺大的,后来接触到了Waline,简单了解了以下,我就知道了,它就是 ...
- 【scikit-learn基础】--『分类模型评估』之系数分析
前面两篇介绍了分类模型评估的两类方法,准确率分析和损失分析,本篇介绍的杰卡德相似系数和马修斯相关系数为我们提供了不同的角度来观察模型的性能,尤其在不平衡数据场景中,它们更能体现出其独特的价值. 接下来 ...
- 使用XAG配置GoldenGate在RAC集群环境中的高可用
背景:本文是根据实际客户测试需求整理,因为客户OGG所在环境只有GI集群,数据库部署在其他位置,所以会有一些差异,但核心思路一致,已完全测试通过,整理出来供大家参考. 1.前期准备 2.创建ACFS文 ...
- MYSQL-另一种行转列的实现方式
行转列的实现方式:使用mysql.help_topic --行转列 SELECT b.help_topic_id, substring_index( a.levels, ',', b.help_top ...
- Power BI 7 DAY
DAX 表达式(Data Analysis Expressions) DAX表达式的结果应用在数据透视表中 DAX表达式的结果作用于整列或者表中所有行 还需注意以下几点: a. 表名用"'' ...