пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

I семестр:
» Мсис
» Бд

Управление блокированием. Перечислите основные методы синхронизации распределенных обновлений.

В распределенных базах данных в общем случае одновременно выполняются несколько транзакций; при этом могут использоваться одни и те же данные, возможно, продублированные в разных узлах. При чтении для получения нужной информации достаточно одной копии, если СУБД обеспечивает непротиворечивость всех копий. При обновлениях (записи в БД) для сохранения непротиворечивости все копии должны быть своевременно модифицированы.

Очевидно, что обновления нужно производить в соответствии с последовательными протоколами. Если учитывать одновременное выполнение транзакций над многочисленными копиями, последовательность обновлений требует развитых средств синхронизации, которая прежде всего предполагает монопольное владение поля транзакцией до полного окончания использования этого поля.

Монопольное использование значения поля в процессе работы СУБД можно обеспечить с помощью блокировки (захвата). При этом предполагается, что любая транзакция представима в виде последовательности

ЗАХВАТ - ДЕЙСТВИЕ - ОСВОБОЖДЕНИЕ

Управление блокированием - это функциональный элемент СУБД, который назначает и регистрирует блокирование, а также играет роль арбитра между несколькими запросами на блокировку одного элемента. Очевидно, что блокировка действует как примитивная синхронизация выполнения транзакций. То есть, если транзакция пытается блокировать (ЗАХВАТ) что-то уже заблокированное, она должна ждать, пока блокировка не будет снята (ОСВОБОЖДЕИЕ) транзакцией, установившей блокировку.

Итак, всякая транзакция в конце концов должна разблокировать все, что она ранее заблокировала.

Таким образом, в распределенных БД необходимо обеспечить передачу следующих сообщений о блокировках:

1) послать запросы на блокировку во все узлы,

2) получить подтверждение о реализации блокирования (при поступлении запроса на блокировку прежде всего проверяется, не заблокирован ли элемент данных другой транзакцией; если элемент не заблокирован, он блокируется),

3) после завершения операции (чтения или обновления) требуется посылка запросов на снятие блокировки во все узлы, где хранится информация.

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

Метод 1. Использование графа предшествования. В графе предшествования узлам соответствуют транзакции, а ребрам - сведения о блокировках и освобождениях данных. Направленное ребро выходит из узла, который снимает блокировку элемента данных (Освободить), и ведет к узлу, который эти данные блокирует (Захватить). Наличие циклов в таком графе означает существование тупиковых ситуаций, когда ни одна транзакция не закончена, и все они находятся в состоянии ожидания разблокирования элементов данных, необходимых для продолжения их выполнения.

Пример. Пусть имеется следующая последовательность запросов и действий транзакций, представленная на рис.49. (А, В, С - элементы данных):тупик (цикл) возникает, если для двух различных элементов данных необходимо исполнение двух транзакций в разном порядке.

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

В схеме с основным узлом установка и снятие блокировок для всех транзакций происходят для основного узла. Когда поступает запрос на блокировку, проверяется, не заблокирован ли элемент данных, находящийся в основном узле, другой транзакцией. Если элемент не заблокирован, он блокируется.

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

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

Метод 2. Временные метки. При использовании временных меток исключается возможность возникновения тупиковых ситуаций.

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

Если транзакция Т1 запрашивает операцию, которая вступает в конфликт с операцией, уже выполняемой в соответствии с более поздней по времени транзакцией Т2, Т1 запускается вновь.

Конфликт между Т1 и Т2 возникает:

Случай 1. Если операция транзакции Т1 есть операция чтения, но объект уже записан транзакцией Т2.

Анализ ситуации:

1) объект прочитан транзакцией Т2, то есть своего состояния не изменил, и конфликт не возникает;

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

Случай 2. Если операция транзакции Т1 есть операция записи, но объект уже был записан или прочитан транзакцией Т2.

Анализ ситуации:

Конфликт может возникнуть в любом случае, поскольку  транзакция Т2 не знает, что состояние объекта изменено транзакцией Т1.

Если транзакция перезапускается, ей присваивается новая временная метка.

Замечание. Хотя тупиковые ситуации исключаются, могут возникать избыточные отказы и перезапуски, например, последовательность действий RT2 WT1 RT2 может быть абсолютно корректной, но приводит к рестарту транзакции Т1 (случай 2).

Метод 3. Системы с голосованием. Каждому узлу дана возможность «голосовать» в пользу обновления. Известны два подхода.

Подход 1. Запрос на обновление выполняется, если за проведение обновления проголосовали все узлы.

Подход 2. Запрос на обновление выполняется, если за проведение обновления проголосовало большинство узлов.

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

  1. проведение обновления,
  2. отклонение обновления,
  3. возможна тупиковая ситуация,
  4. узел воздерживается от голосования по данному запросу.

хиты: 150
рейтинг:0
Точные науки
информатика
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь