- •8. Распределенные базы данных
- •8.1.Предпосылки возникновения рбд
- •8.2. Классификация систем по способам обработки данных
- •8.3. Однородные и неоднородные системы бд
- •8.4. Стратегия размещения данных в рбд по узлам сети
- •Функции сурбд
- •9. Удаленный доступ взаимодействия с базой данных
- •9.1. Режим работы с бд при удаленном доступе
- •9.2. Архитектура моделей удалённого доступа.
- •2.2.3. Двухуровневые модели. Модель файлового сервера (File Server, fs)
- •9.2.4. Модели удалённого доступа к данным (Remote Data Access, rda) в архитектуре «клиент-сервер»
- •9.2.5. Модель «сервера бд»
- •9.2.6. Хранимые процедуры (хп) и триггеры
- •9.3. Многоуровневые модели 9.3.1. Модель сервера приложений
- •9.3.2. Модель серверов баз данных.
- •9.4. Архитектура распределённых субд
- •10 .Параллельные процессы (или процесс транзакций)
- •10.1. Транзакции
- •10.2. Модели транзакций
- •3.3. Свойства транзакций
- •10.4. Восстановление системы.
- •10.5. Параллельные операции над бд
- •10.6. Проблемы параллелизма
- •10.7. Конфликт транзакций
- •10.8. Элементы блокировки.
- •10.8.1. Бесконечное ожидание и тупики
- •10.8.2. Способы предотвращения тупиков
- •10.9.1. Протоколы и расписания
- •10.9.2. Модель транзакции
- •10.9.3. Протокол, гарантирующий сериализуемость
- •10.10. Модели с блокировками для чтения и записи
- •10.11. Блокировки в Visual FoxPro
- •11. Безопасность бд
- •11.2. Система привилегий.
- •Факультативные возможности grant
- •11.3. Целостность данных
- •11.4. Шифрование данных
- •12. Хранилище данных
- •12.1. Концепция хранилища данных
- •12.2. Многомерная модель данных
- •12.3. Olap – системы
- •12.4. Интеллектуальный анализ данных
10.9.1. Протоколы и расписания
Как было показано выше, произвольные транзакции при их параллельном исполнении могут приводить к бесконечному ожиданию, тупиковым ситуациям и несериализуемому расписанию. Для исключения подобных ситуаций имеются два инструмента. · 1-й планировщик - часть системы базы данных, которая служит арбитром между конфликтующими запросами. Планировщик может основываться на стратегии "первым вошёл - первым обслуживается" исключения бесконечного ожидания. Планировщик может также справляться с тупиками и несериализуемостью при помощи рестарта одной или более транзакций.
· 2-й подход – использование протоколов. Протокол представляет собой введение ограничений на последовательность шагов, которые может выполнять транзакция. Например, протоколом является исключающая тупики стратегия запрашивания блокировок элементов в некотором фиксированном порядке.
10.9.2. Модель транзакции
Рассмотрим простейшую модель транзакции, которая, однако, позволяет говорить о сериализуемости. В этой модели транзакция рассматривается как последовательность операторов блокирования и разблокирования
(LOCK и UNLOCK). Сопоставляя каждой паре шагов LOCK A и последующего за ним UNLOCK A однозначную функцию f, можно более формально рассмотреть поведение транзакций. Отметим, что для данного элемента А транзакция может иметь более одной такой пары, то есть мы можем блокировать и разблокировать один и тот же элемент более одного раза. Пусть А0 – начальное значение А до исполнения любых транзакций. Значения, которые может принимать А, являются тогда формулами вида: f1f2…fn (А0) где fi – функции, ассоциируемые с парами шагов LOCK A – UNLOCK A соответствующих транзакций.
Блокировка: LOCK A Разблокировка: UNLOCK A fn … f3 f2 f1 (A)
Пример: На рис. 10.10 приведены три транзакции и функции, ассоциированные с каждой парой LOCK A – UNLOCK A соответствующих транзакций.
Рис.10.10. Модели транзакций
На рис.10.11 показано возможное расписание этих транзакций и результат их воздействия на элементы A, B, C.
Рис.10.11. Расписание транзакций:
Является ли данное расписание сериализуемым. Пусть Т1 предшествует Т2, тогда
Т1Т2: Т1 предшествует Т2. Тогда конечным значением В было бы f3(f2(B0)), а не f2(f3(B0)
Если Т2Т1: Т2 предшествует Т1. Не может быть f6 (f1(f5(A0))).
3) Т2Т3Т1: Т2 предшествует Т3 и Т1, Т3 предшествует Т1. Не может быть f1(f7(f5)). 4) Т3Т2Т1: Т2 предшествует Т3 и Т2, Т2 предшествует Т1. Не может быть f1(f5(f7)). Для этого анализируется предусмотренный в расписании порядок, в котором различные транзакции блокируют данный элемент. Этот порядок должен соответствовать гипотетическому эквивалентному последовательному расписанию транзакций. Если для двух различных элементов необходимо исполнение каких-либо двух транзакций в разном порядке, то мы имеем парадокс, поскольку оба таких порядка не могут соответствовать одному последовательному расписанию. Выявление этой ситуации может быть сформулировано как задача обнаружения циклов в ориентированном графе. Формальное описание метода её решения даёт следующий алгоритм. Алгоритм 1. Проверка сериализуемости расписания.
Входные данные. Расписание S для совокупности транзакций T1, …, Tk.
Метод. Построим ориентированный граф G, называемый графом предшествований, узлы которого соответствуют транзакциям. Определим дуги графа G. Пусть S есть a1;a2;…,an, где ai – действие вида Tj: LOCK Am или Tj: UNLOCK Am и Tj указывает транзакцию, к которой относится данный шаг. Для ai имеющего вид Tj: UNLOCK Am ищем следующее за ним действие ap вида Ts: LOCK Am. Если оно существует, то строим дугу от Tj к Ts. Интуитивный смысл этой дуги заключается в том, что в любом последовательном расписании, эквивалентном S, Tj должно предшествовать Ts.. Если в графе G имеется цикл, то S-не сериализуемо. При отсутствии циклов находим такой линейный порядок транзакций, чтобы Ti предшествовала бы Tj всякий раз, когда существует дуга Ti -> Tj. Это всегда может быть сделано при помощи процесса так называемой топологической сортировки, определяемого следующим образом. Из ациклического G следует, что в нём существует некоторый узел Tj, который не имеет входящих дуг. Запишем Tj в список, удалив его из графа. Процесс повторяется до тех пор, пока в графе не останется узлов. Порядок перечисления узлов в списке даёт последовательный порядок транзакций.
Пример. Рассмотрим расписание, приведенное на рис.10.11. В графе G, изображенном на рис.10.12 имеются узлы Т1, Т2, и Т3.
Рис.10.12. Граф предшествований для транзакций
расписания на рис.10.11.
Поскольку в графе существует цикл, расписание представленное на рис.10.11 не является сериализуемым.