Навигация:  МОДУЛЬ "РЕПЛИКАЦИЯ" > ОПИСАНИЕ АЛГОРИТМОВ ОБРАБОТКИ ДАННЫХ >

Алгоритм обработки входящих данных

Предыдущая страницаВернуться в начало главыСледующая страница

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

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

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

Таблица маппинга (RM_KEYS_<имя_БД>) создается системой автоматически для каждой удаленной базы данных. В этих таблицах система хранит информацию о соответствии ID записей в локальной базе данных и их ID в удаленных базах, а также дату и время последней синхронизации записи. Такое соответствие устанавливается при первой репликации записи, и в дальнейшем используется при поиске записей. Этот механизм значительно ускоряет процесс репликации при обработке входящих пакетов.

Затем для всех записей, для которых не было найдено соответствия по маппингу, производится поиск соответствующих им записей по ключам поиска. При этом для каждой записи выполняется запрос по ключу поиска, заданном в настройках сущности. Если соответствующая запись не найдена по первому ключу поиска, то берется второй ключ и т.д. Если по ключам поиска будет найдено больше одной локальной записи, то входящая запись будет помечена как ошибочная и ее дальнейшее обновление будет прервано.

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

При обновлении существующих записей система проверяет дату изменения входящей записи и дату изменения локальной записи. Если локальная запись изменилась позже, то она не будет обновляться. В этом случае считается, что локальные изменения имеют больший приоритет.

При обновлении и добавлении записей, поля записей обновляются в соответствии с правилами обновления полей, заданными в схеме входа на вкладке "Поля".

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

Когда работа с входящим пакетом завершена, менеджер репликации формирует для удаленного сервера ответ, в котором передается информация о синхронизированных записях и новых ключах маппинга. Получение этого пакета удаленным сервером является для него подтверждением того, что пакет был получен, обработан и возвращенные записи были синхронизированы.