过滤连接到超级节点的相关节点的有效方法

Efficient way for filtering related nodes connected to a supernode

提问人:A R K 提问时间:11/6/2023 最后编辑:A R K 更新时间:11/7/2023 访问量:45

问:

我正在尝试将连接的节点过滤到 Janus Graph 中的超级节点,其中数百万个顶点可以直接连接到级别 =1 的超级节点,假设有一个父节点,它可能有数百万个直接连接的顶点,这些顶点具有不同的类别,例如类别 1、类别 2 到类别 n。

我正在使用带有后端存储的 JanusGraph 1.0 版本作为 Apache Cassandra,并使用下面的 gremlin 查询来获取类别为 1 的相关项目,查询需要超过 20-30 秒才能返回结果。

对于下面的 recId 123,有超过 500K 条记录直接连接到这个超级节点

g.V().has(“recId”,“123”).both(“related”).has(“category”,“category1”).range(0,1000).valueMap(“recId”,“category”).toList();

有没有办法优化这个 gremlin 查询,或者有什么方法可以让这个查询并行运行并在几秒钟内给出结果?请建议

仅供注意的是,已经为 recId 和 category 字段创建了索引。

Gremlin Graph-Databases Tinkerpop Janusgraph

评论


答:

4赞 HadoopMarc 11/7/2023 #1

通常,将超级节点检索到客户端内存中不是一个好主意,因为这样您还会将其所有边缘都放入客户端内存中。但是,一旦知道超级节点的 ID,就可以遍历到某个节点并检查它是否连接到超级节点。如果你真的想遍历超级节点,请查看 https://docs.janusgraph.org/schema/index-management/index-performance/#vertex-centric-indexes

评论

0赞 A R K 11/7/2023
谢谢,我将检查上面的帖子以了解 vertex-centric-indexes,但不幸的是,就我而言,没有避免超级节点的选项。