Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
ACID — фундаментальный принцип надёжных транзакций в базах данных. Это аббревиатура четырёх свойств, которые гарантируют, что данные в БД всегда остаются консистентными и надёжными.
A — Atomicity (Атомарность)
Транзакция либо выполняется полностью, либо не выполняется вообще. Нет состояния половинчатого выполнения.
Пример:
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
Если вторая операция упадёт, обе операции откатываются. Деньги не исчезнут и не дублируются. Либо оба счёта обновились, либо ничего.
В Node.js:
const client = await pool.connect();
try {
await client.query('BEGIN');
await client.query('UPDATE accounts SET balance = balance - $1 WHERE id = $2', [100, accountId1]);
await client.query('UPDATE accounts SET balance = balance + $1 WHERE id = $2', [100, accountId2]);
await client.query('COMMIT');
} catch (error) {
await client.query('ROLLBACK');
throw error;
}
C — Consistency (Консистентность)
БД переходит из одного консистентного состояния в другое. Все правила и констрейнты соблюдаются.
I — Isolation (Изолированность)
Каждая транзакция выполняется независимо. Уровни: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.
D — Durability (Стойкость)
Как только транзакция закоммичена, данные сохранены навсегда. Даже если сервер упадёт, данные восстановятся из WAL (Write-Ahead Log).
ACID — это основа надёжности любого приложения с БД.