...

Загрузка большого количества данных

Тема в разделе "Вопросы по платформе", создана пользователем software_infotecs, 17 мар 2023.

  1. software_infotecs

    software_infotecs Участник

    Подскажите как правильно загрузить большое количество данных в систему, размер порядка нескольких сотен тысяч айтемов. Есть апи, откуда получаем данные, можно целиком, можно пачками.
    Бал создан процесс, который берет данные пачками у апи и кладет их в базу. После нескольких итераций процесс зависает. Причем судя по всему на моменте добавления в базу. если размер пачки 100 то он работает чуть дольше, при увеличении размера пачки, количество успешных итераций становится меньше, с какого-то размера пачки зависает сразу.
    Может быть был выбран неверный подход. Какие альтернативы есть загрузки большого количества данных?
  2. kurbatov-la

    kurbatov-la Активный участник

  3. alekc_bpm87

    alekc_bpm87 Эксперт

    Зависание процесса, скорее всего связано с ограничениями которые присутствуют в системе. При разработке функционала, следует их учитывать. Собрал всю инфу по этой теме:
    1) Серверные сценарии ограничены по времени исполнения (1 минута - https://tssdk.elma365.com/ru/#1),
    если сценарий занимает больше времени, то используйте пагинацию (https://tssdk.elma365.com/ru/pages/how-to/paging.html) или добавьте таймауты (минимум 70 сек).
    2) Так же есть ограничение на зацикливание участков бизнес-процесса равное 100 итерациям.

    Данные ограничения распространены для обеих редакций (Saas и On-Premises). Для версии On-Premises можно изменить время исполнения сценария. Время исполнения выставить опытным путем, желательно не выставлять слишком больших значений (более 30 минут), чтобы не создавать дополнительную нагрузку случайно созданными рекурсивными функциями и зацикливанием.
    Чтобы увеличить количество итерации зацикленных участков, разбейте эти участки или используйте дополнительный процесс и переменную с количеством итераций.
  4. Codain

    Codain Активный участник

    А если мы будем использовать к примеру так же большой объём данных, но нужно чтоб пагинация была в классическом её представлении - т.е. прогрузилось примерно 20 элементов, а внизу кнопки 1,2,3 для переключения между запросами?
  5. sobolev

    sobolev Техническая поддержка

    Добрый день!

    Можно сделать в таком случае так на форме: в первичной загрузке получаете size(20) и создаете кнопки на форме с 2 (для него скорректированный search().size(20).from(20)), с 3 (для него скорректированный search().size(20).from(40)) и т.д. Информация будет подгружаться при перехода на конкретную страницу.

    Второй вариант можно подгружать асинхронно, несколько сотен за раз и формировать страницы с ними.

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