Чтение данных

Массивно-параллельное извлечение данных

Массивно-параллельное извлечение данных в ADTM обеспечивает высокопроизводительную выгрузку данных из Системы.

Массивно-параллельное извлечение данных выполняет следующие назначения:

  • Создание внешних таблиц выгрузки по SQL-запросу JDBC;
  • Заполнение внешних таблиц выгрузки данными по SQL-запросу JDBC;
  • Удаление внешних таблиц выгрузки по SQL-запросу JDBC.

Входные данные:

  • Внешнее JDBC подключение к ADTM;
  • kafka topicX, в который будут выгружены данные.

Выходные данные:

  • Запрошенные данные, разделенные на потоки и части в виде сообщений указанного топика Kafka.

К массивно-параллельному извлечению данных предъявляются следующие ограничения и допущения:

  • Нет автоматического создания/удаления топиков Kafka;
  • Нет автоматического удаления внешних таблиц выгрузки;
  • Внешние таблицы выгрузки не являются Writable External Table СУБД хранилища данных;
  • Количество строк в одном сообщении регулируется базовыми настройками Системы;
  • Запрос на выборку данных может выполняться произвольное количество раз после создания внешней таблицы выгрузки;
  • Определение целевой СУБД выгрузки данных производится на основании конфигурации Системы.

Low-latency выборка данных

Low-latency выборка данных в ADTM обеспечивает выбор объекта Системы на заданный момент системного времени с минимальными задержками.

Low-latency выборка данных выполняет следующие назначения:

  • Преобразование (обогащение) SQL+ DML выражения к запросу СУБД хранилища данных;
  • Исполнение обогащенного запроса к СУБД хранилища данных;
  • Возврат выбранных данных и мета-данных логической схемы данных (соответствующих SQL+ DML выражению).

Входные данные:

  • SQL+ DML выражение обращение к DM.JDBC со стороны внешнего сервиса.

Выходные данные:

  • Получение данных и мета-данных в ответ на входящий запрос к DM.JDBC.

Извлечение дельты (репликации)

Извлечение дельты (репликация) представляет собой извлечение подмножества измененных данных (колонки / фильтр по записям) в рамках одной дельты (диапазона дельт).

Извлечение дельты (репликация) данных в ADTM обеспечивает репликацию в части массивно-параллельного извлечения данных из оригинала.

Извлечение дельты (репликация) выполняет следующие назначения:

  • Прием от Агента ПОДД запроса delta.rq на выгрузку дельты;
  • Определение схемы реплики (подписка);
  • Выполнение массивно-параллельного извлечения данных дельты в адрес реплики;
  • Формирование ответа для Агента ПОДД delta.rs, содержащего дельту и системные данные дельты ( – номер дельты, ẟ-time – дата-время дельты).

К извлечению дельты (репликации) предъявляются следующие ограничения и допущения:

  • Логическая схема данных реплики соответствует структуре SQL-запросов подписки;
  • Адаптер ПОДД хранит информацию в схемах реплик (подписка);
  • Агент ПОДД поддерживает протокол обмена в формате delta.rq, delta.rs;
  • Агент ПОДД является драйвером репликации;
  • delta.rs может содержать дубликаты сообщений – повторный запуск после сбоя в процессе выгрузки приводит к формированию дублей сообщений в ответном потоке delta.rs.

Входные данные:

  • Загруженная в оригинал дельта ;
  • Информация о подписках:
  • каждая подписка – набор sql-запросов;
  • DM.JDBC подключение;
  • Входящее сообщение delta.rq:
  • – номер дельты;
  • идентификатор подписки (схемы реплики).

Выходные данные:

  • Исходящий поток сообщений delta.rs, каждое из которых содержит:
  • – номер дельты;
  • ẟ-time – дата-время дельты;
  • sql-запрос подписки;
  • порядковый номер таблицы (номер потока);
  • общее количество таблиц (количество потоков);
  • порядковый номер сообщения в рамках таблицы (в рамках потока);
  • признак последнего сообщения в рамках таблицы (в рамках потока);
  • [ подмножество данных таблицы ].

Извлечение снэпшота данных (репликация)

Извлечение снэпшота данных (репликация) представляет собой выборку актуального среза данных (не дельт).

Извлечение изменения результатов запросов (репликация)

Извлечение изменения результатов запросов (репликация) представляет собой динамический расчет дельты изменений результатов запроса.

Выборка целостного набора данных в любой момент времени

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

