Что такое D (долговечность) в принципах ACID
Python
Middle
Aston
Что такое D (долговечность) в принципах ACID
Ответы
D (Durability) в ACID гарантирует, что после успешного завершения транзакции изменения останутся в системе даже при сбоях (например, отключении питания). Это достигается через механизмы записи в постоянное хранилище (диск) до подтверждения транзакции.
Пример с SQL-транзакцией:
```
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
COMMIT; # Только после записи на диск
```
В Python (с SQLite):
```
import sqlite3
conn = sqlite3.connect('bank.db')
conn.execute("PRAGMA journal_mode=WAL") # Режим журналирования для долговечности
cursor = conn.cursor()
try:
cursor.execute("BEGIN")
cursor.execute("UPDATE accounts SET balance = balance - 100 WHERE user_id = 1")
cursor.execute("UPDATE accounts SET balance = balance + 100 WHERE user_id = 2")
conn.commit() # Фиксация с гарантией записи
except:
conn.rollback()
```
Реализуется через write-ahead logging (WAL), fsync() или аналогичные механизмы.