Что такое надежность в ACID
Python
Senior
Без компании
Что такое надежность в ACID
Ответы
Надежность (Durability) в ACID гарантирует, что после успешного завершения транзакции (commit) изменения сохраняются в БД даже при сбоях (отключение питания, краш сервера).
**Как достигается:**
- Журналирование (WAL — Write-Ahead Logging): изменения сначала записываются в лог, затем в основную БД.
- Синхронная запись на диск (fsync) перед подтверждением commit.
**Пример с PostgreSQL:**
```
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
COMMIT; -- данные гарантированно сохранены даже после сбоя
```
**Нюансы:**
- Может снижать производительность из-за жестких требований к записи.
- В NoSQL (например, MongoDB) надежность иногда жертвуется в пользу скорости (writeConcern: 0).