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