Классика баз данных - статьи

       

записывается информацию, необходимую для повторения


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

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

Приведенный ниже рисунок иллюстрирует схему работы NTA. На нем изображены журнальные записи, созданные одной транзакцией. Записи, номера которых помечены штрихом, являются компенсационными. При этом, если 1 - запись журнала, то 1' будет компенсационной для нее. Записи 3, 4 и 5 на рисунке образуют NTA. Как видно, компенсационная запись 6' не имеет пары. Это объясняется тем, что ее единственное назначение - фиксировать изменения, внесенные NTA. Далее на рисунке показано, какие действия будут отменены при откате транзакции после сбоя, произошедшего после завершения NTA. Все шаги, совершенные NTA, не будут отменены, поскольку поле UndoNXT фальшивой CLR 6' указывает на запись 2.



Пример NTA

Как видно из всего вышесказанного, ARIES весьма детально описывает методы работы и организации транзакций. Но при этом алгоритм не теряет своего главного свойства - гибкости. Существует масса разновидностей ARIES для поддержки различных типов транзакций. В качестве примера можно привести алгоритм ARIES/NT (ARIES for Nested Transactions). Этот алгоритм представляет собой расширение ARIES для поддержки вложенных транзакций. С его помощью можно реализовать систему, поддерживающую сложные транзакции, составной частью которых могут быть другие транзакции. При этом дочерняя транзакция и ее предок связаны в том смысле, что откат предка ведет к откату потомка, но не наоборот.Одним из отличий этого алгоритма от базового является то, что действия транзакции описываются в журнале не списком записей, а деревом записей. Это влечет за собой не только изменение структуры журнала, но и всего процесса восстановления. Также по-другому выглядит работа распределенных транзакций. Более подробно этот алгоритм рассматривается в [6].

Подходя к завершению нашего обзора, рассмотрим еще один из механизмов ARIES, а именно особенности управления внешней памятью.


Содержание  Назад  Вперед