Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 2 Середовище БД.doc
Скачиваний:
9
Добавлен:
19.11.2019
Размер:
679.42 Кб
Скачать

2.4.3. Підтримка транзакцій

СКБД повинна мати механізм, що гарантує виконання або всіх операцій відновлення даної транзакції, або жодної з них.

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

2.4.4. Сервисы керування паралельністю

СКБД повинна мати механізм, що гарантує коректне відновлення бази даних при рівнобіжному виконанні операцій відновлення багатьма користувачами.

Одна з основних цілей створення і використання СКБД полягає в тім, щоб безліч користувачів могло здійснювати рівнобіжний доступ до спільно оброблюваних даних. Рівнобіжний доступ порівняно просто організувати, якщо всі користувачі виконують тільки читання даних, оскільки в цьому випадку вони: не можуть перешкодити один одному. Однак, коли два чи більше користувачі од. почасово одержують доступ до бази даних, конфлікт із небажаними наслідками легко; може виникнути, наприклад, якщо хоча б один з них спробує обновити дані. Розглянемо паралельно виконувані транзакції Т1 і Т2 послідовність виконання яких представлена в табл. 2.3.

У транзакції T1 10 фунтів стерлінгів знімається з рахунка, баланс якого зберігається в стовпці Bal, а в транзакції Т2 100 фунтів стерлінгів міститься на цей же рахунок. Якби транзакції виконувалися послідовно, тобто одна за іншою, без чергування окремих операцій, то в остаточному підсумку баланс дорівнював би 190 фунтам стерлінгів, незалежно від порядку виконання транзакції. У противному випадку може виникнути наступна ситуація. Припустимо, що транзакції T1 і Т2 стартували практично одночасно і прочитали вихідне значення балансу, рівним 100 фунтам стерлінгів. Потім транзакція Т2 збільшує це значення на 100 фунтів стерлінгів (до 200 фунтів стерлінгів) і зберігає отримане значення в базі даних. Негайно після цього транзакція Т1 зменшує свою копію ліченого вихідного значення на 10 фунтів стерлінгів (до 90 фунтів стерлінгів) і зберігає отримане значення в базі даних замість тільки що записаного результату попереднього відновлення, унаслідок чого виникає ефект "утрати" 100 фунтів стерлінгів.

С КБД повинна гарантувати, що при одночасному доступі до бази даних багатьох користувачів подібних конфліктів не відбудеться.

2.4.5. Сервіси відновлення

СКБД повинна надавати кошти відновлення бази даних на випадок якого-небудь її чи ушкодження руйнування.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]