Sobes.tech
Junior — Middle

Kas saaksite selgitada, mida mõistetakse andmebaaside kontekstis transaktsioonina?

sobes.tech AI

Vastus AI-lt

Andmebaasides on tehing (transaction) operatsioonide jada, mis täidetakse kui üks tervik. Tehing lõpeb edukalt kogu ulatuses (commit) või tühistatakse täielikult (rollback), kui tekib viga. See tagab andmete terviklikkuse ja takistab osalisi uuendusi.

Tehingute peamised omadused on kirjeldatud akronüümiga ACID:

  • Atomilisus — kõik tehingu sees olevad operatsioonid täidetakse täielikult või mitte üldse.
  • Konsistents — pärast tehingu täitmist jääb andmebaas õiges seisundis.
  • Isoleeritus — paralleelsed tehingud ei mõjuta üksteist.
  • Püsivus — pärast tehingu kinnitamist jäävad muudatused säilima isegi rikke korral.

Node.js näide kasutades pg teeki PostgreSQL jaoks:

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();
  }
}