Ответ
Принципы ACID — это набор свойств, гарантирующих надежность и предсказуемость транзакций в системах управления базами данных (СУБД).
| Принцип | Описание | Гарантия |
|---|---|---|
| Atomicity (Атомарность) | Транзакция выполняется как единое целое. | «Все или ничего»: либо все операции транзакции выполняются, либо ни одна. |
| Consistency (Согласованность) | Транзакция переводит БД из одного валидного состояния в другое. | Данные всегда соответствуют заданным правилам (ограничениям, триггерам). |
| Isolation (Изолированность) | Параллельные транзакции не влияют друг на друга. | Конкурентное выполнение транзакций эквивалентно их последовательному выполнению (зависит от уровня изоляции). |
| Durability (Долговечность) | Результаты завершенной транзакции сохраняются навсегда. | Изменения сохраняются даже после сбоя системы. |
Практический пример (Spring @Transactional):
@Service
public class TransferService {
@Transactional // Эта аннотация делегирует управление ACID Spring/СУБД
public void transfer(Account from, Account to, BigDecimal amount) {
from.debit(amount); // Списание
// Если здесь произойдет исключение, дебет откатится
to.credit(amount); // Зачисление
}
}
Без ACID возможны аномалии: потерянные обновления, «грязное» чтение, неконсистентность данных при сбоях.