Распараллеливание выборки пользователей с помощью api и дельты графика - PullRequest
0 голосов
/ 08 мая 2020

I пользовательский дельта-запрос, чтобы получить изменения для пользователей для определенного клиента. Алгоритм выглядит так:

  1. Получить всех пользователей и сохранить дельту
  2. Использовать дельту, чтобы получить только изменения

Все работает нормально, однако первоначальный вызов для получения все пользователи очень медленные, так как мне нужно следовать nextLink, и в основном, если у клиента большое количество пользователей (> 1000000), а максимальное количество элементов на странице составляет 999, для этой синхронизации требуется lof. Я подумал, что могу распараллелить это - использовать фильтр startwith (mail, '{a}') и вызывать api для каждой буквы в алфавите. Проблема в том, что при таком подходе я не могу получить дельта-ссылку (иначе я бы получил дельту для каждого вызова). Может быть, есть лучший способ ускорить выборку пользователей?

1 Ответ

0 голосов
/ 14 мая 2020

Дельта для пользователей сегодня не поддерживает фильтрацию объектов по любому другому свойству, кроме Id. Вы можете запросить поддержку для фильтрации, добавив идею в UserVoice .

В качестве обходного пути вы можете синхронизировать c пользователей параллельно с фильтром, используя GET API (/ users) и затем выполните дельта-запрос с $ deltatoken = latest, чтобы получить токен с этой точки и не синхронизировать c все изменения последовательно. Однако это не гарантирует согласованности.

Наконец, syn c можно сделать быстрее (с использованием дельты, без распараллеливания), выбрав только те свойства, которые вам нужны.

...