Acid вікіпедія
Вимоги ACID [| ]
Atomicity - Атомарність [| ]
Атомарність гарантує, що ніяка транзакція не буде зафіксована в системі частково. Будуть або виконані всі її подоперации, або не виконано жодної. Оскільки на практиці неможливо одночасно і атомарному виконати всю послідовність операцій всередині транзакції, вводиться поняття «відкату» (rollback): якщо транзакцію не вдається повністю завершити, результати всіх її до сих пір вироблених дій будуть скасовані і система повернеться у «зовні вихідне» стан - з боку здаватиметься, що транзакції і не було. (Природно, лічильники, індекси та інші внутрішні структури можуть змінитися, але, якщо СУБД запрограмована без помилок, це не вплине на зовнішнє її поведінку.)
Consistency - Узгодженість [| ]
Транзакція, що досягає свого нормального завершення (EOT - end of transaction, завершення транзакції) і, тим самим, яка фіксує свої результати, зберігає узгодженість бази даних. Іншими словами, кожна успішна транзакція по визначенню фіксує тільки допустимі результати. Ця умова є необхідною для підтримки четвертого властивості.
Узгодженість є більш широким поняттям. Наприклад, в банківській системі може існувати вимога рівності суми, що списується з одного рахунку, суми, що зараховується на інший. Це бізнес-правило і воно не може бути гарантоване тільки перевірками цілісності, його повинні дотримати програмісти при написанні коду транзакцій. Якщо будь-яка транзакція зробить списання, але не зробить зарахування, то система залишиться в некоректному стані і властивість узгодженості буде порушено.
Нарешті, ще одне зауваження стосується того, що в ході виконання транзакції узгодженість не потрібно. У нашому прикладі, списання і зарахування будуть, швидше за все, двома різними підоперацій і між їх виконанням в транзакції буде видно неузгоджене стан системи. Однак не потрібно забувати, що при виконанні вимоги ізоляції, ніяким іншим транзакцій ця неузгодженість не буде видно. А атомарность гарантує, що транзакція або буде повністю завершена, або жодна з операцій транзакції не буде виконана. Тим самим ця проміжна неузгодженість є прихованою.
Isolation - Ізольованість [| ]
Під час виконання транзакції паралельні транзакції не повинні впливати на її результат. Ізольованість - вимога дороге, тому в реальних БД існують режими, які не повністю ізолюючі транзакцію (рівні ізольованості Repeatable Read і нижче).
Durability - Стійкість [| ]
Незалежно від проблем на нижніх рівнях (наприклад, знеструмлення системи або збої в обладнанні) зміни, зроблені успішно завершеною транзакцією, повинні залишитися збереженими після повернення системи в роботу. Іншими словами, якщо користувач отримав підтвердження від системи, що транзакція виконана, він може бути впевнений, що зроблені ним зміни не будуть скасовані через будь-якого збою.
Див. Також [| ]
Література [| ]
- P.A. Bernstein, N. Goodman, V. Hadzilacos. Concurrency Control and Recovery in Database Systems. - Addison-Wesley, 1986.