Javascript ArangoDB graph maxDepth-迭代次数过多
我正试图用ArangoDB构建一个大型的ish社交网络图。我这里有数据-大约35k个顶点,大约150k条边 我意识到这是一个非常多的数据,所以我希望一次只画一个子集-可能是从起点开始2或3度的间隔 但是我得到了一个Javascript ArangoDB graph maxDepth-迭代次数过多,javascript,graph,arangodb,Javascript,Graph,Arangodb,我正试图用ArangoDB构建一个大型的ish社交网络图。我这里有数据-大约35k个顶点,大约150k条边 我意识到这是一个非常多的数据,所以我希望一次只画一个子集-可能是从起点开始2或3度的间隔 但是我得到了一个1909:如果maxDepth大于1,那么迭代次数太多了,即使我将maxIterations设置得很低(比如,1) 例如,这个查询给了我一个太多的迭代错误 GRAPH_遍历('Friends','people/1342','outbound',{maxDepth:2,maxIterat
1909:如果maxDepth大于1,那么迭代次数太多了,即使我将maxIterations设置得很低(比如,1)
例如,这个查询给了我一个太多的迭代错误
GRAPH_遍历('Friends','people/1342','outbound',{maxDepth:2,maxIterations:10})
如果省略maxIterations,则会得到相同的错误
图形在web界面中绘制成功,因此我认为问题不在于数据本身。我的图表中的数据是否比ArangoDB所能处理的还要多?还是我做错了什么?maxIterations是一个阈值,它将控制太多的计算周期。因此,图形越大,游戏中的边/节点越多,您需要的计算周期就越多(maxIterations参数应该越高)
因此,尝试平滑地增加maxDeth==2的maxIterations,以此类推。但不是太平稳,例如try+1:=try*10:-)参数控制遍历自动中止的迭代次数。当在循环图上运行遍历时,这种自动终止是为了保护您免受无休止的遍历
maxIterations
不控制遍历深度,但在经过多少个顶点之后,遍历将停止并抛出错误
下面是一个如何计算最大值的示例:
遍历将从指定的起始顶点开始。这是第一次迭代。对于起始顶点,将确定所有传出(或传入)连接。假设从开始顶点有五个连接,因此下一轮遍历将考虑它们。因此,对于maxIterations
,需要至少为6的值(1表示开始顶点,5表示下一轮)。如果现在5个顶点中的每个顶点都有5个连接,则至少还需要25次迭代,因此需要maxIterations
值31。对于下一个级别,每个级别有5个连接,您还需要125个等
因此,对于每个级别,您不能简单地为maxIterations
添加一个常量值。我们看到的序列(1,6,31156)显然是非线性的。需要多少次迭代显然取决于底层数据和顶点的连接方式
如果您想要实现的只是将遍历深度限制在某个级别,那么可以使用minDepth
或maxDepth
参数,并将maxIterations
设置为一个非常高的值(这可能永远不会达到,因为遍历以maxDepth
为边界)。控制遍历产生的数据量的进一步选项有方向
(任何
将产生大多数结果,并且更容易导致循环,尽可能使用入站
或出站
)和唯一性
(控制访问给定顶点或连接边的频率).我从100k开始,然后是50k,然后是10k,然后是1000100,1-我应该把它提高几个数量级吗?你可能需要更多,而不是更少的maxiterations。