社区动态
Pick of the Week'22 |第 17 周看点提升性能的秘籍
每周五 Nebula 为你播报每周看点,每周看点由固定模块:产品动态、社区问答、推荐阅读,和随机模块:本周大事件构成。
在本周的每周看点中,收录了社区用户经常会问及的查询性能提升、悬挂边问题,在推荐阅读模块则推荐了社区用户编写的对新手友好的保姆级手把手带你实操教程。
本周大事件
Nebula Explorer Demo 首秀
Nebula Explorer 是一款可以通过 Web 访问的可视化图探索工具,搭配 NebulaGraph 内核使用,用于与图数据进行可视化交互。即使没有图数据操作经验,用户也可以快速成为图专家。在本次 Demo Show 中, Nebula Explorer 产品负责人演示了共同邻居、路径查找、3D 鸟瞰、可视化查询、数据快照等等多种功能。
如果你对 Explorer 感兴趣可以通过链接:https://wj.qq.com/s2/10158890/69a8 申请试用它,一起来感受酷炫的图查询吧~
产品动态
本周 Nebula 主要有这些产品动态:
- 优化路径以减少冗余路径和时间复杂度,标签:
优化
,pr 参见:https://github.com/vesoft-inc/nebula/pull/4162 - 修复 ScanVertice 以及 ScanEdges 在多线程扫描数据时会 crash 的问题,标签:
bugfix
,pr 参见:https://github.com/vesoft-inc/nebula/pull/4190 - 修复
SHOW HOSTS
版本信息显示异常的问题,标签:bugfix
,pr 参见:https://github.com/vesoft-inc/nebula/pull/4116
社区问答
Pick of the Week 每周会从官方论坛、知乎、微信群、微信公众号及开源中国等渠道精选问题同你分享。
主题分享
本周分享的主题是【如何提升 Nebula 计算两个点之间的关联边数量的性能】,由社区用户 kaisha 提出,Nebula 研发同学负责解答,原帖出自 Nebula 论坛:https://discuss.nebula-graph.com.cn/t/topic/8451。
硬件信息:
- 磁盘 1.5T
- CPU、内存信息 32C 128G
- 查询客户端的配置为 4C 8G
Nebula 版本号:v2.6.1 问题的具体描述: 测试逻辑 查询指定的两个点之间的明细边关系数量 查询语句 MATCH (v)-[e:useridtodeviceid1]-(v2) where id(v) == '15****88' and id(v2) == '411*08E' RETURN count(e); 测试结果: 边关系数据量 3W:平均响应时间在 2.6 秒,95 线 3.5 秒 QPS:40 客户端服务的 CPU 利用率 20% Nebula 机器的 CPU 占 25% 左右 边关系数据量 1K:平均响应时间在 111 毫秒,95 线 144 毫秒 QPS: 950 客户端服务的 CPU 利用率 30% Nebula 机器的 CPU 占 23% 左右 边关系数据量 300:平均响应时间在 38 毫秒,95 线 49 毫秒 QPS: 2780 客户端服务的 CPU 利用率 60% Nebula 的 CPU 占 30% 左右 边关系数据量 2:平均响应时间在 17 毫秒,95 线 22 毫秒 QPS 达到 5300 客户端服务的 CPU 利用率达到 100% Nebula 的 CPU 占 20%左右 服务的响应速度和吞吐量随着明细边数量的增加而下降,边数量达到 1 千以上时平均响应时间突破 100 ms。边为个位数时,平均响应时间十几毫秒,并且数量的统计没办法做到超过多少个直接返回。 问题:如何提升这样统计数据的查询效率?
Nebula:可以升级版本,我们对 MATCH
的执行做了许多优化,并且还在持续优化中。也可 GO
改写,GO
的语义比较简单执行性能在这个版本应该高很多:
go from 'abc' over like where like._dst == 'def' yield like._src AS src | group by $-.src yield count ($-.src)
追问:GO 改写后性能确实得到了很大的提升,不过还是达不到我们的需求,有办法统计数量超过多少时就不继续扫描数量提升性能么?
Nebula:加上 LIMIT
子句。
Nebula 进阶技能
本周的 Nebula 进阶技能分享一个【悬挂边】知识,来源于官方文档:https://docs.nebula-graph.com.cn/3.0.2/20.appendix/0.FAQ/#_6。
悬挂边(Dangling edge)是指一条边的起点或者终点在数据库中不存在。在 NebulaGraph v3.x 的数据模型中,由于设计允许图中存在“悬挂边”;没有 openCypher 中的 MERGE
语句。 对于悬挂边的保证完全依赖应用层面。此外,你可以通过视频 https://www.bilibili.com/video/BV1GR4y1F7ko 了解更多的悬挂边内容。
推荐阅读
- 《macOS 安装 NebulaGraph 看这篇就够了》
- 推荐理由:一直以来社区用户非常关心 macOS 如何安装 NebulaGraph,虽然 B 站有相关视频,但这次我们搞点“无脑”部署,保姆级 cv 教程带你快速在 macOS 下部署 NebulaGraph ~
星云·小剧场
为什么给图数据库取名 Nebula?
Nebula 是星云的意思,很大嘛,也是漫威宇宙里面漂亮的星云小姐姐。对了,Nebula 的发音是:[ˈnɛbjələ]
本文星云图讲解–《NGC 3628: 汉堡星系》
这幅清晰望远镜影像所呈现的,是壮丽侧向螺旋星系 NGC 3628、受到尘埃带分割的鼓胀星系盘。这个迷人的宇宙岛位在春季的狮子星座之内,离我们约有 3 千 5 百万光年远,大小则在 10,000 光年上下。
影像提供与版权:Eric Coles and Mel Helm 作者与编辑:Robert Nemiroff (MTU) & Jerry Bonnell (UMCP)
交流图数据库技术?加入 Nebula 交流群请先填写下你的 Nebula 名片,Nebula 小助手会拉你进群~~