Операция профилирования данных (profiledataJob)
Операция профилирования данных предназначена для периодического подсчета статистики по заданным метрикам:
Разрезы по количеству исходящих связей и объему их данных (вес всех строк связей в БД). Учитываются таблицы relation_etalons, relation_from_keys, relation_origins, relation_to_keys, relation_vistory.
Разрезы по количеству активной классификации и объему их данных (стоимость всех строк классификации в БД). Учитываются таблицы classification_etalons, classification_keys, classification_origins, classification_vistory. Эта часть является опциональной. Если модули классификаций не входят в сборку, то подсчет по классификациям проводится не будет.
Разрезы по объему основных данных записей (стоимость всех строк записей в БД). Учитываются таблицы record_etalons, record_external_keys, record_origins, record_vistory.
По каждому профилю собираются три метрики: количество записей, которые попали в категорию, доля относительная всего объема записей/связей/классификаций и объема байта записей/связей/классификаций.
Операция состоит из двух шагов:
Шаг сбора метрик по записям: через рендеринг вызов выполняются запросы в БД, которые подсчитывают объем записей, связей и классификаций по каждому эталону записи.
Шаг агрегации метрик: через рендеринг вызовов выполняются запросы в таблицы с собранной статистикой, аггрегирующие данные по заданным на UI границам профилей.
Параметры операции
Имя пользователя (поле ввода). Логин учетной записи (рекомендуется к заполнению). Определяет, с правами какой учетной записи будет запускаться операция. Если поле пустое, то:
Операция выполняется от имени пользователя, фактически запустившего операцию, но если при запущенной без указания пользователя операции произошел выход из системы (случайный или принудительный при потере соединения), то операция завершится с ошибкой.
При запуске по Cron-выражению у операции будут полные права на любой реестр/справочник; при запуске через интерфейс у операции будут права текущей учетной записи. Для учетной записи оператора данных может понадобиться настроить права на реестры/справочники. Если логин не указан, то операция запуститься от имени пользователя, который ее запустил.
Размер блока (поле ввода). Размер блока загружаемых данных. По умолчанию 1024.
Хранить только последние запуски в количестве (поле ввода). Если количество указано, то таблицы с полной статистикой по записям за все кроме последних N запусков операции будут удалены.
Профилировать объекты модели (выпадающий список). Параметр позволяет выбрать реестры/справочники для которых будет собрана статистика. По умолчанию профилируются все сущности.
Границы профилей в процентах от объема самой тяжелой записи (поле ввода). Позволяет перечислить необходимые границы профилей в разрезе по объему данных. Границы задаются через запятую в процентах от веса самой тяжелой записи в системе.
Границы профилей по количеству связей (поле ввода). Позволяет перечислить необходимые границы профилей в разрезе по количеству связей. Границы задаются через запятую.
Границы профилей по количеству классификаций (поле ввода). Позволяет перечислить необходимые границы профилей в разрезе по количеству классификаций. Границы задаются через запятую.
Результаты профилирования
Результатом выполнения операции являются две таблицы в БД в схеме com_universe_mdm_hpe_job_profile_data:
Факт запуска операции фиксируется в таблице profile_execution.
Агрегированные по заданным профилям метрики сохраняются в таблице profile_digest.
Метрики, сохраненные в таблице profile_digest привязаны к факту запуска из таблицы profile_execution по execution_id.
Пример подсчитанных метрик
execution_id |
indicator_name |
from_bound |
to_bound |
items_count |
volume |
total_size |
70 |
records |
0 |
25 |
15 |
0.00015 |
6985 |
70 |
relations |
11 |
20 |
112 |
0.10224 |
807520 |
70 |
classifications |
11 |
20 |
16 |
0.03997 |
101152 |
Интерпретировать данные результаты следует следующим образом:
В профиль по записям размером от 0 до 25% объема от самой тяжелой записи в системе попало 15 записей, которые составляют 0.00015 объема от общего веса всех записей в системе, что равно 6985 байтам.
В профиль по связям, попало 112 записей, у которых имеется от 11 до 20 исходящих связей. Объем этих связей составляет 0.10224 от всего веса связей в системе, что равно 807520 байтам.
В профиль по классификациям, попало 16 записей, у которых имеется от 11 до 20 классификаций. Объем этих классификаций составляет 0.03997 от всего веса классификаций в системе, что равно 101152 байтам.
Помимо агрегированных результатов, в таблицах с именем profile_data_{operation_id} можно найти подсчитанные объемы записей, связей и количества связей по каждому эталону записи. В схеме com_universe_mdm_hpe_job_profile_classifiers в таблицах с именем profile_classifications_{operation_id} можно найти аналогичную статистику по размеру и количеству классификаций у каждой записи. Таблицы могут быть удалены автоматически по итогам работы операции, если задан параметр "Хранить только последние запуски в количестве".
Технические детали
Операция выполняется в многопоточном режиме, количество потоков по умолчанию – 2 (рекомендуемое).
Управление потоками лежит на Hazelcast. Задать количество потоков можно в backend.properties:
com.universe.mdm.hpe.job.profile.data.threads = ${JOB_PROFILE_DATA_THREADS:2}
Также использование Hazelcast позволяет распределить выполнение операции по нодам кластера.