Обмен данными между базами производится следующим образом:
• | В базе-источнике система определяет список изменённых объектов за время, прошедшее с предыдущего сеанса выгрузки данных. |
• | По данному списку система формирует XML-пакет, который передается в базу-приемник. |
• | Для того чтобы сформировать пакет система обращается к измененным объектам базы данных. При обращении система блокирует данные объекты. |
• | XML-пакет передается в базу-приемник. |
• | В базе-приемнике XML-пакет разворачивается и изменения, содержащиеся в нем, вносятся в базу. |
• | Все изменения записываются в рамках одной транзакции, при этом все измененные объекты блокируются. |
Из механизма обмена вытекают следующие рекомендации по настройке:
• | С целью минимизации блокировок необходимо или уменьшать длительность транзакции, или выполнять транзакцию в момент минимальной загрузки системы. Поэтому обмен данными рекомендуется проводить или небольшими пакетами с максимально возможной частотой, или же проводить его в ночное время, когда нагрузка на систему минимальна. |
• | Для того чтобы снизить нагрузку на систему при передаче/получении данных, следует передавать только необходимую информацию. Для этого требуется настроить план обмена для передачи только необходимых объектов. |
• | Для того чтобы реализовать "быстрый" вариант обмена, необходим быстрый канал передачи информации. Период обмена не должен быть меньше времени, необходимого на полный цикл обмена при "пессимистичном" варианте. Т.е. за период обмена базы должны успеть обменяться информацией, иначе возможен вариант, когда начинается следующая выгрузка данных, а при этом подтверждение о принятии изменений еще не получено. В этом случае в новую выгрузку попадут все изменения из предыдущей выгрузки, что приведет к увеличению пакета, что в свою очередь опять увеличит опоздание и т.д. |
См. также: