abc1
1
原问题:1. 网络设备按物理连接还原成图
2. 在“节点”上挂发生的“问题”,“问题”节点上有时间属性
3. 想根据某个“问题”和时间范围 查询和该问题有联通性(同时间段发生的问题所在节点和另外一个问题所在节点有边 可以传播)的所有“问题”和“节点”
现在我尝试的做法
- 网络设备按物理连接还原成图
- 在“节点”上挂发生的“问题”,“问题”节点上有时间属性
- 根据时间范围查询得到一批“问题”节点
- 根据这批节点的下一跳获取subgraph得到很多个“子图” 子图间不联通
- 想得到某个“问题”所在的“子图”
请教各位大佬 谢谢
整体思路:
假设alm2是你第5步中的想要的某个“问题”
-
先根据时间范围,查到一批点,假设现在图上的alm1、alm3、alm4、alm5都是满足要求的点;查找方式可以用lookup,也可以用match
https://docs.nebula-graph.com.cn/3.6.0/3.ngql-guide/7.general-query-statements/5.lookup/
https://docs.nebula-graph.com.cn/3.6.0/3.ngql-guide/7.general-query-statements/2.match/
-
从alm2出发,找和alm1、alm3、alm4、alm5的3跳路径。这个用match或者find path应该都可以。如果明确是3跳的话,感觉用match指定起点和终点会更合适。
-
基于第二步找到的结果应该是一条条的路径,然后基于这个路径的点和边做可视化展示。因为有路径必然是联通的,没有路径的点和边不会呈现出来。这个基本上是前端的工作了
abc1
3
假如device1 不跟device2链接 而是跟 device3链接
必须是3跳 意思就是中间不能间隔其它device
也是满足我们的”连通性“的 能怎么做
那这里首先得明确你联通性的要求是什么,然后在第二步的时候根据你的要求改写查询逻辑就行
abc1
5
alarm不是设备 有alarm的设备是必须相互联通的
建议描述清晰一些。比如你这里的alarm是指起始的alarm到关联的alarm(比如alm2到alm1、3、4、5),还是关联的alarm之间(alm1\3\4\5几个之间)也可以。
最好基于我画的图或者你画的图。
abc1
7
alarm之间不互相关联 device之间才会关联 不知道我表述清楚了没
就基于你画的图
假如device1不是链接deivce2,而是链接device3
- 如果alarm1、alarm3都是满足的点,都应给被找出来 ;
- 如果alarm1满足 , alarm3不满足, 相当于中间隔了个device3就不算联通,alarm1就不应该被列进来
如果是这样的话,初步想可以这么做:
- alm2 查3跳,找到3跳点为alm的点,且alm的时间满足要求;假设这些点为list1
- 从list1出发,找3跳为alm的点,且alm的时间满足要求,这些点为list2
distince(list1+list2)即为最终结果
过程中注意看下有没有方向要求