Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
23
Добавлен:
18.03.2015
Размер:
82.94 Кб
Скачать

Распределенные информационные системы и обработка транзакций Понятие транзакции в информационной системе.

К современным информационным системам предъявляются жесткие требования надежности. Никакие отказы и сбои не должны порождать рассогласование данных информационной системы. Не менее важно предотвращать рассогласование данных, порождаемое параллельной работой нескольких пользователей с одними и теми же данными.

Одним из распространенных методов обеспечения отказоустойчивости систем является восстановление ближайшего по времени корректного состояния системы. Этот принцип ложится в основу обработки транзакций.

Все операции с данными можно представить в виде набора логических единиц работы, которые, возможно, пересекаются по времени выполнения. Считается, что изначально данные информационной системы согласованы и ее состояние корректно. Это означает, что:

  • удовлетворяются все ограничения, накладываемые на наборы данных моделью системы (логическая целостность);

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

Очевидно, что требуется обеспечить согласованность данных информационной системы в течение всего времени ее работы.

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

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

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

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

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

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

Определение транзакции можно дать с двух точек зрения.

С точки зрения пользователя транзакция представляет собой последовательность операторов языка SQL, которая рассматривается как некоторое неделимое действие над базой данных.

С точки зрения аппаратно-программного комплекса транзакция - это логическая единица работы системы, реализующая некоторую прикладную функцию, например, перевод денег с одного счета на другой в банковской системе.