Архитектура набора данных в Открытое озеро данных Qlik | Qlik Cloud Справка
Перейти к основному содержимому Перейти к дополнительному содержимому

Архитектура набора данных в Открытое озеро данных Qlik

Потоковые источники имеют собственную архитектуру в Открытое озеро данных Qlik, поскольку им не требуется Data Movement gateway для загрузки данных в блок для промежуточного хранения, а они работают на базе кластера lakehouse.

При приеме данных из файлов, содержащих шаблон данных в имени файла, кластер lakehouse может выполнять целевые операции со списками в S3, что значительно ускоряет время чтения списка файлов. Кроме того, Открытое озеро данных Qlik может прогнозировать поступающие файлы на основе шаблона даты. Задаче потокового промежуточного хранения не нужно каждый раз составлять список всего блока, вместо этого она может запрашивать файлы из S3 в определенном диапазоне дат. Меньший список файлов приводит к повышению производительности. Дополнительную настройку Удалить после загрузки можно использовать для поддержания небольшого количества файлов. Полная загрузка не выполняется, первые записи считаются вставленными изменениями.

В Открытое озеро данных Qlik задача потокового преобразования заменяет задачу хранения. Эта задача используется для преобразования и хранения данных промежуточного хранения в виде таблиц Iceberg. Задачу потокового преобразования можно добавить только после задачи потокового промежуточного хранения. Задача потокового преобразования поддерживает два режима обновления записей:

  • Только добавление: Добавляет новые записи без изменения существующих данных, и ограничения ключей не применяются при поступлении записей-дубликатов.
  • Применить изменения (Слияние): Обновляет существующие записи и вставляет новые записи на основе ключевых полей. Этот режим дает возможность использовать мягкое удаление или сохранять исторические данные (Тип 2).

Задача потокового преобразования — это задача на основе цели, которая сопоставляет источник и цель и включает возможности эволюции схемы. Она предоставляет расширенные возможности преобразования, включая распаковку вложенных структур и сглаживание массивов. Для получения дополнительной информации о функциях, которые можно использовать в задаче потокового преобразования, см. Функции преобразования.

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

Архитектура для потокового конвейера данных Открытое озеро данных Qlik в режиме «Только добавление»

Архитектура Open lakehouse в режиме только добавления

Архитектура для потокового конвейера данных Открытое озеро данных Qlik в режиме «Слияние»

Архитектура Open lakehouse в режиме слияния

Таблицы промежуточного хранения

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

Поля заголовка, добавленные для источников Kafka
Поле Тип Описание
hdr__kafka_partition Long Секция Kafka
hdr__kafka_topic String Топик Kafka
hdr__kafka_offset Long Текущее значение в секции
hdr__kafka_key String Ключ в кодировке Base64. Устанавливается в строку NULL, если недоступен.
hdr__kafka_headers String

JSON со всеми заголовками сообщений. Устанавливается в строку NULL, если недоступен.  

Поля заголовка, добавленные для источников Amazon Kinesis
Поле Тип Описание
hdr__kinesis_stream String Поток Amazon Kinesis
hdr__kinesis_shard String Шард Amazon Kinesis
hdr__kinesis_offset String Смещение Amazon Kinesis
Поля заголовка, добавленные для источников Amazon S3
Поле Тип Описание
hdr__file_name String Имя файла
hdr__file_size Long Размер файла в байтах.

Схемы

Артефакты генерируются во внутренней схеме и схеме задачи данных.

  • Внутренняя схема содержит физическую таблицу с несколькими секциями.

  • Схема задачи данных содержит представления, которые можно использовать для потребления данных.

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

На конфликты имен проверяются только внутренние схемы. Для других схем необходимо убедиться в отсутствии конфликтов имен в названиях таблиц. Рекомендуется называть внутреннюю схему тем же именем, что и схему задачи данных, с добавлением _internal. Это гарантирует уникальность каждой комбинации схемы и префикса.

Примечание к информацииВсе таблицы и представления управляются Qlik Talend Data Integration. Не изменяйте данные с помощью других инструментов.

Таблицы

