junior
Назовите основные свойства транзакции?
Свойства транзакции описываются акронимом ACID — четыре гарантии, обеспечивающие надёжную обработку данных.
ACID
| Свойство | Описание | Что гарантирует |
|---|---|---|
| Atomicity (атомарность) | Транзакция выполняется полностью или не выполняется вовсе | Нет частичного выполнения |
| Consistency (согласованность) | Транзакция переводит БД из одного корректного состояния в другое | Все ограничения (constraints) соблюдены |
| Isolation (изолированность) | Параллельные транзакции не влияют на результат друг друга | Каждая транзакция «видит» согласованные данные |
| Durability (долговечность) | Результат зафиксированной транзакции сохраняется даже при сбое | Данные записаны на диск (WAL) |
Как реализуются свойства ACID
| Свойство | Механизм реализации |
|---|---|
| Atomicity | Журнал отмены (undo log), позволяющий откатить незавершённые операции |
| Consistency | Ограничения целостности (PK, FK, CHECK, UNIQUE), триггеры |
| Isolation | Блокировки (locks) и/или MVCC (Multi-Version Concurrency Control) |
| Durability | Журнал предзаписи (WAL — Write-Ahead Log), fsync на диск |
ACID vs BASE
В NoSQL-системах часто используется модель BASE вместо ACID:
| ACID | BASE |
|---|---|
| Atomicity | Basically Available |
| Consistency | Soft state |
| Isolation | Eventually consistent |
| Durability | — |
BASE жертвует строгой согласованностью ради доступности и производительности (теорема CAP).
На собеседовании: интервьюер ожидает расшифровку ACID с объяснением каждого свойства своими словами. Бонус — упомянуть механизмы реализации (WAL для durability, MVCC для isolation). Частая ошибка — путать consistency в ACID (целостность ограничений) с consistency в CAP (все узлы видят одинаковые данные).