在nebula中常用到GET SUBGRAPH查询,获取某一节点的N跳子图,获取子图结果后,如何进行后续的计算也是一个问题。
1.子图查询
从结果中可以看到GET SUBGRAPH是广度遍历进行路径搜索,第N行是第N跳的关系。
GET SUBGRAPH 4 STEPS FROM "491" both edge_企业地址,edge_法定代表人,edge_电话,edge_邮箱 YIELD EDGES AS relationships;
将子图查询出来后,可以将子图的边存入networkx中,进行后续的一些图分析,例如,度、中心性、pagerank等的计算,从而实现一些基于业务图谱数据的具体推理计算,但是networkx的计算效率低,这点很头疼,因为生产上要求在1分钟内完成子图查询、分析计算,这导致子图大点就很容易超时gg。
2. 图计算引擎
常用的图计算的算法:https://docs.nebula-graph.com.cn/3.2.0/graph-computing/algorithm-description/
nebula自己开发了NebulaGraph Analytics的图计算工具,但这是企业版的,无法免费获取。
因此,调研学习了一些开源的图计算引擎,比较主流的有GraphX、GraphScope。
2.1 GraphScope
GraphScope的官方文档:https://graphscope.io/docs/zh/getting_started.html
GraphScope 采用称为 Gremlin 的高级语言进行图遍历,因为有Gremlin的基础,所以上手还挺方便,但是这个工具没有windows版,只好在linux服务器上运行。