Junior — Middle
Можете ли да обясните какво се разбира под транзакция в контекста на базите данни?
sobes.tech AI
Отговор от AI
Транзакцията в базите данни е последователност от операции, която се изпълнява като едно цяло. Тя или завършва успешно (commit), или се отменя напълно (rollback), ако възникне грешка. Това гарантира цялостта на данните и предотвратява частични актуализации.
Основните свойства на транзакциите са описани с акронима ACID:
- Атомарност — всички операции в рамките на транзакцията се изпълняват напълно или изобщо не се изпълняват.
- Последователност — след изпълнение на транзакцията базата данни остава в правилно състояние.
- Изолираност — паралелните транзакции не влияят една на друга.
- Здравина — след потвърждаване на транзакцията промените се запазват дори при сривове.
Пример в Node.js с библиотеката pg за 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();
}
}