我被分配了一项任务,我接待了一群员工,我需要得到他们的CIO-1 (意思是他们老板的老板的老板...一直到老板,他的经理是首席信息官)。但我不知道我是不是以一种有效的方式来做这件事。这是我的算法:
对于每个给定的员工,向microsoft graph发出api请求,以获取他们的经理。然后执行另一个api请求以获取该管理器的管理器...直到我找到他的经理是我们的首席信息官。这意味着,如果我有500名员工,我将在一个for循环中执行一个HTTP请求,并在其中执行另一个for循环,以沿“经理链”向上移动。
这样可以吗?Microsoft Graph会因为我会在短时间内执行很多很多查询而中断我的工作吗?
发布于 2019-01-18 06:01:15
实际上,这更像是一个算法问题,而不是一个图形问题。但是,是的,您确实需要在一天结束时查询数据。然而,有比其他方法更聪明的方法。而不是构建一个循环来查询所有初始员工的老板,并在其中有另一个循环来获取更高级别的老板,等等。你可以用一种不同的方式来做。
首先,确保利用batch queries最小化往返次数。
其次,我认为可以肯定地认为,在某些情况下,某些员工将拥有相同的老板。而不是多次询问谁是那个老板的老板,你需要确保你只做一次。有几种不同的方法可以做到这一点,维护树,索引,总是在数据集上应用distinct……
最后,请记住,循环中的循环算法复杂度是o(n)^2。这总是比有两个后续循环(一个接一个)更糟糕。因此,尝试扁平化您的算法将有所帮助,它也将帮助您构建批处理。
在节流部分,请确保通过guidance。是的,你可能会体验到这一点,但是有几种方法可以优化。
https://stackoverflow.com/questions/54242514
复制相似问题