Загрузка данных

Содержание раздела
  1. Поддерживаемые сущности
  2. Способы загрузки данных
    1. Загрузка данных из Kafka
    2. Потоковая загрузка данных
  3. Управление загружаемыми записями
  4. Как работает загрузка данных
    1. Загрузка в логические таблицы
    2. Загрузка в партиционированные таблицы и партиции
    3. Загрузка в прокси-таблицы и standalone-таблицы
    4. Целевые датасорсы

Загрузка данных — параллельная запись данных в систему из внешнего источника данных. Функция предназначена для записи большого объема данных: от сотен до миллионов строк.

Загружать данные можно в любые поддерживаемые СУБД.

Поддерживаемые сущности

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

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

Управление записями Логическая таблица Прокси-таблица Standalone-таблица
Добавление новых записей + + +
Обновление текущих записей + Только в ADP Только в ADP
Удаление текущих записей +

Способы загрузки данных

Возможны следующие способы загрузки:

  • загрузка из Kafka — загрузка данных из топика брокера сообщений Kafka, куда внешняя система предварительно загрузила данные;
  • потоковая загрузка — загрузка данных напрямую из внешней системы без использования брокера Kafka.

Загрузка данных из Kafka

Загрузить данные из Kafka можно, отправив запрос INSERT SELECT FROM external_table по HTTP (с помощью метода query) или по JDBC. Подробнее о действиях по загрузке данных из Kafka см. в разделе Работа с данными > Загрузка данных из Kafka > Как загрузить данные.

Потоковая загрузка данных

Загрузить поток данных можно по HTTP с помощью метода upload. Подробнее о действиях по потоковой загрузке данных см. в разделе Работа с данными > Потоковая загрузка данных.

Управление загружаемыми записями

С помощью загрузки данных можно добавлять, обновлять и удалять записи в логических таблицах, а также добавлять и обновлять записи в прокси- и standalone-таблицах (см. секцию Поддерживаемые сущности).

Для управления записями, загружаемыми в логические таблицы, предназначено системное значение sys_op:

  • 0 — добавить новую запись или обновить текущую запись загруженными данными;
  • 1 — удалить запись таблицы, соответствующую загруженной.

В зависимости от способа загрузки данных значение sys_op можно задать индивидуально для каждой записи или сразу для всех загружаемых записей.

При загрузке данных в прокси- и standalone-таблицы значение sys_op указывать не нужно. Но если значения sys_op указаны и загружаются в одноименный столбец таблицы, они сохраняются как указаны, без какой-либо интерпретации.

Как работает загрузка данных

При добавлении или обновлении записи все поля, указанные в запросе, заполняются значениями из запроса, а пропущенные поля — значениями по умолчанию.

Загрузка в логические таблицы

Записи загружаются в логическую таблицу так:

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

Загрузка в партиционированные таблицы и партиции

При загрузке данных в партиционированную таблицу система распределяет записи по соответствующим партициям. Если для записи не нашлось партиции с подходящим диапазоном партиционирования, эта запись игнорируется.

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

Загрузка в прокси-таблицы и standalone-таблицы

Записи загружаются в прокси-таблицу или standalone-таблицу так:

  • если в таблице еще нет записи со значением первичного ключа, указанным в запросе, добавляется новая запись;
  • иначе:
    • при загрузке в датасорс типа ADP запись обновляется значениями из запроса;
    • при загрузке в датасорсы других типов результат зависит от типа датасорса: может вернуться ошибка или загрузиться запись с дублирующимся первичным ключом.

Целевые датасорсы

Данные загружаются в следующие датасорсы:

  • выбранные для размещения данных таблицы, — если данные загружаются в логическую таблицу;
  • содержащий таблицу-приемник, — если данные загружаются в прокси-таблицу или standalone-таблицу.

Расположением данных логической таблицы можно управлять с помощью запросов CREATE TABLE и DROP TABLE с ключевым словом DATASOURCE_TYPE. Первый запрос позволяет выбрать датасорсы для размещения данных таблицы, второй — удалить данные таблицы из выбранного датасорса.