Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ободяк 3 курс / РСтаМ-том1-2011.docx
Скачиваний:
128
Добавлен:
19.04.2015
Размер:
8.73 Mб
Скачать
    1. Розподілені транзакції

Концепція транзакцій тісно пов'язана з концепцією взаємних виключень. Алгоритми взаємного виключення забезпечують одночасний доступ не більш ніж одного процесу до спільно використовуваних ресурсів, таким як файл, принтер і т.п. Транзакції також захищають загальні ресурси від одночасного доступу декількох паралельних процесів. Транзакції можуть виконувати і багато інших функцій. Зокрема, вони перетворюють процеси доступу й модифікації безлічі елементів даних в одну атомарну операцію. Якщо процес під час транзакції вирішує зупинитися на півшляху й повернути назад, всі дані відновлюються з тими значеннями і у тому стані, у якому вони були до початку транзакції.

      1. Модель транзакцій

Комп'ютерна модель виглядає наступним чином. Один процес повідомляє, що хоче почати транзакцію з одним або декількома іншими процесами. Після цього вони можуть погоджувати різні умови, створювати й видаляти сутності, виконувати операції. Потім ініціатор повідомляє, що він пропонує всім іншим підтвердити, що робота зроблена. Якщо все це підтверджують, результати затверджуються й стають постійними. Якщо один або кілька процесів відмовляються (або до угоди в них виникають збої), ситуація повертається до того стану, що мало місце до початку транзакції, з усіма наслідками, що випливають звідси, для файлів, баз даних і т.д. Така властивість, «всі або нічого»,сильно спрощує роботу програмістам.

Використання транзакцій у комп'ютерних системах бере початок у шістдесятих роках. До цього дисків і мережних баз даних не існувало, всі дані зберігалися на магнітних стрічках. Уявіть собі супермаркет з автоматизованою системою інвентаризації. Щодня після закриття, комп'ютер починав роботу із двома магнітними стрічками. Перша з них містила повні відомості про товари на момент відкриття ранком поточного дня, а друга – список.

Основна перевага цієї схеми (незважаючи на те, що люди, змушені цим займатися, тоді часто не могли цього оцінити) полягало в тому, що при будь-яких збоях всі стрічки можна було перемотати на початок і почати роботу знову без яких-небудь проблем. Такі примітивні старі магнітні стрічки мали властивість, характерним для транзакції, – «все або нічого».

Приклад

Розглянемо сучасну банківську прикладну програму, що вносить зміни в мережеву базу даних. Клієнт дзвонить у банк, використовуючи комп'ютер з модемом, маючи намір зняти гроші з одного рахунку й покласти їх на іншій. Операція здійснюється у два прийоми.

Зняти суму а з рахунку 1.

Покласти суму а на рахунок 2.

Рис. 6.13 Внесення змін в основну стрічку захищено від збоїв

Проблему вирішує об'єднання цих операцій в одну транзакцію. Або обидві вони будуть виконані, або не буде виконана жодна. Ключовий, отже, є можливість відкату до вихідного стану при неможливості завершити транзакцію. Що дійсно потрібно – так це спосіб «відмотати до початку» базу даних. Цю можливість дає транзакція.

Програмування з використанням транзакцій вимагає спеціальних примітивів, які можуть підтримуватися як базовою розподіленою системою, так і виконуючою системою мови програмування. Типові приклади приводяться в табл. 6.1. Повний список примітивів залежить від того, які об'єкти використаються в транзакції. У поштовій системі примітивами можуть бути відправлення, прийом і пересилання пошти. У банківських системах примітиви можуть бути зовсім іншими. Як правило, там присутні команди READ й WRITE. Звичайні інструкції, виклики процедур й ін. також можуть включатися усередину транзакцій.

Соседние файлы в папке Ободяк 3 курс