Senior
Kokius sandorius žinai? Kam jie skirti?
sobes.tech AI
Atsakymas iš AI
Go kalbant, sandoriai dažniausiai yra susiję su duomenų bazėmis ir naudojami siekiant užtikrinti ACID (atomingumą, nuoseklumą, izoliaciją ir patvarumą) savybes.
Sandorių tipai:
- Automatiniai sandoriai — kai kiekviena operacija vykdoma kaip atskiras sandoris.
- Aiškūs sandoriai — kai kūrėjas aiškiai pradeda, patvirtina arba atšaukia sandorį naudodamas
Begin(),Commit(),Rollback()metodus. - Ilgalaikiai sandoriai — naudojami paskirstytuose sistemose, kur sandoris gali trukti ilgai ir reikalauja koordinacijos.
Kodėl reikalingi sandoriai:
- Užtikrina, kad operacijų grupė arba bus visiškai įvykdyta, arba nebus įvykdyta iš viso.
- Prevencijos lenktynių sąlygų ir užtikrina duomenų vientisumą.
- Leidžia atšaukti pakeitimus klaidų atveju.
Pavyzdys, kaip naudoti sandorį su duomenų baze Go kalboje:
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)
}