Sobes.tech
Senior

Τι τύπους συναλλαγών γνωρίζεις; Για τι χρειάζονται;

sobes.tech AI

Απάντηση από AI

Στο Go, οι συναλλαγές συνήθως σχετίζονται με βάσεις δεδομένων και χρησιμοποιούνται για την εξασφάλιση των αρχών ACID (ατομικότητα, συνέπεια, απομόνωση, ανθεκτικότητα).

Τύποι συναλλαγών:

  • Αυτόματες συναλλαγές — κάθε λειτουργία εκτελείται ως ξεχωριστή συναλλαγή.
  • Ρητές συναλλαγές — ο προγραμματιστής ξεκινά, επιβεβαιώνει ή ακυρώνει ρητά μια συναλλαγή χρησιμοποιώντας τις μεθόδους Begin(), Commit(), Rollback().
  • Μακράς διάρκειας συναλλαγές — χρησιμοποιούνται σε κατανεμημένα συστήματα, όπου η συναλλαγή μπορεί να διαρκέσει πολύ και απαιτεί συντονισμό.

Γιατί χρειάζονται οι συναλλαγές:

  • Διασφαλίζουν ότι μια ομάδα λειτουργιών είτε θα ολοκληρωθεί πλήρως είτε καθόλου.
  • Προλαμβάνουν συνθήκες αγώνα και διασφαλίζουν την ακεραιότητα των δεδομένων.
  • Επιτρέπουν την αναίρεση αλλαγών σε περίπτωση σφαλμάτων.

Παράδειγμα χρήσης συναλλαγής σε Go με βάση δεδομένων:

tx, err := db.Begin()
if err != nil {
    log.Fatal(err)
}
_, err = tx.Exec("INSERT INTO users(name) VALUES(?)", "Alice")
if err != nil {
    tx.Rollback()
    log.Fatal(err)
}
err = tx.Commit()
if err != nil {
    log.Fatal(err)
}