社区动态
Pick of the Week'22 |第 13 周看点更多 MATCH 查询姿势
每周五 Nebula 为你播报每周看点,每周看点由固定模块:产品动态、社区问答、推荐阅读,和随机模块:本周大事件构成。
作为查询的核心子句之一,MATCH 的用法在本周的 #3929、#3997 两个 pr 的加持之下变得更加丰富。除了更丰富的 MATCH 用法之外,本周的社区问答方面带你了解更多的索引使用姿势,了解 NebulaGraph 中索引的定位。
本周大事件
直播预告 | Cloud on nLive 听 Cloud 技术专家聊云原生
在本次直播活动中,邀请了 Nebula Cloud 技术专家——乔雷 @kevin.qiao 来聊聊他对云原生、NebulaGraph Cloud 的看法。
如果你对 云原生 和 NebulaGraph Cloud 有任何产品设计、技术上的问题,可扫描下方二维码向他提问~
产品动态
本周 Nebula 主要有这些产品动态:
- 支持更多
MATCH
用法,例如:match (v)-->(v)
、match (v:player) where (v)-[:like]->() return v
、match (v:player) return (v)-[:like]->()
,标签:nGQL
,pr 参见:https://github.com/vesoft-inc/nebula/pull/3997、https://github.com/vesoft-inc/nebula/pull/3929 SHOW JOB JOBID
支持查看指定 job failed 时对应的错误码,标签:nGQL
,pr 参见:https://github.com/vesoft-inc/nebula/pull/4067
社区问答
Pick of the Week 每周会从官方论坛、知乎、微信群、微信公众号及开源中国等渠道精选问题同你分享。
主题分享
本周分享的主题是【索引设计问题】,由社区用户 qianjiangchao1992 提出,Nebula 研发同学负责解答,原帖出自 Nebula 论坛:https://discuss.nebula-graph.com.cn/t/topic/7905。
qianjiangchao1992:官方文档上写索引不提高加速查询,仅支持定位。那我是不是只要每个 TAG 随便建一个索引就好,我不太理解为什么不能提高性能?
Nebula:可以阅读下索引讲解文章,以及这里摘录部分当中不加速方面的观点:
- 不加速从确定的 VID 点的查询,因为 VID 本身就是有序存储的(或者说本身已经被索引了),这个索引是增加了属性反查 VID 的可能;
- 属性反查 VID 在没有索引的时候是被禁止的(除非
LIMIT n
),引入索引不是加速这样的查询,而是使这种属性反查 VID 查询成为可能; - 图查询中的拓展(即使带有属性过滤),因为都是有序的扫 key 数据,过滤也只是读取 value 反序列化 过滤,为属性排序的索引是帮不上忙的。
Nebula 进阶技能
本周的 Nebula 进阶技能分享一个【GO 和 MATCH 执行相同语义的查询,查询结果为什么不同?】,来源于官方文档:https://docs.nebula-graph.com.cn/3.0.1/20.appendix/0.FAQ/#gomatch。
使用 GO
和 MATCH
执行相同语义的查询,查询结果为什么不同?
原因可能有以下几种:
GO
查询到了悬挂边。RETURN
命令未指定排序方式。触发了 Storage 服务中
max_edge_returned_per_vertex
定义的稠密点截断限制。路径的类型不同,导致查询结果可能会不同。
GO
语句采用的是walk
类型,遍历时点和边可以重复。MATCH
语句兼容 openCypher,采用的是trail
类型,遍历时只有点可以重复,边不可以重复。
因路径类型不同导致查询结果不同的示例图和说明如下。
从点 A 开始查询距离 5 跳的点,都会查询到点 C(A->B->C->D->E->C
),查询 6 跳的点时,GO
语句会查询到点 D(A->B->C->D->E->C->D
),因为边C->D
可以重复查询,而MATCH
语句查询为空,因为边不可以重复。
所以使用 GO
和 MATCH
执行相同语义的查询,可能会出现 MATCH
语句的查询结果比 GO
语句少。
关于路径的详细说明,请参见维基百科:https://en.wikipedia.org/wiki/Path_(graph_theory)#Walk,_trail,_path。
注:虽然这里是用了 3.0 的文档链接,但是该内容适用于 v2.x 以上版本;
推荐阅读
- 《NebulaGraph 在众安保险的图实践》
- 推荐理由:互联网金融的借贷同传统信贷业务有所区别,相较于传统信贷业务,互联网金融具有响应快、数据规模大、风险高等特点。而众安保险又是如何迎接这些挑战的呢?
- 《全方位讲解 NebulaGraph 索引原理和使用》
- 推荐理由:在本文中,Nebula 的布道师 Wey 带你了解 NebulaGraph 中索引的作用是什么,以及它同传统的数据又有何种区别;
星云·小剧场
为什么给图数据库取名 Nebula?
Nebula 是星云的意思,很大嘛,也是漫威宇宙里面漂亮的星云小姐姐。对了,Nebula 的发音是:[ˈnɛbjələ]
本文星云图讲解–《星雲NGC 281》
NGC 281位在仙后座内,离我们大约 1 万光年远,因其外观,也常被戏称为小精灵星云。这幅清晰的组合影像,是由数张窄波段照片组合而成,其中,星云的氢和氧原子辐射,分别以红、绿和蓝来呈现。
影像提供与版权:Jeremiah Roth 作者与编辑:Robert Nemiroff (MTU) & Jerry Bonnell (UMCP)
交流图数据库技术?加入 Nebula 交流群请先填写下你的 Nebula 名片,Nebula 小助手会拉你进群~~