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



         

Другие возможности ARIES


Рассмотрев работу системы восстановления, обратим внимание на ряд других интересных свойств ARIES. Из них, наверное, самое изящное и простое в исполнении, это поддержка Nested Top Actions (NTA). Объясним значение этого термина.

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

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

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

В ARIES используется концепция вложенных заключительных действий (nested top actions). Она позволяет обойтись без запуска независимых транзакций в рассматриваемых случаях. Вложенное заключительное действие представляет из себя последовательность действий транзакции, которая по завершению уже не подлежит отмене даже в случае отката объемлющей транзакции.

Технически организация NTA проходит в три этапа. На первом этапе запоминается LSN последней журнальной записи текущей транзакции.


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