ACID¶
ACID - это акроним и набор требований к транзакционной системе, обеспечивающий наиболее предсказуемую и надёжную работу.
Atomicity¶
Атомарность гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Буду выполнены либо всё операции транзакции, либо ни одна из них.
Как правило, БД реализуют это свойство путем добавления механизма, который позволяет понимать, какие транзакции запущены, какие нет.
Consistency¶
Транзакция, которая достигает своего нормального завершения и фиксирующая свои результаты переводит базу из одного состояния в другое, при этом сохраняя консистентность данных. Это значит, что каждая транзакция по определению фиксирует только допустимые данные.
Isolation¶
Во время выполнения транзакции параллельно выполняющиеся транзакции не должны оказывать влияния на её результат. Т.к. изолированность - требование довольно дорогое, то вводятся специальные уровни изоляции, допускающие фантомное чтение и т.д.
Про уровни изоляции транзакций и проблемы, которые они решают можно почитать тут
Durable¶
Если пользователь получил подтверждение о выполнении тразакции, то он может быть уверен что изменения сделанные им не будут отменены из-за какого либо сбоя - выключения сервера, и т.д. Надежность в таком случае может быть достигнута за счет добавления информации о изменении данных в журнал (например в WAL).