steam
1
近日,Nebula Graph v3.1.0 内核同社区小伙伴见面了。在新版本中,Nebula 支持在表达式中使用模式,如:MATCH (v:player) WHERE (v)-[:like]->() RETURN v
;增加了对 CLEAR SPACE
的支持用来保留清除图空间数据后的图 Schema…除了新增特性之外,在 Nebula 开发工程师和社区小伙伴的共同努力下,提升了路径、MATCH、GO 等常见查询的性能。具体的新版本 Release Note 参见:Nebula Graph v3.1.0 Release Note,优化 MATCH、GO 等多个子句
从 2019.05.15 发布第一个 v1.0-alpha 版本开始,Nebula 陆续发布了包含 v3.1.0 在内的 22 个版本,每个版本都让社区小伙伴看到不一样的 Nebula。借着 Nebula 开源 3 周年以及 v3.1.0 新版的“东风”,这里邀请社区的小伙伴们,一起想象 Nebula 未来的样子,将你对 Nebula 的想象变成需求 issue 留在后续 Nebula 迭代中。
Nebula 未来的样子,由你话事。
活动内容
即日起至 2022.05.15,在本帖或者 Nebula GitHub 仓库(https://github.com/vesoft-inc/nebula )提出你的产品需求,它可能是一个新功能,比如:支持一条语句删除多种类型边;也可以是一个优化点,比如:优化 error code…即视为参加活动。
需求可参考模版(同 GitHub 对应 issue)
功能模版
- 问题背景:我想删除两个点之间的所有边,但是目前不支持一条 DELETE 语句删除多种类型的边;
- 功能描述:支持一条语句删除多种类型边;
- 代替方案:执行多条删除边语句;
- 其他:补充信息。
优化模版
- 优化背景:目前 error code 不方便定位到具体的问题;
- 优化内容描述:针对各类问题产生的具体原因,优化 error code;
- 其他:优化 error code 你有什么好的建议方案。
活动礼
在活动期间留言本帖或者给 GitHub 提交 feature / enhancement issue 的小伙伴,将会收到一份限量 Nebula 开源周年礼。
感恩有你的三周年,来当 Nebula 产品官一起完善它吧~
2 个赞
问题背景
我想直接展开返回点的属性,并对指定属性进行排序
类似于 mysql 里做这样一个查询
SELECT
*
FROM
player
ORDER BY
name
LIMIT 5
但在 nebula 里我这样查询
MATCH (v:player)
RETURN properties(v)
ORDER BY v.name DESC LIMIT 5;
会报一个
Only column name can be used as sort item
错误
功能描述
支持展开点属性的函数,并支持对属性排序
比如有个 expand_properties
这样的函数
查询:
MATCH (v:player)
RETURN expand_properties(v)
ORDER BY v.player.name DESC LIMIT 5;
返回:
v.player.name |
v.player.age |
Yao Ming |
38 |
Vince Carter |
42 |
Tracy McGrady |
39 |
Tony Parker |
36 |
Tim Duncan |
42 |
代替方案
我现在的方案有两种
- 官方文档的方案,把所有属性都写出来,加别名并排序
查询:
MATCH (v:player)
RETURN v.player.name AS name, v.player.age AS age
ORDER BY name DESC LIMIT 5;
返回:
name |
age |
Yao Ming |
38 |
Vince Carter |
42 |
Tracy McGrady |
39 |
Tony Parker |
36 |
Tim Duncan |
42 |
这种方案对应用程序来说,需要先拿到 tag 的所有属性名,多了一个步骤
- 我对要排序的字段做了冗余
查询:
MATCH (v:player)
RETURN properties(v), v.player.name AS name
ORDER BY name DESC LIMIT 5;
返回:
properties(v) |
name |
{age: 38, name: “Yao Ming”} |
Yao Ming |
{age: 42, name: “Vince Carter”} |
Vince Carter |
{age: 39, name: “Tracy McGrady”} |
Tracy McGrady |
{age: 36, name: “Tony Parker”} |
Tony Parker |
{age: 42, name: “Tim Duncan”} |
Tim Duncan |
简化了操作,但有冗余不够完美,而且排序的字段还需要有别名才行
4 个赞
功能描述
如果我想要多个tag类型查询,该如何实现
例如我想查询 player 和 team
那么我的ngql会写成这样
match (v:player) return v limit 10
union
match (v:team) return v limit 10
返回:
p |
(“player106” :player{age: 25, name: “Kyle Anderson”}) |
(“team204” :team{name: “Spurs”}) |
如果能同一个match语句能支持多个tag就更好了,例如:
match p=((:player),(:team)) return p limit 10
返回:
p |
(“player106” :player{age: 25, name: “Kyle Anderson”}) |
(“team204” :team{name: “Spurs”}) |
因为当我使用字段进行排序,那么union操作就会失效
例如我想查询player和team,并且要求对 player.name 进行排序
match (v:player) return v, v.player.name as name order by name limit 10
union
match (v:team) return v limit 10;
会报一个
-1009:SemanticError: number of columns to UNION/INTERSECT/MINUS must be same
我觉得可以支持这样的形式:
match p=((:player),(:team)) return p order by p.player.name desc limit 10
返回
p |
(“player106” :player{age: 25, name: “Kyle Anderson”}) |
(“player106” :player{age: 25, name: “Yao Ming”}) |
(“team204” :team{name: “Spurs”}) |
当然我只是建议,希望能采纳,谢谢
2 个赞