- nebula 版本:3.2.0
- 部署方式:分布式
- 安装方式:源码编译
- 是否上生产环境:Y
- 内存:32G
- 存储:机械硬盘
有没有nGQL语句 / 算法 可以实现如下的需求:
需求1:求某个节点下游所有节点的数量(不只局限于1跳,可能很多跳,直到最末端节点)
需求2:求某个节点下游指定Tag下所有节点的数量(即在需求1的基础上,遍历出所有下游节点,再从中筛选出需要的Tag的节点数量)
有没有nGQL语句 / 算法 可以实现如下的需求:
需求1:求某个节点下游所有节点的数量(不只局限于1跳,可能很多跳,直到最末端节点)
需求2:求某个节点下游指定Tag下所有节点的数量(即在需求1的基础上,遍历出所有下游节点,再从中筛选出需要的Tag的节点数量)
看下这个。
当我在官方案例basketball空间中执行这个语句的时候是可以运行的,
但是当我在自己的空间中执行该语句就总是报如下错误:
目前该Table节点下有十万个节点,与之直接关联的边有百万条。
不知道这个问题是什么原因呢?
table 的单引号去掉呢
反引号去掉也是同样的报错呢
这个不是语法的问题。
你可以用我们的nba数据集,在console中执行 :play basketballplayer
。
match (v:Table)-[e:INHERITED_BY*1..N]->(v2:Table) where id(v)==“tableName” return count(distinct v2)
请教大佬,我执行如上语句,当最大跳数N为4~5跳的时候,可以跑出来结果,但是当最大跳数N很大,如8~10跳甚至不设置,nebula集群会挂掉。应该是oom引起的。
我的空间设置:
Table节点的属性:
大约有20个属性,都为string类型,平均每条属性的 属性名 + 属性值 约 30个字节
数据量:
我的目的是计算出当前节点的所有下游节点数量(起点是Table, 边是INHERITED_BY,终点是Table)
我暂时想到的优化方式是:
1.vid使用table_id,减少vid长度,过长的vid使用md5加密,将空间的vid长度设置为fixed_string(32)
2.可能属性数量也会影响查询性能(其实并非每次查询都需要拿到所有属性),是否可以将内容过长的属性去掉或者关联到外部存储,或者采用分Tag?
3.现在集群为32G内存,机械硬盘。可以扩大内存,改为ssd
请教大佬我的优化思路是否正确,或者有没有其他的解决方式,这个需求目前应用于生产环境,比较紧急,还请大佬们给点建议,非常感谢!~
以上的优化个人认为是合适的。
另外,可以考虑用3.4版本,3.4版本在你这个case中应该能有一些提升。
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。