Операция архивации ревизий (archivevistorydatajob)
Операция предназначена для изоляции (архивации) устаревших ревизий записей, связей и классификаций. Под устаревшими понимаются ревизии, которые не влияют на вычисляемый эталон на текущую дату или на любую дату на таймлайне периодов актуальности.
Основные цели:
Повышение производительности получения актуального вида записи (вычисления эталона) за счет уменьшения количества обрабатываемых ревизий.
Возможность раздельного хранения актуальных и архивных ревизий, что снижает занимаемое дисковое пространство в основном хранилище.
Операция запускается вручную или по расписанию через раздел "Операции", как и другие системные операции. При создании операции можно гибко настроить область обработки: выбрать конкретные реестры/справочники, классификаторы, шарды, а также задать раздельные пороги для данных с одним и несколькими периодами актуальности.
Предупреждение
Для работы операции необходимо сконфигурировать хранилище для архивированных ревизий (параметр nodes) либо включить опцию truncate (безвозвратное удаление). Если не задано ни то, ни другое, операция завершится с ошибкой.
Параметры операции
При создании экземпляра операции в интерфейсе доступны следующие параметры:
ID операции - позволяет переопределить системный идентификатор.
Размер блока эталонных данных - размер блока для разбиения эталонных данных (записей/связей/классификаций).
Размер блока ревизий данных - количество ревизий, переносимых в архив за одну операцию записи.
Пропустить данные с одним периодом - если включено, данные с единственным периодом актуальности не обрабатываются.
Число оставляемых ревизий для данных с одним периодом - максимальное количество ревизий, которое остается в основных таблицах для записей с одним периодом. Ревизии сверх этого числа будут архивированы.
Пропустить данные с несколькими периодами - если включено, многопериодные данные пропускаются (их обработка медленнее).
Число оставляемых ревизий для многопериодных данных - аналогичный порог для данных с несколькими периодами актуальности.
Шарды данных - номера шардов, по которым будет выполняться операция. Позволяет сузить объём обрабатываемых данных.
Реестры/справочники - перечень реестров и справочников для обработки. Если не указаны, обрабатываются все доступные.
Архивировать ревизии записей - включает/выключает архивирование ревизий записей для выбранных реестров/справочников.
Архивировать ревизии связей - включает/выключает архивирование ревизий исходящих связей выбранных реестров.
Классификаторы - перечень классификаторов для обработки. Если не указаны, обрабатываются все.
Архивировать ревизии классификаций - включает/выключает архивирование ревизий классификаций для выбранных классификаторов.
Системные параметры
Общие настройки, действующие на все экземпляры операции, хранятся в файле backend.properties. Часть из них доступна для просмотра и изменения в разделе "Параметры системы" в группе "Настройки операции архивирования ревизий".
Максимальное число параллельных потоков на узел
Ключ:
com.universe.mdm.hpe.job.archive.vistory.data.threadsЗначение по умолчанию:
1Доступен в UI. Ограничивает количество одновременно обрабатываемых блоков данных на одном узле для всех запущенных операций архивации.
Максимальное число параллельных потоков в кластере
Ключ:
com.universe.mdm.hpe.job.archive.vistory.data.threads.clusterЗначение по умолчанию:
1Доступен в UI. Ограничивает общее количество параллельно обрабатываемых блоков данных в рамках всего кластера.
Узлы хранения архивированных ревизий
Ключ:
com.universe.mdm.hpe.job.archive.vistory.data.nodesЗначение по умолчанию: не задано (пример:
0:node0:postgres@#[пароль]:postgres@postgres-mdm:5432)Доступен в UI только для просмотра (не редактируется). Конфигурация подключения к базе данных для хранения архивных ревизий (формат аналогичен
org.unidata.mdm.data.nodes).
Удалять ревизии вместо архивирования (флаг)
Ключ:
com.universe.mdm.hpe.job.archive.vistory.data.truncateЗначение по умолчанию:
falseДоступен в UI. Если включен, ревизии не переносятся в архив, а безвозвратно удаляются.
Параметры пула соединений для архива данных (недоступны в UI)
Минимальное количество соединений:
com.universe.mdm.hpe.job.archive.vistory.data.nodes.minPoolSize = 1Максимальное количество соединений:
com.universe.mdm.hpe.job.archive.vistory.data.nodes.maxPoolSize = 4
Параметры пула соединений для архива классификаций (недоступны в UI)
Минимальное количество соединений:
com.universe.mdm.hpe.job.archive.vistory.classifiers.nodes.minPoolSize = 1Максимальное количество соединений:
com.universe.mdm.hpe.job.archive.vistory.classifiers.nodes.maxPoolSize = 4
Подготовка к запуску
Убедитесь, что в системных параметрах задано хранилище архива (
nodes) или включён флагtruncate.При необходимости настройте общие лимиты потоков (
threads,threads.cluster) и другие параметры через раздел "Параметры системы".Перейдите в раздел "Операции" и создайте новую операцию типа "Архивация ревизий".
Заполните параметры операции: укажите целевые реестры/справочники и классификаторы, задайте пороги оставляемых ревизий, при необходимости ограничьте шарды.
Запустите операцию. Статус выполнения можно отслеживать в списке операций, а также в логах MDM и системной таблице
batch_job_execution.
По завершении архивированные ревизии размещаются в схеме, указанной в nodes (по умолчанию com_universe_mdm_hpe_job_archive_vistory_data для данных и com_universe_mdm_hpe_job_archive_vistory_classifiers для классификаций).
Важные ограничения и рекомендации
Если не заданы ни
nodes, ниtruncate, операция завершится с ошибкой.Включение
truncateприводит к полной и необратимой потере архивируемых ревизий. Восстановить историю записи для дат, попадающих в удалённый диапазон, будет невозможно.Архив ревизий поддерживает шардирование. Конфигурация шардов должна совпадать с конфигурацией актуального хранилища (параметр
org.unidata.mdm.data.shards). При первом запуске убедитесь, что значениеshards_numberв БД (таблицаorg_unidata_mdm_data.cluster_info) соответствует передаваемому в параметрах.Операция выполняет упрощенную проверку возможности архивации для данных с одним периодом актуальности - это значительно ускоряет обработку по сравнению с многопериодными данными.
Устранена ситуация, когда ревизия не архивировалась из-за микроскопического разрыва между соседними периодами (разница в 1 миллисекунду). Теперь такие ревизии корректно переносятся в архив.
Рекомендуется запускать операцию в периоды минимальной нагрузки на систему, так как она создает дополнительную нагрузку на базу данных и дисковую подсистему.