Junior — Middle
Můžete vysvětlit, co se rozumí pod pojmem transakce v kontextu databází?
sobes.tech AI
Odpověď od AI
Transakce v databázích je sled operací, které se provádějí jako jedna celek. Transakce buď úspěšně dokončí celý proces (commit), nebo je úplně vrácena (rollback), pokud dojde k chybě. To zajišťuje integritu dat a zabraňuje částečným aktualizacím.
Hlavní vlastnosti transakcí jsou popsány zkratkou ACID:
- Atomicita — všechny operace v rámci transakce jsou provedeny úplně nebo vůbec.
- Konzistence — po provedení transakce zůstává databáze ve správném stavu.
- Izolace — paralelní transakce na sebe navzájem neovlivňují.
- Dostatečnost — po potvrzení transakce jsou změny zachovány i při selhání.
Příklad v Node.js s knihovnou pg pro 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();
}
}