Що таке ACID?
Свайпніть щоб показати меню
Ми розпочнемо вивчення розширених тем SQL з поняття принципів ACID.
ACID — це абревіатура, що означає атомарність (Atomicity), узгодженість (Consistency), ізоляцію (Isolation) та стійкість (Durability). Ці чотири властивості є фундаментальними принципами управління базами даних і призначені для забезпечення надійності транзакцій у базах даних.
Ви могли помітити, що у визначенні ACID ми використовуємо слово транзакція. Можливо, при згадці цього слова ви уявляєте банківську операцію, але в контексті баз даних транзакція визначається дещо інакше.
Транзакція — це послідовність однієї або кількох операцій з базою даних, які розглядаються як єдиний логічний блок роботи.
Уявіть, що ви користуєтеся сайтом онлайн-покупок.
Ви додаєте товари до кошика, переходите до оформлення замовлення та здійснюєте оплату. Весь цей процес можна розглядати як транзакцію бази даних. Ось як це працює:
- Початок транзакції: ви починаєте процес оформлення замовлення;
- Операції:
- Система перевіряє, чи товари у вашому кошику ще є в наявності;
- Обробляється ваша платіжна інформація;
- Оновлюється інвентар для відображення придбаних вами товарів;
- У базі даних створюється запис про замовлення.
- Фіксація транзакції: після успішного завершення всіх цих кроків транзакція фіксується, тобто всі зміни зберігаються в базі даних;
- Відкат (за потреби): якщо якийсь крок не вдається (наприклад, платіж не проходить), транзакція відкочується, тобто жодна зі змін не зберігається. Це гарантує, що база даних залишається у послідовному стані, ніби транзакція ніколи не відбувалася.
Цей приклад показує, як транзакція об'єднує кілька операцій у єдиний надійний процес.
Навіщо потрібен ACID?
Властивості ACID важливі для баз даних з трьох ключових причин:
- По-перше, вони гарантують надійність транзакцій, розглядаючи транзакції як єдині, неподільні одиниці, запобігаючи частковим оновленням та підтримуючи цілісність;
- По-друге, вони забезпечують контроль паралельності, гарантуючи незалежне виконання транзакцій, запобігаючи взаємному впливу та зберігаючи цілісність даних у багатокористувацьких середовищах;
- Нарешті, вони забезпечують довговічність даних шляхом постійного збереження підтверджених транзакцій, що дозволяє пережити збої системи та гарантує відновлення даних.
Розглянемо ситуацію з банківським рахунком:
- Транзакція 1 (T1): Ви переказуєте $100 зі свого ощадного рахунку на поточний.
- Одночасно, Транзакція 2 (T2): Ви перевіряєте баланс ощадного рахунку онлайн.
- Але потім у T1 виникає помилка — наприклад, через мережеву проблему — і переказ не завершується.
- Тим часом T2 завершується і показує баланс ощадного рахунку, включаючи переказ $100, який насправді ще не відбувся.
Це порушує властивість ізоляції ACID. Хоча переказ не був завершений (через збій T1), ви вже побачили його вплив у балансі рахунку. Така неузгодженість може заплутати користувачів і призвести до неправильних фінансових рішень.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат