Является фрагментом процедуры запроса данных для проекта аналитики данных с платформы Science Direct.
IDE: Clion 2023.2
- Язык программирования: С++ 17
- Система сборки: cmake-3.20
- Стандарт языка: 17
- Установленные библиотеки:
- libopenmp v5.0
- libpqxx v7.8.1
- libcpr v1.10.2
- pugixml v1.14
При разработке данной процедуры были обнаружены следующие ограничения:
- Удалённое(относительно оборудования пользователя) расположение серверов приводило к задержкам(>500 мс при объёме данных ~20 кб), по длительности занимающим больше времени, чем сама обработка содержимого
- Ограничение на частоту отправки запросов для 1 API ключа.
- Разнородность данных, большое число записей с пустыми или полупустыми полями.
Для достижения оптимальной пропускной способности было принято решение использовать асинхронный http клиент для сохранения набора данных в массив из future. С целью обойти ограничение на число запросов был создан набор API ключей(16) и каждый запускаемый поток имел свой уникальный API ключ.
Проводимые деятельности:
- Были применены асинхронные http клиенты для непрерывного запроса информации и его сохранения в массив данных для обработки.
- Были применены параллельные циклы реализованные на базе OpenMP.
- Для динамического отображения прогресса исполнения в терминале были отрисованы индикаторы.
- Для обхода существующего ограничения был создан набор api ключей.
- Данные приводились к общему типу для унификации и проведения общих проверок.
- Удалось разработать процедуру для получения необходимых данных из xml с различными вариантами его содержимого.