Sobes.tech
Назад к вопросам
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();
  }
}