Выборка консистентного набора данных на определенный момент системного времени (for system_time)

Выборка консистентного набора данных на определенный момент системного времени (for system_time) обеспечивает консистентную на заданный момент времени выборку данных из физической схемы данных на основании входящего SQL-запроса к логической схеме данных.

Выборка консистентного набора данных на определенный момент системного времени (for system_time) выполняет следующие назначения:

  • Определение номера дельты @SelectOn соответствующего заданному моменту времени;
  • Определение целевой СУБД;
  • Используя входящий SQL-запрос к логической схеме данных, формирование запроса к физической схеме данных для определенного номера дельты @SelectOn;
  • Выполнение общего сформированного запроса к целевой СУБД;
  • Возврат результата выполнения запроса.

К выборке консистентного набора данных на определенный момент системного времени (for system_time) предъявляются следующие ограничения и допущения:

  • Если момент времени не задан – используется номер последней успешно загруженной дельты.

Тип данных

К типам данных предъявляются следующие ограничения и допущения:

  • Типы времени не содержат информации о time-zone;
  • Поддерживается подмножество типов стандарта SQL;
  • Поддерживаются типы вне стандарта SQL.

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

Табл. 4. Типы данных
Логический тип Описание Тип данных ADB Тип данных ADG Тип данных ADQM
BOOLEAN Логический тип boolean boolean UInt8
VARCHAR (n) Строка ограниченной длины (n символов) varchar (n) string String
CHAR (n) Строка ограниченной длины (n символов) varchar (n) string String
UUID Строка ограниченной длины (36 символов) varchar (36) string String
BIGINT Целые числа фиксированной длины со знаком в диапазоне от -9223372036854775808 до 9223372036854775807 int8 integer Int64
INT Целые числа фиксированной длины со знаком в диапазоне от -9223372036854775808 до 9223372036854775807 int8 integer Int64
DOUBLE Число с плавающей запятой с двойной точностью float8 double Float64
FLOAT Число с плавающей запятой real double Float32
DATE Дата (без времени суток) date integer (знаковое число дней относительно 1970-01-01) Int64 (знаковое число дней относительно 1970-01-01)
TIME (precision) Время (без даты) с заданной точностью от 0 (секунды) до 6 (микросекунды) time (precision) integer (знаковое число микросекунд начиная с 00:00:00.000000) Int64 (знаковое число микросекунд начиная с 00:00:00.000000)
TIMESTAMP (precision) Дата и время с заданной точностью timestamp (precision) integer (знаковое число микросекунд начиная 1970-01-01 00:00:00) DateTime64 (prescision) | Int64 (знаковое число микросекунд относительно 1970-01-01)

Загрузка данных MPP-W осуществляется в формате AVRO. Выгрузка данных MPP-W осуществляется в формате AVRO в соответствии со спецификой типов данных СУБД.

Табл. 5. Загрузка и выгрузка в формате AVRO
AVRO (загрузка) Тип данных ADTM ADB AVRO (выгрузка) ADG AVRO (выгрузка) ADQM AVRO (выгрузка)
boolean BOOLEAN boolean boolean int
string VARCHAR (n) string string string
long BIGINT long long long
double DOUBLE double double double
float FLOAT float double float
(int) date DATE (int) date int int
(long) time-micros TIME (precision) (long) time-micros long long
(long) timestamp-micros TIMESTAMP (precision) (long) timestamp-micros long (long) timestamp-micros

Выборка данных LL-R через DM.JDBC возвращает данные в виде типов java.sql.Types соответствующих типам логической схемы данных.

Плагины конвертируют полученные данные в java.sql.Types соответствующие логической схеме данных.

Выборка данных LL-R (через любые интерфейсы) позволяет выполнять запросы с указанием формата данных (секция FORMAT в SELECT).

Плагины конвертируют полученные данные в заданный FORMAT и/или запрашивают данные из СУБД в требуемом формате.

JDBC-подключение к ADTM

JDBC-подключение к ADTM обеспечивает JDBC-стандарт подключения к СУБД для ADTM.

JDBC-подключение к ADTM выполняет следующие назначения:

  • Реализация функций стандарта JDBC;
  • Подключение к REST на основании строки подключения;
  • Предоставление результатов исполнения SQL-запросов потребителю.

Входные данные:

  • Строка подключения к REST сервису обеспечивающему исполнение SQL-запроса;
  • SQL-запрос.

Выходные данные:

  • Результат выполнения SQL-запроса.