到目前为止,我们使用了SharePoint内部部署自定义Web服务,该服务为所有用户(约15,000个)提供了包括aboutMe
,skills
等在内的属性以及直接管理器。这项工作花了大约。 15分钟。
所有数据都存储在Lucene搜索索引中。
现在我们必须切换到O365。 我可以从Microsoft Graph获得所有需要的信息,但这需要太长时间(3 - 5小时):
/v1.0/users
(带分页)/v1.0/[user-id]/manager
aboutMe
skills
,/v1.0/[user-Id]?$select=aboutMe,skills
等属性
有没有有效的方法来完成这项任务?
答案 0 :(得分:1)
理想情况下,您应该只需要按需要的数据调用Microsoft Graph,而不是尝试将其同步到您自己的数据库。
假设您无法做到这一点,您可以使用/delta
端点(Get incremental changes for users)推断出这需要的时间。使用增量令牌时,您将只返回自上次请求以来已更改(添加,删除,编辑)的资源。所以你的第一次传球可能需要几个小时,但随后的传球需要几秒钟。
您可以控制哪些属性跟踪更改"反对使用$select
查询参数。例如,如果您只关心displayName
的更改,那么使用/v1.0/users/delta?$select=displayName
将确保您只接收对该属性的更改。来自documentation:
如果使用
$select
查询参数,则该参数指示客户端更喜欢仅跟踪$select
语句中指定的属性或关系的更改。如果未选择的属性发生更改,则在后续请求之后,该属性更改的资源不会显示在增量响应中。
另外,请考虑batching requests来改进您的流程'整体表现。批处理允许您在单个请求中向Microsoft Graph发送多个查询,并在单个响应中获得完整的结果。