Операция профилирования данных (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 позволяет распределить выполнение операции по нодам кластера.