Операция профилирования данных (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 границам профилей.
Параметры операции
Имя пользователя (поле ввода). Логин учетной записи, от имени которой будут выполняться действия операции.
Размер блока (поле ввода). Размер блока загружаемых данных. По умолчанию 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 позволяет распределить выполнение операции по нодам кластера.