Процедура работы импорта из источника JDBC в кластерном режиме включает следующие шаги:
- Master-узел загружает из базы данных первые 20480 строк по умолчанию. Количество строк настраивается параметром конфигурации plm.import.fetch_row_count.
- Загруженные данные рассылаются по Slave-узлам.
- Создаются (либо дополняются, если это обновление) файлы мультисфер на дисках Master-узла и Slave-узлов. Каждый узел кластера самостоятельно формирует эти файлы.
- Параллельно пункту 3 идет загрузка следующих 20480 строк, которые в совокупности составляют блок. По умолчанию количество блоков – 2, настраивается параметром конфигурации plm.import.datasource_blocks.
Пункты 1–4 повторяются до исчерпания загружаемых данных. После этого происходит построение сортировочного индекса на Master-узле и Slave-узлах.
Параметры plm.import.fetch_row_count и plm.import.datasource_blocks можно подобрать таким образом, что, пока идет расчет одного блока, загружаются следующие N блоков. Это позволит полностью утилизировать возможности сети и БД и сократить время обновления.
Расчеты, связанные с формированием файлов на диске, производятся на каждом из узлов системы. Это позволяет сократить время готовности мультисферы к использованию:
- В первом случае расчеты происходят на каждом из узлов параллельно, и файлы мультисфер готовы к использованию примерно в одно время (загрузка – рассылка – расчеты);
- Во втором случае к времени готовности МС добавляется время на упаковку и распаковку данных после завершения обновления на мастере (загрузка – расчеты – запаковка всех данных для узлов – рассылка готовых данных по узлам – распаковка данных на узлах).
В случае, если на одном из узлов произошло прерывание обновления, повторное полное обновление не восстановит работоспособность мультисферы на проблемном узле, поскольку полное обновление требует одинакового исходного состояния. Таким образом, восстановить мультисферу на проблемном узле возможно только в ручном режиме: переносом файлов мультисферы с другого узла, на котором обновление выполнилось успешно.