Для каждой исходной таблицы во внутренней схеме создается таблица с суффиксом _internal в следующем формате:

<INTERNAL_SCHEMA>.<TABLE_NAME>_internal

Эта таблица содержит пять секций в режиме Применить изменения (Слияние), каждая из которых служит определенной цели в обработке и хранении данных. Каждая секция использует подмножество столбцов таблицы в зависимости от ее роли в жизненном цикле данных. В режиме Только добавление таблица не имеет секций и ведет себя как Current partition (ODS).

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

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

  • Changes partition – Прием в реальном времени

    Все изменения из исходной системы — вставки, обновления и удаления — сначала добавляются в Changes partition.

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

    • Каждое изменение помечается типом (I, U или D), указывающим, как оно обрабатывается.

    • События фиксируются из источника по мере их возникновения. Секция обновляется почти в реальном времени.

    • Changes partition доступна, когда в задаче данных промежуточного хранения Lake применяются следующие настройки.

      • На вкладке Общие для параметра Метод обновления установлено значение CDC.

      • Включена полная загрузка.

  • Asset_state partition - Отслеживание прогресса

    По мере приема изменений Asset_state partition регистрирует две ключевые метки времени:

    • Когда изменения были в последний раз добавлены в Changes partition.

    • Когда изменения были в последний раз применены к Current partition.

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

  • Current partition (ODS) – Последняя реплика источника

    Изменения из Changes partition периодически применяются к Current partition для поддержания актуальной, оптимизированной для запросов копии исходных данных.

    • Фоновая задача запускается автоматически для применения этих обновлений. Это зависит от объема накопленных изменений, а не от фиксированного расписания.

    • Начальная полная загрузка записывается непосредственно в Current partition.

    • Эта секция отражает текущее состояние данных и предназначена для эффективного выполнения запросов.

  • Prior partition (HDS) – Исторические данные

    При обновлении или удалении записи в Current partition копия предыдущей версии записывается в Prior partition. 

    • Записи содержат метаданные, включая историю изменений и диапазон дат, когда данные действительны.

    • Это поддерживает медленно меняющееся измерение типа 2 (SCD2).

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

    • Когда обновленная версия записи попадает в Current partition, предыдущая запись перемещается в Prior partition для исторического отслеживания.

  • Reload partition

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

    • Новые данные сначала записываются в Reload partition.

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

    • Данные сравниваются с Current partition, и только различия перемещаются в Current partition.

    • Reload partition очищается по завершении операции.

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

Current partition

Поле Тип Описание
hdr__key_hash VARBINARY (20) Хэш всех первичных ключей записи. Формат хэша — SHA1. Столбцы разделены символом возврата на одну позицию (backspace).
hdr__from_timestamp TIMESTAMP

Метка времени в UTC:

  • Для данных, взятых из полной загрузки, это время начала полной загрузки.

  • Для изменения, поступающего из Changes partition, это поле метки времени записи.

hdr__operation VARCHAR (1)

Последняя операция этой записи.

  • D - удалено из Changes partition.

  • U - обновлено из Changes partition.

  • I - вставлено из Changes partition.

  • L - вставлено задачей полной загрузки.

  • d - удалено из сравнения и применения.

  • u - обновлено из сравнения и применения.

  • i - вставлено из сравнения и применения.

hdr__inserted_timestamp TIMESTAMP Метка времени UTC первого добавления ключа. При использовании полной загрузки — время начала полной загрузки.
hdr__modified_timestamp TIMESTAMP Метка времени UTC последнего обновления.

Prior partition

Поле Тип Описание
hdr__key_hash VARBINARY (20) Хэш всех первичных ключей записи.
hdr__from_timestamp TIMESTAMP Метка времени в UTC.
hdr__to_timestamp TIMESTAMP Метка времени в UTC.
hdr__operation STRING (1)

Последняя операция этой записи.

  • D - удалено из Changes partition.

  • U - обновлено из Changes partition.

  • I - вставлено из Changes partition.

  • L - вставлено задачей полной загрузки.

  • d - удалено из сравнения и применения.

  • u - обновлено из сравнения и применения.

  • i - вставлено из сравнения и применения.

