Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы к экзамену.docx
Скачиваний:
3
Добавлен:
02.01.2025
Размер:
521.41 Кб
Скачать

Обработка транзакций.

Транзакция – неделимый набор операций над хранящимися данными.

  • Транзакция успешно завершается, если выполнены все ее операции.

  • В противном случае происходит откат в состояние, предшествующее выполнению транзакции.

Обработка транзакций выполняется в любом приложении, где два или более действия должны выполняться согласованно.

Приложение должно указать рамки транзакции:

BeginTrans – начало последовательности операций, объединяемых в одну транзакцию.

CommitTrans – запись результатов всех операций транзакции.

RollBack – откат транзакции, т.е. отмена всех изменений, выполненных в транзакции.

Конкретная форма команд обработки транзакций различается в разных СУБД.

В многопользовательской среде обработка транзакций приобретает особое значение.

Параллельные транзакции – две или более транзакций в БД, производящие обработку в одно и то же время.

Шаги транзакций выполняются попеременно (процессор переключается между операциями транзакций, за определенный промежуток времени выполняется некоторая часть каждой из транзакций).

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

Проблемы параллельной обработки транзакций

1. Проблема потерянного обновления.

2. Проблема несогласованного чтения.

Решение проблем несогласованностей, вызванных параллельной обработкой транзакций:

Блокировка ресурсов – запрет совместного использования ресурсов путем блокировки данных, которые считываются для обновления.

Сериализуемые транзакции – параллельные транзакции, результат выполнения которых является таким же, как если бы эти транзакции выполнялись последовательно.

3. Проблема взаимных блокировок или «смертельные объятия».

Каждая из транзакций ожидает освобождения ресурса, заблокированного другой транзакцией.

Способы решения проблемы взаимных блокировок:

А). Предотвращение возникновения взаимных блокировок.

Приложения должны выполнять следующие условия:

  • блокировка всех требуемых ресурсов сразу.

или

  • блокировка ресурсов в одном и том же порядке.

Б). Обнаружение и распутывание взаимных блокировок.

  • СУБД имеют алгоритмы обнаружения взаимных блокировок.

  • При возникновении взаимной блокировки обычно отменяется одна из транзакций с удалением из БД произведенных ею изменений.

Распределение функций в архитектуре «клиент-сервер».

При разработке приложений в архитектуре клиент-сервер важным вопросом является распределение функциональности приложения между клиентской и серверной частью.

Основная задача клиентского ПО – обеспечение интерфейса пользователя (ввод данных и представление результатов в удобном для пользователя виде).

Основная задача серверного ПО – обеспечение целостности и защищенности данных в БД, быстрая обработка SQL-запросов клиентов.

Логика приложения – правила обработки данных, обусловленные правилами, действующими в предметной области (бизнес-правилами).

1. Двухзвенные архитектуры.

а). Архитектура с «толстым клиентом».

Вся логика приложения выполняется на стороне клиента и, соответственно, дублируется для каждого клиента.

Если логика приложения изменяется, то ее надо менять для каждого клиента.

Клиент «толстый», т.к. должен обладать достаточным набором ресурсов, чтобы производить всю необходимую обработку данных, помимо обеспечения пользовательского интерфейса.

б). Архитектура с «тонким клиентом».

Логика приложения реализуется на стороне сервера.

Все изменения в логике приложения вносятся только в одном месте – на сервере, соответственно, такие приложения легче поддерживать.

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

в). Стандартная двухзвенная архитектура.

Логика приложения перераспределяется между клиентом и сервером, находя компромисс между «тонким» и «толстым» клиентом.