Операция архивации ревизий (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

Подготовка к запуску

  1. Убедитесь, что в системных параметрах задано хранилище архива (nodes) или включён флаг truncate.

  2. При необходимости настройте общие лимиты потоков (threads, threads.cluster) и другие параметры через раздел "Параметры системы".

  3. Перейдите в раздел "Операции" и создайте новую операцию типа "Архивация ревизий".

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

  5. Запустите операцию. Статус выполнения можно отслеживать в списке операций, а также в логах 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 миллисекунду). Теперь такие ревизии корректно переносятся в архив.

  • Рекомендуется запускать операцию в периоды минимальной нагрузки на систему, так как она создает дополнительную нагрузку на базу данных и дисковую подсистему.