Втрачена модифікація даних

Цю проблему пояснимо на такому прикладі: хай заробіток інженера становить 1000 гривень. Процес 1 має (поряд з іншим) збільшити заробіток на 50 гривень. Процес 2, що виконується паралельно з першим процесом, має збільшити заробіток на 10%. Залежно від порядку виконання або об'єднання обох процесів при їхньому виконанні, дістанемо різні результати.

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

Несумісний аналіз

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

Наприклад, у той час, коли процес Р1 виконує транзакцію переказу, деякий час співвідношення між двома даними (стан розрахунків) не відповідає дійсності. Процес Р2, що аналізує, одержує помилкові дані, якщо він читає якраз у цей момент актуальні значення одного або обох елементів даних (стан рахунків).

Не підтверджена залежність

Можлива залежність від непідтверджених (uncommiteed) транзакцій - це типова проблема в банках даних. У зв'язку з тим, що транзакція може завершуватись успішно або ні, зміни глобальних даних, що виконуються транзакційно перед її успішним закінченням, завжди дійсні лише з застереженням. Якщо транзакція А вносить зміни в глобальні дані, транзакція В ці дані читає, а транзакція А наприкінці не завершується успішно (фіаско транзакції), то транзакція використовує некоректні дані.

У системах банків даних транзакції імплементуються як "атомарні операції". Транзакція може бути або успішною, або зазнає невдачі. Успішна транзакція оброблюється повністю (commitї), а транзакція, що супроводжується помилками, має бути повністю повернута у вихідне положення (rollback) для перезапуску. У випадку, коли до появи помилки вже виконані деякі операції в банку даних, їх треба зворотним методом повернути у стан, що відповідає стану справ до виконання цієї транзакції. Дотримання концепції транзакцій запобігає появі несумісних даних.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: