Вопрос проверяет понимание гарантий целостности данных и умение объяснить, зачем транзакции необходимы для надёжной работы backend-систем.
Транзакции нужны, чтобы данные оставались консистентными даже при ошибках и сбоях. Они гарантируют, что операция либо выполнится полностью, либо не выполнится вовсе. Это особенно важно для критичных действий, таких как переводы, списания и изменение состояний. Без транзакций данные могут оказаться в частично обновлённом состоянии.
Транзакция базы данных — это группа операций, которая выполняется как единое целое и подчиняется набору строгих гарантий.
Перед перечислением важно зафиксировать ключевую мысль:
транзакции защищают систему от частичных и неконсистентных изменений.
Atomicity
Все изменения либо применяются, либо откатываются
Consistency
Данные переходят из одного корректного состояния в другое
Isolation
Параллельные операции не ломают друг друга
Durability
Зафиксированные данные не теряются при сбоях
Перевод между счетами:
Уменьшить баланс отправителя
Увеличить баланс получателя
Если между шагами произойдёт ошибка без транзакции — система сломана.
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
Транзакции — обязательный инструмент для любых операций, где потеря или искажение данных недопустимы. Это базовый уровень защиты backend-систем