Репликация и After-Image экстенты
Все изменения в базе данных записываются как AI-заметки в AI-блоки. Сервер репликации считывает AI-блоки и, используя TCP/IP, отправляет данные агенту репликации. Агент в свою очередь, применяет AI-заметки, содержащиеся в AI-блоках, к target-базе.
Когда для базы данных активирован OE Replication, но при этом механизм в силу определенных причин не выполняет копирования, экстенты After-Image должны обеспечить хранение всех изменений в source-базе, пока процесс копирования не будет восстановлен. Как только OE Replication будет перезапущен, все накопленные нескопированные данные в AI-экстентах будут скопированы. Для этого все AI-данные должны оставаться доступными, чтобы OE Replication смог корректно их обработать. Сразу после обработки AI-экстенты будут помечены для повторного использования менеджером базы данных. Полное разблокирование AI-экстента для повторного использования может быть выполнено с помощью следующей команды: rfutil db-name -C aimage empty
Все операции изменения source-базы генерируют AI-заметки, записываемые в AI-блоки, которые передаются агенту репликации. Состояние AI-экстентов исходной базы данных зависит от того, как происходит копирование между исходной и целевой базой данных. Пока копирование происходит в нормальном режиме, AI-экстенты будут архивироваться и освобождаться. Как только репликация будет нарушена, AI-экстенты исходной базы данных по-прежнему будут заполняться, но их статус будет оставаться LOCKED до тех пор, пока копирование не возобновится. Поэтому в таких ситуациях, необходимо помнить, что AI-экстенты могут вырасти до размеров намного больших, чем в случае, если бы репликации выполнялась нормально.
Помимо увеличения вместимости AI-экстентов существует еще один фактор, влияющий на размер экстента. Когда база данных активирована как source, менеджер базы генерирует дополнительные AI-заметки, которые пишутся одновременно в BI и AI-экстенты. Эти записи должны учитываться при расчете размеров AI-экстентов и схемы использования OE Replication.
OpenEdge на низком уровне осуществляет защиту целостности записей, используя так называемые логические операции, которые предохраняют запись от доступа, пока все действия по её изменению не будут завершены.
Типичная логическая операция может состоять из следующих действий:
- создание нового блока при расширении записи.
- очистка существующего блока, если запись удалена.
- данные о записи должны быть записаны в каждый блок, который занимает эта запись.
- обновление индексов записи.
Пока выполняется логическая операция, доступ к записи для добавления, изменения или удаления блокирован до ее завершения.
|