Распределенная обработка данных. Найханова Л.В. - 39 стр.

UptoLike

Составители: 

39
согласование нескольких таких операций. В общем, это преобразование одного
согласованного состояния базы данных в другое, причем в промежуточных точках база
данных находится в несогласованном состоянии.
Из этого следует, что не допустимо, чтобы одно из обновлений было выполнено, а
другое нет, так как база данных останется в несогласованном состоянии. В идеальном
случае должны быть выполнены оба обновления. Однако нельзя обеспечить стопро-
центную гарантию, что так и будет. Система, поддерживающая процесс транзакции,
обеспечивает гарантию, что если во время выполнения неких обновлений произошла
ошибка (по любой причине), то все эти обновления будут аннулированы. Таким образом,
транзакция или выполняется полностью, или полностью отменяется (как будто она
вообще не выполнялась).
Системный компонент, обеспечивающий атомарность (или ее подобие), называется
администратором транзакций (или диспетчером транзакций), а ключами к его
выполнению служат операторы COMMIT TRANSACTION и ROLLBACK
TRANSACTION.
Оператор COMMIT TRANSACTION (для краткости COMMIT) сигнализирует об
успешном окончании транзакции. Он сообщает администратору транзакций, что
логическая единица работы завершена успешно, база данных вновь находится
(или будет находиться) в согласованном состоянии, а все обновления,
выполненные логической единицей работы, теперь могут быть зафиксированы,
т.е. стать постоянными.
Оператор ROLLBACK TRANSACTION (для краткости ROLLBACK)
сигнализирует о неудачном окончании транзакции. Он сообщает администратору
транзакций, что произошла какая-то ошибка, база данных находится в
несогласованном состоянии и все обновления могут быть отменены, т.е.
аннулированы.
Следовательно, COMMIT выполняется, если оба обновления прошли успешно, изме-
нения в базе данных выполнены и стали постоянными. Если что-то не так, если об-
новление прервано каким-либо условием ошибки, то выполняется ROLLBACK и любые
изменения отменяются.
Обратите внимание, что при этом можно не только модифицировать базу данных
(или попытаться это сделать), но также и выдать пользователю некоторое сообщение о
том, что произошло. Например, можно выдать сообщение "Поставка добавлена", если
выполнена операция COMMIT, или "Ошибка - поставка не добавлена", если операция не
выполнена. Выдача сообщений имеет дополнительное значение для восстановления.
Cиcтема поддерживает файл регистрации, или журнал, на ленте или (обычно) на
диске, где записываются детали всех операций обновления, в частности новое и старое
значения модифицированного объекта. Таким образом, при необходимости отмены
некоторого обновления система может использовать соответствующий файл регистрации
для возвращения объекта в первоначальное состояние. На самом деле это слишком
упрощенное объяснение. На практике файл регистрации состоит из двух частей:
активной (или интерактивной);
архивной (или автономной).
Интерактивная часть используется во время нормальной системной операции по
записи деталей осуществляемых обновлений и обычно содержится на диске. После того
как интерактивная часть заполнена, ее содержимое перемещается в автономную часть,
которая обычно находится на ленте, поскольку обрабатывается последовательно.
Еще один важный момент. Система должна гарантировать, что индивидуальные
операторы сами по себе атомарны (т.е. выполняются полностью или не выполняются
совсем). Это особенно важно для реляционных систем, в которых операторы много-
уровневые и обычно оперируют множеством кортежей одновременно. Такой оператор
просто не может быть нарушен посреди операции и привести систему в несогласованное
согласование нескольких таких операций. В общем, это преобразование одного
согласованного состояния базы данных в другое, причем в промежуточных точках база
данных находится в несогласованном состоянии.
     Из этого следует, что не допустимо, чтобы одно из обновлений было выполнено, а
другое нет, так как база данных останется в несогласованном состоянии. В идеальном
случае должны быть выполнены оба обновления. Однако нельзя обеспечить стопро-
центную гарантию, что так и будет. Система, поддерживающая процесс транзакции,
обеспечивает гарантию, что если во время выполнения неких обновлений произошла
ошибка (по любой причине), то все эти обновления будут аннулированы. Таким образом,
транзакция или выполняется полностью, или полностью отменяется (как будто она
вообще не выполнялась).
     Системный компонент, обеспечивающий атомарность (или ее подобие), называется
администратором транзакций (или диспетчером транзакций), а ключами к его
выполнению служат операторы COMMIT TRANSACTION                     и     ROLLBACK
TRANSACTION.
     • Оператор COMMIT TRANSACTION (для краткости COMMIT) сигнализирует об
        успешном окончании транзакции. Он сообщает администратору транзакций, что
        логическая единица работы завершена успешно, база данных вновь находится
        (или будет находиться) в согласованном состоянии, а все обновления,
        выполненные логической единицей работы, теперь могут быть зафиксированы,
        т.е. стать постоянными.
     • Оператор ROLLBACK TRANSACTION (для краткости ROLLBACK)
        сигнализирует о неудачном окончании транзакции. Он сообщает администратору
        транзакций, что произошла какая-то ошибка, база данных находится в
        несогласованном состоянии и все обновления могут быть отменены, т.е.
        аннулированы.
     Следовательно, COMMIT выполняется, если оба обновления прошли успешно, изме-
нения в базе данных выполнены и стали постоянными. Если что-то не так, если об-
новление прервано каким-либо условием ошибки, то выполняется ROLLBACK и любые
изменения отменяются.
     Обратите внимание, что при этом можно не только модифицировать базу данных
(или попытаться это сделать), но также и выдать пользователю некоторое сообщение о
том, что произошло. Например, можно выдать сообщение "Поставка добавлена", если
выполнена операция COMMIT, или "Ошибка - поставка не добавлена", если операция не
выполнена. Выдача сообщений имеет дополнительное значение для восстановления.
     Cиcтема поддерживает файл регистрации, или журнал, на ленте или (обычно) на
диске, где записываются детали всех операций обновления, в частности новое и старое
значения модифицированного объекта. Таким образом, при необходимости отмены
некоторого обновления система может использовать соответствующий файл регистрации
для возвращения объекта в первоначальное состояние. На самом деле это слишком
упрощенное объяснение. На практике файл регистрации состоит из двух частей:
     • активной (или интерактивной);
     • архивной (или автономной).
     Интерактивная часть используется во время нормальной системной операции по
записи деталей осуществляемых обновлений и обычно содержится на диске. После того
как интерактивная часть заполнена, ее содержимое перемещается в автономную часть,
которая обычно находится на ленте, поскольку обрабатывается последовательно.
     Еще один важный момент. Система должна гарантировать, что индивидуальные
операторы сами по себе атомарны (т.е. выполняются полностью или не выполняются
совсем). Это особенно важно для реляционных систем, в которых операторы много-
уровневые и обычно оперируют множеством кортежей одновременно. Такой оператор
просто не может быть нарушен посреди операции и привести систему в несогласованное

                                                                                 39