nebula 是怎么迭代边的?

在一篇文章中看到其他图数据库的存储原理中 如何快速迭代边,是在存储中存储边的信息。
image

思考了下nebula 的 存储结构, 点上并没有边的信息。
https://docs.nebula-graph.com.cn/3.6.0/1.introduction/3.nebula-graph-architecture/4.storage-service/

有点好奇 nebula 在迭代边的时候是怎么做的?

NebulaGraph 的点和边在同一个 part,虽然没有存在同一个 key-value 中,但是永远在同一个地方,所以:

  • 便利一点的进出边(不需要点属性信息的时候),就是一个 prefix scan(只需要给边上左边的那个 id ,两个方向的边都能高效扫出来,边多存了一次换来这里)
  • 获取点与边的属性的情况下,虽然是两个 scan ,(单独取点属性)但是也是在一起的,没有远程访问


以上图为例
需要属性的时候 是 通过点的prefix scan 获取点和边的key 值后,并发单独请求属性值吗?

需要点属性的时候相当于多一次 get_value(key_of_vertex)

明白了,感谢

2 个赞