Порядок обработки запросов на загрузку данных

Запрос на загрузку данных обрабатывается в следующем порядке:

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

Коннекторы загружают данные из топика Kafka, на который указывает внешняя таблица, используемая в запросе INSERT SELECT FROM external_table. Каждый коннектор читает данные из топика, используя свою консьюмер-группу, и фиксирует в топике прочитанное смещение (офсет) для этой консьюмер-группы.

Подробнее о компонентах системы см. в разделе Компоненты системы и их связи.