Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot, ko nozīmē transakcija datu bāzu kontekstā?

sobes.tech AI

Atbilde no AI

Datu bāzēs transakcija ir operāciju secība, kas tiek izpildīta kā vienība. Tā vai nu pilnībā noslēdzas ar panākumiem (commit), vai pilnībā tiek atsaukta (rollback), ja notiek kļūda. Tas nodrošina datu integritāti un novērš daļēju atjaunināšanu.

Galvenās transakciju īpašības ir aprakstītas ar saīsinājumu ACID:

  • Atomiskums — visas operācijas transakcijas ietvaros vai nu tiek pilnībā izpildītas, vai vispār ne.
  • Saskaņotība — pēc transakcijas izpildes datu bāze paliek pareizā stāvoklī.
  • Izolācija — paralēlas transakcijas neietekmē viena otru.
  • Noturība — pēc apstiprināšanas izmaiņas paliek saglabātas pat avāriju gadījumā.

Node.js piemērs ar pg bibliotēku 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();
  }
}