Операция архивации ревизий (archivevistorydatajob)

Операция предназначена для изоляции (архивации) устаревших ревизий записей, связей и классификаций. Под устаревшими понимаются ревизии, которые не влияют на вычисляемый эталон на текущую дату (на таймлайне обновления записи) или на любую дату на таймлайне периодов актуальности.

Основные цели:

  • Повышение производительности получения актуального вида записи (вычисления эталона) за счет уменьшения количества обрабатываемых ревизий.

  • Возможность раздельного хранения актуальных и архивных ревизий, что снижает занимаемое дисковое пространство в основном хранилище.

Предупреждение

Операция отключена по умолчанию и не будет запускаться, если не сконфигурировано хранилище для архивированных ревизий и при этом не включена опция "Удалять ревизии вместо архивирования".

Параметры операции

Настройка операции выполняется через файл backend.properties. Часть параметров доступна для просмотра и изменения в интерфейсе (раздел "Параметры системы").

Параметры операции

Отключение операции (флаг)

  • Ключ: com.universe.mdm.hpe.job.archive.vistory.data.disabled

  • Значение по умолчанию: true

  • Если флаг установлен в false, операция становится активной. Доступно редактирование через UI.

Cron-выражение запуска операции

  • Ключ: com.universe.mdm.hpe.job.archive.vistory.data.cronex

  • Значение по умолчанию: 0 0 0 * * ? (каждый день в полночь)

  • Недоступно для редактирования через UI, но можно увидеть значение.

Размер блока операции

  • Ключ: com.universe.mdm.hpe.job.archive.vistory.data.block.size

  • Значение по умолчанию: 4000

  • Количество записей/связей/классификаций, обрабатываемых за одну итерацию. Доступно редактирование через UI.

Количество ревизий, записываемых одним коммитом

  • Ключ: com.universe.mdm.hpe.job.archive.vistory.data.commit.interval

  • Значение по умолчанию: 1024

  • Количество ревизий, которые переносятся в архив и удаляются из основных таблиц в рамках одной транзакции. Недоступно в UI.

Количество потоков выполнения на одном узле

  • Ключ: com.universe.mdm.hpe.job.archive.vistory.data.threads

  • Значение по умолчанию: 1

  • Недоступно в UI.

Число ревизий, сверх которого ревизии будут архивированы

  • Ключ: com.universe.mdm.hpe.job.archive.vistory.data.max.revisions

  • Значение по умолчанию: 3

  • Максимальное количество ревизий, оставляемых в основных таблицах для каждого ориджина (исходной записи/связи/классификации). Если у записи несколько периодов актуальности, общее количество ревизий может превысить заданное значение. Доступно редактирование через UI.

Узлы хранения архивированных ревизий

  • Ключ: com.universe.mdm.hpe.job.archive.vistory.data.nodes

  • Значение по умолчанию: не задано (пример: 0:node0:postgres@#[пароль]:postgres@postgres-mdm:5432)

  • Конфигурация подключения к базе данных для хранения архивных ревизий (формат аналогичен org.unidata.mdm.data.nodes). Если параметр не задан, операция не запускается (если также не включена опция удаления вместо архивирования).

Удалять ревизии вместо архивирования (флаг)

  • Ключ: com.universe.mdm.hpe.job.archive.vistory.data.truncate

  • Значение по умолчанию: false

  • Если флаг включен, ревизии не переносятся в архив, а безвозвратно удаляются. Доступно редактирование через UI.

Параметры пула соединений для архива данных

  • Минимальное количество соединений: com.universe.mdm.hpe.job.archive.vistory.data.nodes.minPoolSize = 1

  • Максимальное количество соединений: com.universe.mdm.hpe.job.archive.vistory.data.nodes.maxPoolSize = 4

Параметры пула соединений для архива классификаций

  • Минимальное количество соединений: com.universe.mdm.hpe.job.archive.vistory.classifiers.nodes.minPoolSize = 1

  • Максимальное количество соединений: com.universe.mdm.hpe.job.archive.vistory.classifiers.nodes.maxPoolSize = 4

Примечания:

  • Параметры commit.interval, threads, а также настройки пулов соединений недоступны для изменения через UI и могут быть сконфигурированы только в backend.properties. Остальные параметры (disabled, cronex, block.size, max.revisions, truncate) отображаются в разделе "Параметры системы" и могут быть изменены через интерфейс.

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

  1. Убедитесь, что параметр com.universe.mdm.hpe.job.archive.vistory.data.disabled установлен в false.

  2. При необходимости настройте CRON-выражение для желаемой периодичности (рекомендуется не чаще раза в неделю, оптимально – раз в месяц).

  3. Обязательно укажите корректное значение параметра com.universe.mdm.hpe.job.archive.vistory.data.nodes – адрес базы данных для хранения архивных ревизий. Если этого не сделать, операция не запустится (если также не включена опция truncate).

  4. Укажите количество потоков (threads) и размер блока (block.size) в соответствии с нагрузкой на систему. Увеличение потоков может ускорить архивацию, но повысит потребление ресурсов.

  5. Задайте значение max.revisions – сколько последних ревизий должно оставаться в основных таблицах. Обратите внимание, что это значение применяется к каждому ориджину отдельно; если у записи несколько периодов актуальности, общее количество ревизий может превышать заданное.

  6. При необходимости включите опцию truncate, если требуется не архивировать, а безвозвратно удалять старые ревизии. Это действие необратимо!

  7. Проверьте корректность настроек в разделе Параметры системы.

  8. Перезапустите сервер приложений для применения изменений в backend.properties.

После запуска операции статус ее выполнения можно отслеживать в логах MDM на узле, где выполнялась задача, а также в системной таблице batch_job_execution. Архивированные ревизии будут размещены в схеме, указанной в параметре nodes (по умолчанию com_universe_mdm_hpe_job_archive_vistory_data для данных и com_universe_mdm_hpe_job_archive_vistory_classifiers для классификаций).

Важные ограничения и рекомендации

  • Операция не запускается автоматически, если не сконфигурировано хранилище для архива и не включена опция truncate.

  • Включение опции truncate приводит к полной потере архивируемых ревизий. Восстановить историю записи для дат, попадающих в удалённый диапазон, будет невозможно.

  • Если операция отключена через UI или параметр disabled, она не будет выполняться, даже если настроено хранилище архива.

  • Архив ревизий поддерживает шардирование - конфигурация шардов должна совпадать с конфигурацией актуального хранилища (параметр org.unidata.mdm.data.shards). При первом запуске с указанием архива убедитесь, что значение shards_number в БД (таблица org_unidata_mdm_data.cluster_info) совпадает с передаваемым в параметрах шардирования.

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

  • Статус выполнения операции в реальном времени не отображается в UI; для контроля используйте журналы приложения.