# Архитектура набора данных в облачном хранилище данных

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

Интуитивно понятный пользовательский интерфейс с подсказками помогает создавать, моделировать и выполнять конвейеры данных. Автоматически генерируйте схемы для хранилищ оперативных данных (ODS) и хранилищ исторических данных (HDS) без написания кода вручную.

Архитектура для конвейера данных Qlik Talend Data Integration с использованием Шлюз данных Qlik — движение данных и CDC

Архитектура для конвейера данных Qlik Talend Data Integration с использованием Шлюз данных Qlik — движение данных и CDC

Архитектура для конвейера данных Qlik Talend Data IntegrationQlik Talend Data Integration с использованием Шлюз данных Qlik — движение данныхШлюз данных Qlik — движение данных и CDC ![](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/dr_DIArchitecture_v1.svg)

* Промежуточное хранение

  Задача промежуточного хранения в Qlik Talend Data Integration управляет непрерывным промежуточным хранением данных из источников данных в зону промежуточного хранения. В примере на диаграмме описывается использование Шлюз данных Qlik — движение данных для доступа к источникам данных с помощью CDC для поддержания данных в актуальном состоянии. Вы также можете использовать подключения к источникам Qlik Cloud для выполнения полных загрузок, которые можно запланировать для периодической перезагрузки.

  Для получения информации о том, когда необходимо использовать Шлюз движения данных, см. [Когда требуется Шлюз движения данных?](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm#top)

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

* Хранение

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

* Внешние представления

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

## Использование динамических представлений

Вы можете получить доступ как к текущим данным (ODS), так и к историческим данным (HDS) с помощью динамических представлений. Динамические представления включают данные из таблиц изменений, которые еще не применены к текущим или предыдущим таблицам. Это позволяет просматривать данные с меньшей задержкой без необходимости частого применения измененных данных. Возможность отложить слияние позволяет снизить затраты и требования к обработке на целевой платформе.

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

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

* Процесс хранения, выполняющийся, например, один раз в день, может активировать большой вычислительный слой для обработки.

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

[Посмотреть видеоролик](https://play.vidyard.com/USr4BCxeuYsVV1hE5JmKWb)

## Схемы

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

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

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

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

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

Схемы, созданные Qlik Talend Data Integration, не будут удалены при удалении задач или проектов.

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

## Таблицы

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

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

* Текущая таблица (ODS)

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

* Предыдущая таблица (HDS)

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

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

  Используйте представление истории или динамическое представление истории для просмотра исторических данных. Для получения дополнительной информации см. [Представление истории](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Storage/dataset-tables.htm#History) и [Динамическое представление истории](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Storage/dataset-tables.htm#History2).

* Таблица изменений

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

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

Примечание к информации

При повторной вставке записи, которая была ранее удалена, и записи имеют одинаковое значение первичного ключа, hdr\_\_operation будет иметь значение U - обновлено.

Имена столбцов, начинающиеся с hdr\_\_, зарезервированы для использования в столбцах заголовков Qlik Talend Data Integration. Для получения дополнительной информации см. [Неоднозначные имена столбцов](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Deploying/Troubleshooting-data-assets.htm#Ambiguou).

### Текущая таблица

Именование: &lt;INTERNAL\_SCHEMA&gt;.[&lt;PREFIX&gt;]&lt;TABLE\_NAME&gt;\_current

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

Поля заголовка текущей таблицы

| Поле | Тип | Описание |
| --- | --- | --- |
| hdr\_\_key\_hash | varbinary(20) | Хэш всех первичных ключей записи. Формат хэша — SHA1. Столбцы разделяются символом возврата на одну позицию (backspace).<br><br>Этот столбец не генерируется в задачах данных Витрина данных. |
| hdr\_\_key\_id | int64 | Последовательность, увеличивающаяся для каждой записи.<br><br>Этот столбец генерируется только в задачах данных Витрина данных. |
| hdr\_\_from\_timestamp | timestamp | Метка времени в UTC<br><br><ul> <li> <p>Для данных, полученных из полной загрузки, это будет время начала полной загрузки.</p> </li> <li> <p>Для изменения, поступающего через таблицы изменений, это будет поле метки времени записи.</p> </li> </ul> |
| hdr\_\_operation | string(1) | Последняя операция этой записи.<br><br><ul> <li> <p>D - удалено из таблицы изменений.</p> </li> <li> <p>U - обновлено из таблицы изменений.</p> </li> <li> <p>I - вставлено из таблицы изменений.</p> </li> <li> <p>L - вставлено задачей полной загрузки.</p> </li> <li> <p>d - удалено из сравнения и применения.</p> </li> <li> <p>u - обновлено из сравнения и применения.</p> </li> <li> <p>i - вставлено из сравнения и применения.</p> </li> </ul> |
| hdr\_\_inserted\_timestamp | timestamp | Метка времени UTC первого добавления ключа. При использовании полной загрузки — время начала полной загрузки. |
| hdr\_\_modified\_timestamp | timestamp | Метка времени UTC применения последнего обновления. |

### Предыдущая таблица

Добавляются следующие поля заголовка.

Именование: &lt;INTERNAL\_SCHEMA&gt;.[&lt;PREFIX&gt;]&lt;TABLE\_NAME&gt;\_prior

Поля заголовка предыдущей таблицы

| Поле | Тип | Описание |
| --- | --- | --- |
| hdr\_\_key\_hash | varbinary(20) | Хэш всех первичных ключей записи.<br><br>Этот столбец не генерируется в задачах данных Витрина данных. |
| hdr\_\_key\_id | int64 | Последовательность, увеличивающаяся для каждой записи.<br><br>Этот столбец генерируется только в задачах данных Витрина данных. |
| hdr\_\_from\_timestamp | timestamp | Метка времени в UTC |
| hdr\_\_to\_timestamp | timestamp | Метка времени в UTC |
| hdr\_\_operation | string(1) | Последняя операция этой записи.<br><br><ul> <li> <p>D - удалено из таблицы изменений.</p> </li> <li> <p>U - обновлено из таблицы изменений.</p> </li> <li> <p>I - вставлено из таблицы изменений.</p> </li> <li> <p>L - вставлено начальной загрузкой.</p> </li> <li> <p>d - удалено из сравнения и применения.</p> </li> <li> <p>u - обновлено из сравнения и применения.</p> </li> <li> <p>i - вставлено из сравнения и применения.</p> </li> </ul> |
| hdr\_\_was\_current\_from\_timestamp | timestamp | Метка времени в UTC, когда запись впервые стала текущей. |
| hdr\_\_was\_current\_to\_timestamp | timestamp | Метка времени в UTC, когда запись в последний раз была текущей. |

### Таблица изменений

Именование: &lt;INTERNAL\_SCHEMA&gt;.[&lt;PREFIX&gt;]&lt;TABLE\_NAME&gt;\_ct

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

Поля заголовка таблицы изменений

| Поле | Тип | Описание |
| --- | --- | --- |
| hdr\_\_change\_identifier | varchar(50) | Идентификатор изменения — это строка, состоящая из двух частей:<br><br><ul> <li> <p>Метка времени начала выполнения пакета в миллисекундах с 1/1/1970 (10-значная строка)</p> </li> <li> <p>Последовательность изменений из шлюза репликации (35 символов)</p> </li> </ul> |
| hdr\_\_operation | varchar(1) | Последняя операция этой записи.<br><br><ul> <li> <p>D - удалено из таблицы изменений.</p> </li> <li> <p>U - обновлено из таблицы изменений.</p> </li> <li> <p>I - вставлено из таблицы изменений.</p> </li> <li> <p>d - удалено из сравнения и применения.</p> </li> <li> <p>u - обновлено из сравнения и применения.</p> </li> <li> <p>i - вставлено из сравнения и применения.</p> </li> </ul> |
| hdr\_\_timestamp | timestamp | Метка времени в UTC. |
| hdr\_\_key\_hash | binary(20) | Хэш всех первичных ключей записи.<br><br>Этот столбец не генерируется в задачах данных Витрина данных. |
| hdr\_\_key\_id | int64 | Последовательность, увеличивающаяся для каждой записи.<br><br>Этот столбец генерируется только в задачах данных Витрина данных. |

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

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

* Стандартное представление

* Динамическое представление

* Представление изменений

* Представление истории

* Динамическое представление истории

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

### Стандартное представление

Именование: &lt;EXTERNAL\_SCHEMA&gt;.[&lt;PREFIX&gt;]&lt;TABLE\_NAME&gt;

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

### Динамическое представление

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

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

Именование: &lt;EXTERNAL\_SCHEMA&gt;.[&lt;PREFIX&gt;]&lt;TABLE\_NAME&gt;&lt; Суффикс для динамических представлений&gt;

Поля заголовка таблицы

| Поле | Тип | Описание |
| --- | --- | --- |
| hdr\_\_key\_hash | varbinary(20) | Хэш всех первичных ключей записи. Формат хэша — SHA1. Столбцы разделяются символом возврата на одну позицию (backspace).<br><br>Этот столбец не генерируется в задачах данных Витрина данных. |
| hdr\_\_key\_id | int64 | Последовательность, увеличивающаяся для каждой записи.<br><br>Этот столбец генерируется только в задачах данных Витрина данных. |
| hdr\_\_from\_timestamp | timestamp | Метка времени в UTC<br><br><ul> <li> <p>Для данных, полученных из полной загрузки, это будет время начала полной загрузки.</p> </li> <li> <p>Для изменения, поступающего через таблицы изменений, это будет поле метки времени записи.</p> </li> </ul> |
| hdr\_\_operation | string(1) | Последняя операция этой записи.<br><br><ul> <li> <p>D - удалено из таблицы изменений.</p> </li> <li> <p>U - обновлено из таблицы изменений.</p> </li> <li> <p>I - вставлено из таблицы изменений.</p> </li> <li> <p>L - вставлено задачей полной загрузки.</p> </li> <li> <p>d - удалено из сравнения и применения.</p> </li> <li> <p>u - обновлено из сравнения и применения.</p> </li> <li> <p>i - вставлено из сравнения и применения.</p> </li> </ul> |
| hdr\_\_inserted\_timestamp | timestamp | Метка времени UTC первого добавления ключа. При использовании полной загрузки — время начала полной загрузки. |
| hdr\_\_modified\_timestamp | timestamp | Метка времени UTC применения последнего обновления. |
| hdr\_\_store | varchar(10) | Это указывает, где находится запись.<br><br><ul> <li> <p><span>CURRENT</span> - если запись находится в текущей физической таблице.</p> </li> <li> <p><span>CHANGES</span> - если запись находится в таблице изменений.</p> </li> </ul> |

### Представление изменений

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

Именование: &lt;EXTERNAL\_SCHEMA&gt;.[&lt;PREFIX&gt;]&lt;TABLE\_NAME&gt;\_changes

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

Поля заголовка представления изменений

| Поле | Тип | Описание |
| --- | --- | --- |
| hdr\_\_change\_identifier | string(50) | Идентификатор изменения — это строка, состоящая из двух частей:<br><br><ul> <li> <p>Метка времени начала выполнения пакета в миллисекундах с 1/1/1970 (10-значная строка)</p> </li> <li> <p>Последовательность изменений из шлюза репликации (35 символов)</p> </li> </ul> |
| hdr\_\_from\_timestamp | timestamp | Метка времени в UTC<br><br><ul> <li> <p>Для данных, полученных из полной загрузки, это будет время начала полной загрузки.</p> </li> <li> <p>Для изменения, поступающего через таблицы изменений, это будет поле метки времени записи.</p> </li> </ul> |
| hdr\_\_to\_timestamp | timestamp | Метка времени в UTC<br><br><ul> <li> <p>Для данных, полученных из полной загрузки, это будет время начала полной загрузки.</p> </li> <li> <p>Для изменения, поступающего через таблицы изменений, это будет поле метки времени записи.</p> </li> </ul> |
| hdr\_\_operation | string(1) | Последняя операция этой записи.<br><br><ul> <li> <p>D - удалено из таблицы изменений.</p> </li> <li> <p>U - обновлено из таблицы изменений.</p> </li> <li> <p>I - вставлено из таблицы изменений.</p> </li> <li> <p>L - вставлено задачей полной загрузки.</p> </li> <li> <p>d - удалено из сравнения и применения.</p> </li> <li> <p>u - обновлено из сравнения и применения.</p> </li> <li> <p>i - вставлено из сравнения и применения.</p> </li> </ul> |
| hdr\_\_timestamp | timestamp | Метка времени в UTC. |
| hdr\_\_key\_hash | binary(20) | Хэш всех первичных ключей записи.<br><br>Этот столбец не генерируется в задачах данных Витрина данных. |
| hdr\_\_key\_id | int64 | Последовательность, увеличивающаяся для каждой записи.<br><br>Этот столбец генерируется только в задачах данных Витрина данных. |

### Представление истории

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

Именование: &lt;EXTERNAL\_SCHEMA&gt;.[&lt;PREFIX&gt;]&lt;TABLE\_NAME&gt;&lt; Суффикс для представлений истории&gt;

Поля заголовка представления истории

| Поле | Тип | Описание |
| --- | --- | --- |
| hdr\_\_key\_hash | binary(20) | Хэш всех первичных ключей записи.<br><br>Этот столбец не генерируется в задачах данных Витрина данных. |
| hdr\_\_key\_id | int64 | Последовательность, увеличивающаяся для каждой записи.<br><br>Этот столбец генерируется только в задачах данных Витрина данных. |
| hdr\_\_from\_timestamp | timestamp | Метка времени в UTC<br><br><ul> <li> <p>Для данных, полученных из полной загрузки, это будет время начала полной загрузки.</p> </li> <li> <p>Для изменения, поступающего через таблицы изменений, это будет поле метки времени записи.</p> </li> </ul> |
| hdr\_\_to\_timestamp | timestamp | Метка времени в UTC<br><br><ul> <li> <p>Для данных, полученных из полной загрузки, это будет время начала полной загрузки.</p> </li> <li> <p>Для изменения, поступающего через таблицы изменений, это будет поле метки времени записи.</p> </li> </ul> |
| hdr\_\_was\_current\_from\_timestamp | timestamp | Метка времени в UTC, когда запись впервые стала текущей. |
| hdr\_\_was\_current\_to\_timestamp | timestamp | Метка времени в UTC, когда запись в последний раз была текущей. |
| hdr\_\_store | varchar(7) | Это указывает, где находится запись.<br><br><ul> <li> <p><span>CURRENT</span> - если запись находится в текущей физической таблице.</p> </li> <li> <p><span>PRIORS</span> - если запись находится в предыдущей таблице с историческими данными.</p> </li> </ul> |
| hdr\_\_operation | string(1) | Последняя операция этой записи.<br><br><ul> <li> <p>D - удалено из таблицы изменений.</p> </li> <li> <p>U - обновлено из таблицы изменений.</p> </li> <li> <p>I - вставлено из таблицы изменений.</p> </li> <li> <p>L - вставлено задачей полной загрузки.</p> </li> <li> <p>d - удалено из сравнения и применения.</p> </li> <li> <p>u - обновлено из сравнения и применения.</p> </li> <li> <p>i - вставлено из сравнения и применения.</p> </li> </ul> |
| hdr\_\_deleted | bit | Указывает, является ли запись мягко удаленной, на основе того, является ли hdr\_\_operation D или d. |

### Динамическое представление истории

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

Именование: &lt;EXTERNAL\_SCHEMA&gt;.[&lt;PREFIX&gt;]&lt;TABLE\_NAME&gt;&lt; Суффикс для динамических представлений истории&gt;

Поля заголовка динамического представления истории

| Поле | Тип | Описание |
| --- | --- | --- |
| hdr\_\_key\_hash | binary(20) | Хэш всех первичных ключей записи.<br><br>Этот столбец не генерируется в задачах данных Витрина данных. |
| hdr\_\_key\_id | int64 | Последовательность, увеличивающаяся для каждой записи.<br><br>Этот столбец генерируется только в задачах данных Витрина данных. |
| hdr\_\_store | varchar(10) | Это указывает, где находится запись.<br><br><ul> <li> <p><span>CURRENT</span> - если запись находится в текущей физической таблице.</p> </li> <li> <p><span>PRIORS</span> - если запись находится в предыдущей таблице с историческими данными.</p> </li> <li> <p><span>CHANGES</span> - если запись находится в таблице изменений.</p> </li> </ul> |
| hdr\_\_operation | string(1) | Последняя операция этой записи.<br><br><ul> <li> <p>D - удалено из таблицы изменений.</p> </li> <li> <p>U - обновлено из таблицы изменений.</p> </li> <li> <p>I - вставлено из таблицы изменений.</p> </li> <li> <p>L - вставлено задачей полной загрузки.</p> </li> <li> <p>d - удалено из сравнения и применения.</p> </li> <li> <p>u - обновлено из сравнения и применения.</p> </li> <li> <p>i - вставлено из сравнения и применения.</p> </li> </ul> |
| hdr\_\_deleted | bit | Указывает, является ли запись мягко удаленной, на основе того, является ли hdr\_\_operation D или d. |