Механизм репликации позволяет организовать работу системы сразу на нескольких серверах. Это бывает необходимо, когда организация имеет распределенную структуру или сеть филиалов, которые должны работать с информационной системой, но для которых доступ к центральному серверу в режиме online невозможен из-за отсутствия линий связи или из-за их недостаточной пропускной способности. Кроме того, распределение системы по нескольким серверам при наличии большого количества пользователей, имеющих доступ к системе, позволяет уменьшить нагрузку на центральный сервер и тем самым увеличить производительность системы.
Рассмотрим пример организации с территориально-распределенной структурой:
Серверы, участвующие в процессе репликации, схематически можно представить в виде дерева, корневой вершиной которого является Центральный сервер.
В механизме репликации IS-Builder выделяется две категории серверов: главный и вторичный. Каждый главный сервер может иметь несколько вторичных серверов. Обмен данными может производиться только между главным и вторичным серверами; вторичные серверы могут обмениваться между собой данными только через главный сервер. Вторичный сервер содержит некоторое подмножество данных информационной системы, а главный сервер содержит данные всех вторичных серверов, то есть все данные информационной системы.
При обмене данными со вторичными серверами главный сервер может обмениваться не всеми данными. Например, в целях конфиденциальности и минимизации объема передаваемых данных из центрального офиса организации (главный сервер) в филиал (вторичный сервер) должны приходить только те данные, которые относятся к этому филиалу.
Существует два способа разграничения данных между главным и вторичными серверами:
• | по компонентам («вертикальное» разграничение) – позволяет задать перечень доступных компонент для каждого вторичного сервера; |
• | по фильтраторам («горизонтальное» разграничение) – позволяет задать перечень доступных записей в компоненте. |
Существует два типа сеансов обмена данными между главным и вторичными серверами:
• | обмен измененными данными; |
В случае обмена измененными данными вторичный и главный серверы обмениваются только изменениями, проведенными с момента последнего сеанса репликации. Инициатором начала сеанса обмена является вторичный сервер. Сеанс обмена измененными данными состоит из этапов, последовательность которых должна строго соблюдаться:
1. | Подготовка пакета репликации (измененные данные) на вторичном сервере для главного сервера. |
2. | Транспортировка пакета репликации на главный сервер. |
3. | Прием пакета репликации на главном сервере. |
4. | Подготовка пакета репликации (измененные данные) на главном сервере для вторичного сервера. |
5. | Транспортировка пакета репликации на вторичный сервер. |
6. | Прием пакета репликации на вторичном сервере. |
Бывают случаи, когда необходимо провести обмен полными данными. Например, при изменении состава фильтров реплицируемых компонент. Сеанс обмена полными данными проводится в той же последовательности, что и обмен измененными данными. Отличие заключается в том, что с главного на вторичный сервер передаются полные данные.
Средства переноса пакетов репликации могут быть любыми: электронная почта, средства удаленного доступа к серверу или перенос файлов на внешних носителях.
Существует несколько методов проведения репликации:
• | репликация в ручном режиме. Бывает необходима при первоначальной настройке процесса репликации, в случае возникновения каких-нибудь проблем, или когда серверы не могут обмениваться пакетами репликации автоматически. Например, серверы находятся вне локальной сети, и нет доступа в Интернет. При проведении репликации в ручном режиме можно последовательно проводить передачу и прием данных, контролируя и устраняя все возникающие ошибки; |
• | репликация в автоматическом режиме: |
При работе с одним сервером возможные ошибки контролируются на этапе ввода данных. Например, неуникальные значения ключевых полей, одновременное изменение одной записи разными пользователями. При параллельной работе на нескольких серверах контроль ошибок осуществляется на каждом сервере независимо, поэтому при обмене данными между главным и вторичным серверами возможно возникновение конфликтов. Основная масса конфликтных ситуаций возникает, когда при объединении данных двух серверов может быть нарушена логическая или ссылочная целостность данных, например, на одном сервере удалили запись, а на другом ее изменили, или, например, когда одна и та же запись была изменена на двух серверах.
Задачей репликации является полная синхронизация данных между серверами информационной системы при условии разрешения всех конфликтных ситуаций. Подробнее о конфликтах и способах их разрешения см. раздел «Конфликтные ситуации».