ACID

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

ACID (англ. Atomicity, Consistency, Isolation, Durability) - це набір властивостей, що гарантують надійну роботу транзакцій бази даних: атомарність, узгодженість, ізольованість, довговічність. Ці вимоги були сформульовані у 1970-х роках науковцем Джимом Греєм.

Вимоги[ред.ред. код]

Атомарність (Atomicity)[ред.ред. код]

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

Узгодженість (Consistency)[ред.ред. код]

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

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

Ізольованість (Isolation)[ред.ред. код]

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

Довговічність (Durability)[ред.ред. код]

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

Джерела[ред.ред. код]