Что такое ACID в БД и причем тут безопасность

Салимжанов Р.

Ведение

Если вы работали с базами данных, то наверняка видели загадочную аббревиатуру ACID. Звучит сложно, но на самом деле это просто набор правил, который гарантирует, что ваши данные в БД не превратятся в кашу. Ну а для самых прошареных это просто транзакция!

Давайте разберем, что скрывается за каждой буквой.

A (Atomicity) — Атомарность Проще говоря: «Либо все, либо ничего». Это принцип пачки гречки. Либо вы ставите в корзину всю пачку целиком, либо не ставите ничего. Не бывает «половины пачки».

Пример: Вы переводите другу 100 рублей. В БД это две операции: 1. Спишут 100 рублей с вашего счета. 2. Зачислят 100 рублей на счет друга. Атомарность гарантирует, что либо выполнятся обе операции, либо ни одна. Если после списания денег с вас система зависнет, транзакция отменится, и ваши 100 рублей вернутся назад. Никто не потеряет деньги.

C (Consistency) — Согласованность Проще говоря: «Всё по правилам». Этот принцип следит, чтобы данные всегда были в правильном состоянии. В БД есть определенные правила (например, «баланс счета не может быть отрицательным»).

Пример: Если вы попытаетесь перевести другу больше денег, чем у вас есть на счету, транзакция не выполнится. Согласованность нарушит это действие и не позволит вашему балансу уйти в минус. Данные останутся в «правильном» состоянии.

I (Isolation) — Изолированность Проще говоря: «Не мешай другому». Представьте, что вы и ваш брат смотрите общий бюджет в таблице. Если вы оба начинаете одновременно менять одну и ту же цифру, получится неразбериха. Изолированность гарантирует, что если несколько транзакций (операций) выполняются одновременно, они не будут мешать друг другу. Каждая будет видеть данные в целостном виде, как будто она работает с базой одна.

Пример: Вы одновременно переводите деньги, а ваш брат в эту же секунду смотрит ваш общий баланс. Изолированность не даст ему увидеть «промежуточный» результат, когда деньги уже списались с вас, но еще не зачислились другу. Он увидит либо старый, либо новый цельный баланс.

D (Durability) — Долговечность Проще говоря: «Сохранил и забыл — данные навсегда». Как только система сообщает «Операция завершена успешно», вы можете быть уверены — данные сохранены и никуда не денутся, даже если сразу после этого у сервера отключится электричество.

Пример: После того как вы получили уведомление «Перевод выполнен», деньги уже не пропадут. Они надежно записаны в постоянную память (например, на SSD-диск), а не просто витают в оперативной памяти.

Так при чем же тут безопасность?

Когда говорят о безопасности в IT, часто имеют в виду защиту от хакеров. Но ACID обеспечивает другую, не менее важную безопасность — безопасность ваших данных от хаоса и самоуничтожения. · Без ACID ваш банковский счет был бы абсолютно незащищен от сбоев. Деньги могли бы теряться, появляться из воздуха, а балансы были бы непредсказуемыми. Это была бы не «база данных», а «помойка данных».

С ACID вы получаете предсказуемую и надежную систему. Вы можете доверять ей критически важную информацию: финансы, документы, личные данные.

Начать дискуссию