Введение в дисциплину «Безопасность систем баз данных». Теоретические основы построения реляционных баз данных. Верификация баз данных и проведение аудита в СБД. Распределенные базы данных, страница 78

Право обновления в этой схеме может передаваться от одного узла другому. Однако в каждый конкретный момент времени существует только один узел, обладающий правом обновления. Типичным примером использования схемы «рабочий поток» является последовательность обработки заказа: каждый этап (оформление, контроль кредитоспособности, выписка счета, доставка и т. д.) сопровождается обновлением данных о заказе на отдельном узле. При этом предполагается, что предыдущий этап обработки заказа завершен. После выполнения очередного этапа копия обновленных данных реплицируется на следующий узел, а вместе с нею передается и право владения.

3. Схема «повсеместное обновление».

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

Чтобы разрешать конфликты, используются следующие средства.

·  Временные отметки. Реплицируются измененные данные, имеющие самую раннюю или самую позднюю временную отметку.

·  Приоритет узлов. Применяется обновление, выполненное на узле с высшим приоритетом.

·  Подготовка администратором специальной процедуры по разрешению конфликта (но процедура выполняется автоматически).

·  Сохранение сведений о конфликте в журнале ошибок для последующего ручного устранения конфликта администратором.

В СУБД Microsoft SQL Server 2005 применяются все перечисленные выше схемы владения. В терминах SQL Server минимальный набор реплицируемых данных называется статьей, а набор статей, на который может быть оформлена подписка, - публикацией. Помимо издателя и подписчика, существует промежуточное звено между ними – дистрибьютор, собирающий информацию от издателей и копирующий подписчикам. В небольших системах дистрибьютор можно установить на стороне издателя. При повышении объема тиражируемой информации использование отдельного узла в качестве дистрибьютора может существенно повысить производительность всего процесса репликации.

Типы репликации

К числу базовых типов репликации относятся: репликация моментальных снимков, репликация транзакций и репликация сведением.

Репликация моментальных снимков

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

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

В SQL Server 2005 за репликацию моментальных снимков отвечают две подсистемы – агенты Snapshot Agent и Distribution Agent. Агент Snapshot Agent запускается на дистрибьюторе автоматически, по расписанию, и устанавливает соединение с издателем. После этого осуществляется выборка данных, Snapshot Agent генерирует специальные файлы, где сохраняется информация о таблицах, для которых определены публикуемые статьи, а также об индексах, входящих в публикацию. На основе этих файлов создается собственно файл моментального снимка. Все файлы регистрируются на стороне дистрибьютора в базе данных распределения. Само копирование подготовленных данных осуществляет Distribution Agent. Он работает либо на стороне подписчика (если производится репликация по запросу), либо на стороне дистрибьютора (если используется принудительная репликация, распространение информации). В любом случае этот агент постоянно отслеживает появление в базе данных распределения новой информации; как только Snapshot Agent формирует новые файлы и производит их регистрацию, Distribution Agent получает эти сведения, анализирует содержимое файлов и рассылает моментальный снимок подписчикам.