Порядок обработки запросов на загрузку данных
Запрос на загрузку данных обрабатывается в следующем порядке:
- Внешняя информационная система отправляет запрос INSERT SELECT FROM external_table в Prostore.
- Запрос поступает в сервис исполнения запросов Prostore.
- Если запрос был запущен на исполнение в асинхронном режиме, сервис исполнения запросов возвращает ответ о принятии запроса на обработку.
- Сервис исполнения запросов отправляет команду на загрузку данных в соответствующие коннекторы и отслеживает состояние загрузки. Команда отправляется в коннекторы тех датасорсов, в которых размещены данные целевой таблицы.
- Информация о процессе загрузки данных сохраняется в сервисной базе данных.
- Каждый задействованный коннектор загружает данные из топика Kafka в свой датасорс. Сообщения загружаются:
- с начала топика — если данные загружаются в ADB и в запросе указана новая внешняя таблица загрузки, которая не использовалась раньше;
- с первого непрочитанного сообщения — во всех остальных случаях.
- Когда завершается загрузка каждого или всех пакетов данных (в зависимости от типа датасорса), сервис исполнения запросов отправляет каждому задействованному датасорсу команду на версионирование данных.
- Если запрос был запущен на исполнение в синхронном режиме, сервис исполнения запросов возвращает ответ о результате загрузки данных.
Коннекторы загружают данные из топика Kafka, на который указывает внешняя таблица, используемая в запросе INSERT SELECT FROM external_table. Каждый коннектор читает данные из топика, используя свою консьюмер-группу, и фиксирует в топике прочитанное смещение (офсет) для этой консьюмер-группы.
Подробнее о компонентах системы см. в разделе Компоненты системы и их связи.