Junior — Middle
Ar galite paaiškinti, ką reiškia transakcija duomenų bazių kontekste?
sobes.tech AI
Atsakymas iš AI
Duomenų bazėse transakcija yra operacijų seka, kuri vykdoma kaip vienetas. Ji arba sėkmingai užbaigiama (commit) arba visiškai atšaukiama (rollback), jei įvyksta klaida. Tai užtikrina duomenų vientisumą ir neleidžia dalinių atnaujinimų.
Pagrindinės transakcijų savybės aprašomos trumpiniu ACID:
- Atomiskumas — visos operacijos transakcijos viduje arba visiškai įvykdomos, arba visai ne.
- Nuoseklumas — po transakcijos įvykdymo duomenų bazė lieka teisingoje būklėje.
- Izoliacija — paralelios transakcijos viena į kitą neveikia.
- Patvarumas — po patvirtinimo pakeitimai išlieka net ir gedimų atveju.
Pavyzdys Node.js naudojant pg biblioteką 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();
}
}