Sobes.tech
Junior — Middle

Pouvez-vous expliquer ce qu'on entend par transaction dans le contexte des bases de données?

sobes.tech IA

Réponse de l'IA

Une transaction dans les bases de données est une séquence d'opérations qui s'exécute comme une seule unité. La transaction se termine avec succès dans son intégralité (commit) ou est complètement annulée (rollback) en cas d'erreur. Cela garantit l'intégrité des données et empêche les mises à jour partielles.

Les propriétés principales des transactions sont décrites par l'acronyme ACID :

  • Atomicité — toutes les opérations dans la transaction sont effectuées entièrement ou pas du tout.
  • Cohérence — après l'exécution de la transaction, la base de données reste dans un état correct.
  • Isolation — les transactions parallèles n'influencent pas les autres.
  • Durabilité — après la validation de la transaction, les modifications sont conservées même en cas de panne.

Exemple en Node.js utilisant la bibliothèque pg pour 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();
  }
}