Sobes.tech
Back to questions
Senior
4

Что такое атомарность в базах данных? Приведи пример.

Companies where asked
GPTunnel

Answer from AI

sobes.tech AI

Атомарность в базах данных — это свойство транзакции, гарантирующее, что все операции внутри транзакции выполняются как единое целое: либо все успешно завершаются, либо при ошибке откатываются назад, не оставляя систему в промежуточном состоянии.

Пример: при переводе денег между счетами нужно списать сумму с одного счёта и зачислить на другой. Если списание прошло, а зачисление — нет, данные будут неконсистентны. Благодаря атомарности обе операции либо выполнятся вместе, либо не выполнятся вовсе.

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

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

async function transferFunds(client, fromAccount, toAccount, amount) {
  try {
    await client.query('BEGIN');
    await client.query('UPDATE accounts SET balance = balance - $1 WHERE id = $2', [amount, fromAccount]);
    await client.query('UPDATE accounts SET balance = balance + $1 WHERE id = $2', [amount, toAccount]);
    await client.query('COMMIT');
  } catch (e) {
    await client.query('ROLLBACK');
    throw e;
  }
}

Здесь, если одна из операций обновления баланса не выполнится, транзакция откатится, и база останется в исходном состоянии.