Sobes.tech
Junior — Middle

Czy możesz wyjaśnić, co oznacza transakcja w kontekście baz danych?

sobes.tech AI

Odpowiedź od AI

Transakcja w bazach danych to sekwencja operacji, która jest wykonywana jako jedna całość. Transakcja kończy się sukcesem (commit) lub jest całkowicie wycofana (rollback) w przypadku błędu. Zapewnia to integralność danych i zapobiega częściowym aktualizacjom.

Główne właściwości transakcji opisuje akronim ACID:

  • Atomicity (Atomowość) — wszystkie operacje w transakcji są wykonywane w całości lub wcale.
  • Consistency (Spójność) — po wykonaniu transakcji baza danych pozostaje w poprawnym stanie.
  • Isolation (Izolacja) — równoległe transakcje nie wpływają na siebie nawzajem.
  • Durability (Trwałość) — po zatwierdzeniu transakcji zmiany są zachowane nawet w przypadku awarii.

Przykład w Node.js z użyciem biblioteki pg dla 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();
  }
}