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