Определение процесса обновления и синхронизации реплик
При внесении изменений в объекты, расположенные в разделе, информация об этих изменениях автоматически передается во все остальные реплики этого раздела. Это обеспечивает согласование глобальной базы данных Каталога. Репликам передаются только изменения в данных. Например, если пользователь меняет номер телефона, передается только новый номер телефона, а не весь объект Пользователь.
Главная реплика участвует в процессе синхронизации разделов, обмениваясь с другими репликами информацией об изменениях, но не контролирует этот процесса. Аналогичным образом все реплики для чтения и записи синхронизируются с остальными репликами раздела. Реплики только для чтения также синхронизируются с другими репликами, но при этом они получают обновления только от других серверов.
База данных NDS является "не совсем согласованной" базой данных. При появлении изменений не все реплики раздела в каждый данный момент времени содержат полностью совпадающую информацию. На практике содержимое реплик в любой конкретный момент времени будет, скорее всего, немного различным. Однако по мере передачи информации об изменениях всем репликам, эти реплики будут стремиться к достижению некоторого согласованного состояния.
Некоторые изменения, например, изменения пользовательского пароля, передаются всем репликам немедленно. Менее критичные изменения, например, время последней регистрации пользователя, перед посылкой в сеть накапливаются локально в течение некоторого небольшого промежутка времени.
Чтобы произошла синхронизация, должна быть установлена связь с каждой репликой. При создании раздела к объекту контейнера, функционирующему в качестве корневого объекта раздела, добавляются некоторые дополнительные атрибуты. Эти свойства используются для управления синхронизацией данных реплик раздела.
При решении проблемы синхронизации следует учитывать три атрибута.
Указатель реплики | Каждый раздел содержит запись о расположении всех своих реплик. Эта информация хранится в свойстве реплики раздела, по одному элементу свойства на каждую реплику раздела. Набор указателей реплик разделов создает список реплик раздела, иногда называемый кольцом реплик или списком реплик. |
Синхронизировано до | Каждая реплика в списке реплик раздела поддерживает список временных меток. Сервер, содержащий некоторую реплику, использует этот атрибут для определения состояния синхронизации реплики в сравнении с другими репликами, входящими в список. Этот атрибут иногда называется вектором временных меток. |
Наследуемый список управления доступом (ACL) | Корневой объект раздела отвечает за определение прав доступа, наследуемых им самим от объекта [Root]. Этот атрибут является прежде всего сводным списком ACL для всех объектов раздела. |