ACID

Матеріал з Вікіпедії — вільної енциклопедії.
Jump to navigation Jump to search

ACID (англ. Atomicity, Consistency, Isolation, Durability) — це набір властивостей, що гарантують надійну роботу транзакцій бази даних: атомарність, узгодженість, ізольованість, довговічність. В контексті баз даних, послідовність операцій з базою даних, яка задовольняє властивостям ACID, можна розглядати як одну логічну операцію над даними. Така послідовність операцій називається транзакцією. Наприклад, переказ коштів з одного банківського рахунку на інший, містить численні операції, але є єдиною транзакцією.

В 1983 році Андреа Рейтер[en] і Тео Хардер[en] ввели акронім ACID[1], ґрунтуючись на вимогах[2], які були сформульовані раніше науковцем Джимом Ґреєм.

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

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

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

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

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

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

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

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

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

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

Примітки[ред.ред. код]

  1. Haerder, T.; Reuter, A. (1983). Principles of transaction-oriented database recovery. ACM Computing Surveys 15 (4): 287. doi:10.1145/289.291. 
  2. Gray, Jim (September 1981). The Transaction Concept: Virtues and Limitations (PDF). Proceedings of the 7th International Conference on Very Large Databases. Cupertino, CA: Tandem Computers. с. 144–154. Процитовано 19 квітня 2018. 

Див. також[ред.ред. код]

Література[ред.ред. код]