Назад к вопросам
Junior — Middle
105
Можете объяснить, что подразумевается под транзакцией в контексте баз данных?
Ответ от нейросети
sobes.tech AI
Транзакция в базах данных — это последовательность операций, которая выполняется как единое целое. Она либо полностью завершается успешно (commit), либо полностью откатывается (rollback), если произошла ошибка. Это гарантирует целостность данных и предотвращает частичное обновление.
Основные свойства транзакций описываются аббревиатурой ACID:
- Atomicity (Атомарность) — все операции внутри транзакции выполняются полностью или не выполняются вовсе.
- Consistency (Согласованность) — после выполнения транзакции база данных остается в корректном состоянии.
- Isolation (Изолированность) — параллельные транзакции не влияют друг на друга.
- Durability (Надежность) — после фиксации транзакции изменения сохраняются даже при сбоях.
Пример на Node.js с использованием библиотеки pg для PostgreSQL:
const { Client } = require('pg');
async function runTransaction() {
const client = new Client();
await client.connect();
try {
await client.query('BEGIN');
await client.query('INSERT INTO users(name) VALUES($1)', ['Alice']);
await client.query('INSERT INTO accounts(user_id, balance) VALUES($1, $2)', [1, 100]);
await client.query('COMMIT');
} catch (e) {
await client.query('ROLLBACK');
throw e;
} finally {
await client.end();
}
}