Перейти к содержанию

ACID

ACID - это акроним и набор требований к транзакционной системе, обеспечивающий наиболее предсказуемую и надёжную работу.

Atomicity

Атомарность гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Буду выполнены либо всё операции транзакции, либо ни одна из них.

Как правило, БД реализуют это свойство путем добавления механизма, который позволяет понимать, какие транзакции запущены, какие нет.

Consistency

Транзакция, которая достигает своего нормального завершения и фиксирующая свои результаты переводит базу из одного состояния в другое, при этом сохраняя консистентность данных. Это значит, что каждая транзакция по определению фиксирует только допустимые данные.

Isolation

Во время выполнения транзакции параллельно выполняющиеся транзакции не должны оказывать влияния на её результат. Т.к. изолированность - требование довольно дорогое, то вводятся специальные уровни изоляции, допускающие фантомное чтение и т.д.
Про уровни изоляции транзакций и проблемы, которые они решают можно почитать тут

Durable

Если пользователь получил подтверждение о выполнении тразакции, то он может быть уверен что изменения сделанные им не будут отменены из-за какого либо сбоя - выключения сервера, и т.д. Надежность в таком случае может быть достигнута за счет добавления информации о изменении данных в журнал (например в WAL).