【问题标题】:Neo4J PathFinder OptimizationNeo4J 路径查找器优化
【发布时间】:2016-01-22 15:37:07
【问题描述】:

我有一个非常大的(数百万个节点和更多关系)嵌入式 Neo4J 图形数据库。我使用的是 Neo4J 的 2.1.5 版。我经常需要查看两个节点如何/是否连接。我使用 GraphAlgoFactory 构建一个路径查找器,然后调用 findSinglePath。如果我构建一个 Djikstra 的路径查找器,它的运行速度比我在节点实际上连接时运行 ShortestPath PathFinder 慢一个数量级。然而,当未连接时,ShortestPath 的运行速度比 DJikstra 慢。有人知道它为什么会这样吗?

另外,如何优化这些调用?当两个节点未连接时,需要 60-120 秒才能弄清楚。就我而言,这太慢了。

【问题讨论】:

    标签: optimization neo4j dijkstra shortest-path graph-traversal


    【解决方案1】:

    你的网络的度数分布是多少?

    您能否对 rel 类型、方向或属性或介于两者之间的节点标签进行更强的过滤?只是为了减少查看的路径数量?

    使用不同的唯一性也可能会有所帮助,例如节点全局。

    您可能应该提供预期长度的上限。

    Dijkstra 和最短路径实际上都是双向的。

    您也可以自己使用双向遍历器。

    查看这篇博文:http://maxdemarzi.com/2015/11/20/bidirectional-traversals-in-space/

    【讨论】:

    • 图中节点的平均度数可能在 20 左右。我已经在尽可能多地过滤 rel 类型、方向和标签,而不会破坏遍历的目的。我确实提供了长度的上限,尽管它很长。 500.这是不是真的很难解决问题,所以需要一段时间?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多