logo

Властивості ACID в СУБД

Транзакції — це фундаментальні операції, які дозволяють нам змінювати та отримувати дані. Однак для забезпечення цілісності бази даних важливо, щоб ці транзакції виконувалися таким чином, щоб підтримувати послідовність, правильність і надійність навіть у разі збоїв / помилок. Ось тут і вступають у гру властивості ACID.

ACID означає Atomicity Consistency Isolation and Durability.

Властивості кислоти:

acid_properties' title=

Існує чотири властивості кислоти

1. Атомарність

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



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

приклад : Розглянемо наступну транзакцію Т що складається з Т1 і Т2 : Переказ 0 з рахунку X на рахунок І .

атомарність' loading='lazy' title=Атомарність

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

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

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

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

Усього до появи T = 500 + 200 = 700 .
Усього після T  = 400 + 300 = 700 .

ізоляція' loading='lazy' title=Послідовність

3. Ізоляція

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

Це гарантує, що результат одночасних транзакцій буде таким самим, якби вони запускалися одна за одною, запобігаючи таким проблемам, як:

  • Dirty читає: читання незафіксованих даних
  • Читання, що не повторюються: зміни даних між двома читаннями
  • Фантом читає: під час транзакції з’являються нові рядки

приклад : Розглянемо дві транзакції T і T''.

  • X = 500 Y = 500
ізоляція' loading='lazy' title=Ізоляція

Пояснення:

1. Транзакція T:

  • T хоче перейти від X до Y.
  • Т читає І (значення: 500) віднімає від X (новий X = 450) і додає до Y (новий Y = 550).

2. Транзакція T'':

  • т' ' починається і читається X (500) і Y (500).
  • Він обчислює суму: 500 + 500 = 1000.
  • Тим часом значення X і Y змінюються на 450 і 550 відповідно.
  • Отже, правильна сума має бути 450 + 550 = 1000.
  • Ізоляція гарантує, що T'' не читає застарілі значення, поки інша транзакція (T) все ще виконується.
  • Транзакції мають бути незалежними, і T'' має отримати доступ до остаточних значень лише після того, як T зробить коміт.
  • Це дозволяє уникнути суперечливих результатів, таких як неправильна сума, обчислена T''.

4. Довговічність:

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

приклад : Після успішного переказу грошей з рахунку A на рахунок B зміни зберігаються на диску. Навіть якщо станеться збій відразу після фіксації, деталі передачі залишаться недоторканими, коли система відновиться, забезпечуючи надійність.

Як властивості ACID впливають на проектування та роботу СУБД

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

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

кортеж java

2. Контроль паралельності

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

3. Відновлення та відмовостійкість

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

Власність Відповідальність за збереження майна
АтомарністьМенеджер транзакцій
ПослідовністьПрикладний програміст
ІзоляціяМенеджер керування паралелізмом
ДовговічністьВідновлення

Критичні випадки використання ACID у базах даних

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

  • Банківська справа : Трансакції, пов’язані з грошовими переказами, депозитами або зняттями коштів, повинні підтримувати сувору послідовність і довговічність, щоб запобігти помилкам і шахрайству.
  • Електронна комерція : Забезпечення правильної й узгодженої обробки підрахунків запасів, замовлень і інформації про клієнтів навіть під час великого трафіку вимагає відповідності ACID.
  • Охорона здоров'я : Результати аналізів пацієнтів і рецепти повинні відповідати суворим стандартам цілісності та безпеки.