Запросы более чем 1 000 000 использований записей Java торгового персонала API и поиск лучшего подхода

Я разрабатываю JAVA-приложение, которое запросит таблицы, которые могут содержать более чем 1 000 000 записей. Я попробовал все, что я мог, чтобы быть максимально эффективным, но я только могу достигнуть на в среднем. приблизительно 5 000 записей в минуту и максимум 10 000 однажды. Я попытался перепроектировать загрузчик данных, и мой код, кажется, очень похож, но все еще никакая удача.

Действительно ли поточная обработка является эффективным решением здесь? Я попробовал это, но очень минимальными результатами.

Я читал и применил каждую вещь, возможную, это кажется (сжимающиеся запросы/ответы, потоки и т.д.), но я не могу достигнуть загрузчика данных как скорости.

Для замечания кажется, что queryMore метод, кажется, горлышко бутылки.

У кого-либо есть какие-либо примеры кода или события, которые они могут совместно использовать для регулирования меня в правильном направлении?

Спасибо

7
задан astro 10 February 2010 в 18:21
поделиться

3 ответа

Задержка будет убийцей для такого типа ситуации - и решением будет либо многопоточность, либо асинхронные операции (используя NIO). Я бы начал с параллельного запуска 10 рабочих потоков и посмотрел, какая разница (при условии, что back-end поддерживает одновременное получение).

У меня нет конкретного кода или чего-либо, что я могу предоставить здесь, извините - просто болезненный опыт с вызовами API, проходящими через сети с высокой задержкой.

-1
ответ дан 7 December 2019 в 01:20
поделиться

В Salesforce API ограничение размера пакета - это то, что действительно может замедлить работу. При использовании методов query / queryMore максимальный размер пакета составляет 2000. Однако, даже если вы можете указать 2000 в качестве размера пакета в заголовке SOAP, Salesforce может отправлять в ответ меньшие пакеты. Их решение о размере пакета зависит от активности сервера, а также от результатов вашего исходного запроса.

Я заметил, что если я отправлю запрос, который включает какие-либо «текстовые» поля, размер пакета будет ограничен 50.

Я предлагаю убедиться, что ваши запросы извлекают только те данные, которые вам нужны. Я знаю, что многие таблицы Salesforce содержат множество настраиваемых полей, которые могут не понадобиться для каждой интеграции.

Документация Salesforce по этому вопросу

4
ответ дан 7 December 2019 в 01:20
поделиться

У нас около 14000 записей в нашем объекте Accounts, и для получения всех записей требуется некоторое время. Я выполняю запрос, который занимает около минуты, но SF возвращает только пакеты, не превышающие 500, хотя я установил размер пакета равным 2000. Каждая дополнительная операция запроса также занимает от 45 секунд до минуты. Это ограничение очень неприятно, когда вам нужно получить большой объем данных.

1
ответ дан 7 December 2019 в 01:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: