Операция миграции данных из MDM 5.x в 6.х (migrateDataJob)

Операция для переноса данных из MDM 5.x в MDM 6.х.

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

  • Имя пользователя (поле ввода). Логин учетной записи, используемый для операции.

  • URL базы данных (поле ввода). URL базы данных, из которой производится миграция.

  • Перенести все ревизии данных (флаг). Если включен, то загружаются все данные (origin_vistory) по связям и записям, кроме статусов. Если выключен, то загружаются только актуальные данные, т.е. попадающие в активную зону периодов актуальности.

  • Размер блока (поле ввода). Размер блока загружаемых данных. По умолчанию 512.

Примечания:

  • Операция переносит только объекты БД.

  • Записи не сохраняются в индекс, поэтому после переноса нужен запуск операции переиндексации (reindexDataJob).

  • Операция забирает все данные при каждом запуске. Запускать повторно нельзя, иначе второй запуск будет выдавать ошибки.

  • Если в 6.х имеются ключи, которые мешают вставке, то могут возникнуть ошибки.

  • После миграции убедитесь, что системные источники данных совпадают в 5.х и 6.х. Совпадение необходимо для успешной переиндексации мигрированных данных.

Механизм работы параметра "Размер блока" (blockSize)

Все количество обрабатываемых записей делится на части по blockSize записей.

Затем в каждой части обрабатывается одним тредом по com.unidata.mdm.job.migrate.data.commit.interval записей (в памяти держится информация по этому количеству записей, при переходе к следующим записям память очищается), пока не кончатся записи.

Параметр com.unidata.mdm.job.migrate.data.commit.interval как правило, не нуждается в редактировании. Рекомендуемого значения 1024 достаточно для большинства задач. Чем больше этот параметр, тем больше памяти может быть занято в один момент времени. Если этот параметр больше, чем blockSize, то фактически этот параметр будет равен blockSize.

com.unidata.mdm.job.migrate.data.threads - количество одновременно обрабатываемых тредов.

Параметры com.unidata.mdm.job.migrate.data.commit.interval и com.unidata.mdm.job.migrate.data.threads задаются в backend.properties.

Таким образом, следует выбирать com.unidata.mdm.job.migrate.data.threads по количеству логических ядер процессора (использовать равное или меньшее число, в зависимости от наличия другой нагрузки на процессор).

При указании небольшого blockSize легче отслеживать прогресс операции через UI (менеджер запусков > выбрать запуск > количество выполненных шагов). С точки зрения производительности лучше использовать достаточно большой blockSize, чтобы количество мигрируемых записей было примерно равно N * blockSize * com.unidata.mdm.job.migrate.data.threads, где N – не слишком большое натуральное число, например, 1.

Если blockSize слишком большой (например, 500000), то часть данных может не записаться, но при этом операция завершится успешно.

Настройка blockSize необходима для баланса между объемом обрабатываемых данных и количеством потоков. Плохо, когда создается очень много потоков, и так же плохо когда 1 поток обрабатывает слишком много данных сразу. Поэтому желательно выбирать средние значения исходя из доступных ресурсов сервера.

Также blockSize необходимо выбирать в соответствии с общим количеством данных чтобы количество партиций не было слишком большим. На таких больших данных, как в справочнике с адресами, оптимальным вариантом является 500-2000 партиций.

Обработка данных происходит последовательно: записи > связи > классификаторы > бизнес-процессы > матчинг. Сначала завершается обработка одного типа данных, затем происходит переход к другому. Обрабатываются те типы данных, которые есть в наличии.