hdr__was_current_from_timestamp TIMESTAMP Метка времени в UTC для первого раза, когда запись была текущей.
hdr__was_current_to_timestamp TIMESTAMP Метка времени в UTC для последнего раза, когда запись была текущей.

Changes partition

Поле Тип Описание
hdr__change_identifier VARCHAR (50)

Идентификатор изменения — это строка, состоящая из двух частей:

  • Метка времени начала выполнения пакета в миллисекундах с 1/1/1970 (10-значная строка).

  • Последовательность изменений из шлюза репликации (35 символов).

hdr__operation VARCHAR (1)

Последняя операция этой записи.

  • D - удалено из Changes partition.

  • U - обновлено из Changes partition.

  • I - вставлено из Changes partition.

  • L - вставлено задачей полной загрузки.

  • d - удалено из сравнения и применения.

  • u - обновлено из сравнения и применения.

  • i - вставлено из сравнения и применения.

hdr__timestamp TIMESTAMP Метка времени в UTC.
hdr__key_hash BINARY (20) Хэш всех первичных ключей записи.
hdr__inserted_timestamp TIMESTAMP Метка времени UTC времени обработки изменения Qlik.

Asset_state partition

Поле Тип Описание
hdr__apply_change_identifier VARCHAR (50) Идентификатор изменения последнего изменения, примененного к Current partition.
hdr__copy_change_identifier VARCHAR (50) Идентификатор изменения последнего изменения, добавленного в Changes partition.

Reload partition

Столбцы, используемые Reload partition, идентичны Current partition.

Представления

Все созданные представления обновляются почти в реальном времени. Для упрощения запросов и отчетности доступны следующие представления:

Текущие

Представление Current отражает самое последнее состояние данных. Это представление представляет собой реплику исходной таблицы, обновляемую почти в реальном времени. Оно объединяет данные из Current и Changes partitions.

Имя: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>

В структуру таблицы не добавляются столбцы заголовка.

История

Представление History генерируется в схеме ресурсов данных для каждой выбранной исходной таблицы, когда в настройках задачи данных включена История. Представление History объединяет данные из Prior и Changes partitions. Оно предоставляет полную временную шкалу изменений, идеально подходящую для аудита или исторического анализа.

Имя: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>_<Suffix for history views>

В представление History добавляются следующие поля заголовка:

Поле Тип Описание
hdr__key_hash BINARY (20) Хэш всех первичных ключей записи.
hdr__from_timestamp TIMESTAMP Метка времени, когда произошло изменение в исходной системе. Это отражает время, когда пользователь первоначально внес изменение.
hdr__to_timestamp TIMESTAMP Метка времени, когда изменение было отменено или обновлено в исходной системе.
hdr__store VARCHAR (10)

Это указывает, где находится запись:

  • CURRENT - если запись находится в Current partition.

  • PRIOR - если запись находится в Prior partition с историческими данными.

hdr__operation STRING (1)

Последняя операция этой записи.

  • D - удалено из Changes partition.

  • U - обновлено из Changes partition.

  • I - вставлено из Changes partition.

  • L - вставлено задачей полной загрузки.

  • d - удалено из сравнения и применения.

  • u - обновлено из сравнения и применения.

  • i - вставлено из сравнения и применения.

hdr__deleted BIT Указывает, является ли запись мягко удаленной, на основе того, равно ли hdr__operation D или d.
hdr__was_current_from_timestamp TIMESTAMP Время (UTC), когда эта строка попала в Current partition. Обычно это происходит при выполнении задания хранения и применении изменения.
hdr__was_current_to_timestamp TIMESTAMP Время (UTC), когда строка была удалена из таблицы Current, например, из-за появления более новой версии.

Примечание к информацииПредставления Current и History зависят от Changes partition и всегда работают почти в реальном времени. Однако, если вы столкнулись с низкой производительностью запросов, это может быть связано с большим количеством изменений, которые еще не были применены к Current или Prior partitions. Необъединенные дельты требуют большей обработки во время запроса, что замедляет доступ.

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице или с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом!