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