ACID
Atomicity, Consistency, Isolation, Durability
ACID — это набор свойств, которые гарантируют надежность и корректность транзакций в реляционных базах данных.
Основные свойства
Атомарность (Atomicity):
- Транзакция рассматривается как единое целое: либо она выполняется полностью, либо не выполняется вообще.
- Если возникает ошибка, все изменения откатываются.
Согласованность (Consistency):
- Транзакции переводят базу данных из одного согласованного состояния в другое.
- Все правила и ограничения (например, внешние ключи) должны соблюдаться после выполнения транзакции.
Изолированность (Isolation):
- Каждая транзакция выполняется независимо от других.
- Результаты одной транзакции недоступны другим до ее завершения, что предотвращает конфликты.
Надежность (Durability):
- После завершения транзакции изменения сохраняются в базе данных, даже в случае сбоя системы.
- Данные записываются на постоянное хранилище.
Пример
Рассмотрим банковскую транзакцию, переводящую деньги с одного счета на другой:
- Атомарность: Если операция перевода завершилась неудачей, деньги не должны быть вычтены с одного счета или зачислены на другой.
- Согласованность: Сумма на счете отправителя должна уменьшиться, а на счете получателя — увеличиться.
- Изолированность: Если два пользователя одновременно пытаются перевести деньги, каждый должен видеть свои данные и не знать о действиях другого.
- Надежность: Если система падает после завершения транзакции, состояние счетов остается неизменным.
ACID-свойства являются основополагающими для обеспечения надежности и целостности данных в реляционных базах данных. Они играют критическую роль в приложениях, где данные имеют высокую ценность и должны быть защищены от ошибок.