Sobes.tech
Назад к вопросам
Middle+
7

Что такое транзакции и свойства ACID?

Компании, где спрашивали
Ifellow

Ответ от нейросети

sobes.tech AI

Транзакция — это последовательность операций с базой данных, которая выполняется как единое целое. Если одна из операций неудачна, все изменения откатываются.

Свойства ACID обеспечивают надежность транзакций:

  • Atomicity (Атомарность): транзакция либо выполняется полностью, либо не выполняется вовсе.
  • Consistency (Согласованность): после выполнения транзакции база данных остаётся в корректном состоянии.
  • Isolation (Изолированность): параллельные транзакции не влияют друг на друга, результаты одной не видны другой до завершения.
  • Durability (Долговечность): после подтверждения транзакции её изменения сохраняются даже при сбоях.

Пример в Node.js с использованием транзакций (например, с библиотекой pg для PostgreSQL):

const { Client } = require('pg');
const client = new Client();

async function runTransaction() {
  await client.connect();
  try {
    await client.query('BEGIN');
    await client.query('INSERT INTO accounts(user_id, balance) VALUES($1, $2)', [1, 100]);
    await client.query('UPDATE accounts SET balance = balance - 50 WHERE user_id = $1', [2]);
    await client.query('COMMIT');
  } catch (e) {
    await client.query('ROLLBACK');
    throw e;
  } finally {
    await client.end();
  }
}