javascript - ArangoDB 图 maxDepth - 迭代次数过多

标签 javascript graph arangodb

我正在尝试使用 ArangoDB 构建一个大型社交网络图。我在那里得到了数据 - 大约 35k 个顶点和大约 150k 个边。

我意识到数据量非常大,所以我希望一次只绘制一个子集 - 可能与起点相距 2 或 3 度。

但是如果 maxDepth 大于 1,即使我将 maxIterations 设置得非常低(比如 1),我也会收到 1909: Too much iterations 错误

例如,这个查询给了我太多迭代错误

GRAPH_TRAVERSAL(' friend ', 'people/1342', '出站', {maxDepth: 2, maxIterations: 10})

如果我省略 maxIterations,我会得到同样的错误。

该图表在网络界面中成功绘制,因此我认为问题不在于我的数据本身。我的图表中的数据是否超出了 ArangoDB 的处理能力?还是我做错了什么?

最佳答案

maxIterations 参数控制遍历次数后自动中止。这种自动中止可以防止您在循环图上运行遍历时无休止地遍历。

maxIterations 不控制遍历深度,但在多少个顶点之后遍历将停止并抛出错误。

以下是如何计算最大值的示例: 遍历将从指定的起始顶点开始。这是第一次迭代。对于起始顶点,将确定所有传出(或传入)连接。假设从起始顶点开始有五个连接,因此下一轮遍历将考虑它们。因此,maxIterations 的值至少需要为 6(1 表示起始顶点,5 表示下一轮)。如果现在 5 个顶点中的每一个也都有 5 个连接,则您至少还需要 25 次迭代,因此您需要将 maxIterations 值设置为 31。对于下一个级别,每个顶点有 5 个连接,您还需要 125 个等等。

因此,对于每个级别,您不能简单地为 maxIterations 添加常量值。我们看到的序列(1,6,31,156)显然是非线性的。您需要多少次迭代显然取决于基础数据以及顶点的连接程度。

如果您想要实现的只是将遍历深度限制在一定水平,可以使用 minDepthmaxDepth 参数,并设置 maxIterations 到一个非常高的值(可能永远不会达到,因为遍历受到 maxDepth 的限制)。控制遍历中数据量的其他选项是direction(any 将产生大部分结果,并且更容易导致循环,请使用inbound code> 或 出站(尽可能)和唯一性(控制给定顶点或连接边被访问的频率)。

关于javascript - ArangoDB 图 maxDepth - 迭代次数过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28156884/

相关文章:

javascript - anchor 标记禁用在 Firefox 中不起作用

javascript - 三元运算符在 JavaScript 中是如何求值的?

c++ - boost::graph 中的 DFS 更改图形内容

python - 如何在 Heroku 上设置 ArangoDB?

Python ArangoDB

javascript - 包含所有这些第 3 方 javascript 文件是否会带来安全风险?

javascript - 成功后如何显示服务器的json?

algorithm - 什么是 Dijkstra 的最小生成树?

C++ : Storing weight for larger Graph

count - Arango 计数的最佳连接方式