Sobes.tech
Junior — Middle

Можете ли објаснити шта подразумева транзакција у контексту база података?

sobes.tech АИ

Одговор од АИ

Transakcija u bazama podataka je sekvenca operacija koja se izvršava kao celina. Transakcija ili uspešno završava u celosti (commit) ili se potpuno poništava (rollback) ako dođe do greške. Ovo garantuje integritet podataka i sprečava delimične ažuriranja.

Glavna svojstva transakcija opisuju se akronimom ACID:

  • Atomicnost — sve operacije unutar transakcije se izvršavaju u potpunosti ili nikako.
  • Konzistentnost — nakon izvršenja transakcije, baza ostaje u ispravnom stanju.
  • Izolacija — paralelne transakcije ne utiču jedna na drugu.
  • Trajnost — nakon potvrde, promene ostaju sačuvane čak i u slučaju padova.

Primer u Node.js koristeći biblioteku pg za 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();
  }
}