已经使用了一段时间的nebula graph,目前有几个功能方面的问题或者建议想和官方的开发人员聊一下。
第一个建议是: 查询的类型约束感觉目前的语法限制还有点大。之前在一个提问里面我问过 是否支持对查询结果的属性引用省略。具体的案例是:
GO FROM hash(“0b124bdeada9d45514550fb3bfd1e486”) OVER related_ip,related_domain,related_url BIDIRECT YIELD $$.IP.node_value AS IP_value, $$.DOMAIN.node_value AS DOMAIN_value, $$.URL.node_value AS URL_value
转变为
GO FROM hash(“0b124bdeada9d45514550fb3bfd1e486”) OVER related_ip,related_domain,related_url BIDIRECT YIELD $$.*.node_value AS value
相当于对目标结点的类型可以忽略,如果没有相应属性的即返回空值。
第二个建议是:目前经过询问,NG不支持给定一个起始点,给定一个终点类型,给定一个跳数,来返回该跳数范围内所有该类型的点。(相当于FIND PATH 的 dst只给定一个类型,不给定实际值)
目前我的做法是根据schema中结点和结点的关系,先递归按照跳数生成若干个查询路径的模式,配合pipe,得到最终有结果的路径模式。然后在对每一个路径模式进行反查,从模式的倒数第二个点(从目标点出发的第一个点)往出发点过滤。
想法比较初步,也没实际测过性能,不知道官方对于这类情况有没有什么什么建议。
第三个建议是:目前好像没有类似于 Select * from 这样选择一类结点的功能。其实和第二个问题有点类似,如果能直接获取一类结点,就可以利用目前的find path 去遍历第二个问题的情况。(目前只能从图库外面的原始数据拉出来一个列表,然后一个一个遍历。性能特别差)
不知道各位开发人员有什么建议或者看法