Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по БД new.doc
Скачиваний:
11
Добавлен:
18.09.2019
Размер:
687.62 Кб
Скачать

Хроники

Концепция хроник (sagas), которая была введена Гарсия-Молином (Garsia-Molina) и Салемом (Salem) в 1987 г., построена на использовании понятия компенсирующих транзакций. Авторы определяют хронику как последовательность (плоских) тран­закций, которые могут чередоваться с прочими транзакциями. СУБД гарантирует, что либо все входящие в хронику транзакции будут успешно завершены, либо будут запущены компенсирующие транзакции, необходимые для устранения достигнутых частичных результатов. В отличие от метода вложенных транзакций, допускающего произвольный уровень вложения, метод хроник разрешает наличие единственного уровня вложения. Более того, для каждой выделенной субтранзакции должна суще­ствовать соответствующая компенсирующая транзакция, которая будет семантиче­ски аннулировать результаты, достигаемые с помощью данной субтранзакции. Таким образом, если имеется хроника, состоящая из последовательности п транзакций T1,T2,..., Тn с соответствующим набором компенсирующих транзакций С1, С2,..., Сn, то окончательный результат выполнения хроники будет определяться одной из сле­дующих последовательностей транзакций:

      1. Т1,Т2,..., Тn - если вся транзакция была успешно завершена.

      2. Ti, Tg,..., Т, Ci-1,..., Са, Ci - если выполнение транзакции Ti было прекращено.

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

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

Модель многоуровневых транзакций

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

Одним из вариантов модели открытых вложенных транзакций является модель многоуровневых транзакций, в которой дерево субтранзакций является сбалансиро­ванным (Weikum, 1991; Weikum and Schek, 1991). Узлы одного и того же уровня де­рева соответствуют операциям одного и того же уровня абстракции в СУБД. Ветви дерева представляют реализацию операции посредством последовательности опера­ций на следующем уровне глубины. Уровни n-уровневой транзакции обозначаются как l0, L1,..., Ln, где l0 - самый нижний уровень дерева, a Ln - корень дерева. Ме­тоды обработки обычных плоских транзакций гарантируют, что на самом нижнем уровне (L0) конфликты будут отсутствовать. Основная концепция модели многоуров­невых транзакций состоит в том, что две операции на уровне Li могут не конфликто­вать, даже если их реализации на следующем, более низком уровне Li-1 конфликту­ют. Используя преимущество знания информации о конфликтах на конкретном уровне, модель многоуровневых транзакций позволяет достичь более высокой степе­ни параллельности по сравнению с моделями обработки плоских транзакций.