Приветствую Вас Гость | RSS

Воскресенье, 29.09.2024, 03:18
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Обработка транзакций в распределенных ИС
BlofeldДата: Среда, 30.03.2011, 22:15 | Сообщение # 1
Местный копирайтер
Группа: Администраторы
Сообщений: 583
Репутация: 2012
Статус: Offline
Транзакция – это логически завершенная последовательность действий над данными информационной системы, не нарушающая ограничения целостности.
• Логическая целостность означает, что удовлетворяются все ограничения, накладываемые на наборы данных моделью системы.
• Физическая целостность означает, что состояние файлов хранилища данных корректно, т. е. ни один из элементов хранилища не является испорченным с точки зрения СУБД.

Транзакция:
1. последовательность операторов языка SQL, которая рассматривается как неделимое действие над БД
2. логическая единица работы системы, реализующая некоторую прикладную функцию.

Свойства транзакции:
1. Атомарность (Atomicity) – транзакция должна быть выполнена в целом или не выполнена вовсе.
2. Согласованность (Consistency) – транзакция не разрушает взаимной согласованности данных.
3. Изолированность (Isolation) конкурирующие за доступ к данным транзакции физически обрабатываются последовательно, изолированно друг от друга.
4. Долговечность (Durability) при успешном завершении транзакции произведенные ею изменения в данных не могут быть потеряны.

Откат и фиксация транзакций:
• Фиксация транзакции – это действие, обеспечивающее запись на диск изменений в базе данных, которые были сделаны в процессе выполнения транзакции.
• Откат транзакции – это действие, обеспечивающее аннулирование всех изменений данных.
• Откат и фиксация транзакций становятся возможными благодаря журналу транзакций.

Если данные хранятся в одной базе данных, то транзакция к ней рассматривается как локальная. Распределенные системы обычно включают несколько компьютеров - серверов баз данных, называемых узлами. Данные физически распределены между ними. На каждом узле содержится некоторая локальная база данных, содержащая фрагмент данных из общей распределенной базы. В распределенных базах транзакция, выполнение которой заключается в обновлении данных на нескольких узлах сети, называется глобальной или распределенной транзакцией.

Внешне выполнение распределенной транзакции выглядит как обработка транзакции к локальной базе данных. Тем не менее, распределенная транзакция включает в себя несколько локальных транзакций, каждая из которых завершается двумя путями - фиксируется или прерывается. Распределенная транзакция фиксируется только в том случае, когда зафиксированы все локальные транзакции, ее составляющие. Если хотя бы одна из локальных транзакций была прервана, то должна быть прервана и распределенная транзакция.
Для этого в современных СУБД предусмотрен так называемый протокол двухфазовой (или двухфазной) фиксации транзакций (two-phase commit). Название отражает тот факт, что фиксация распределенной транзакции выполняется в две фазы.

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

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

 
  • Страница 1 из 1
  • 1
Поиск: