Junior — Middle
Kokias metodas naudojamos duomenų nuoseklumui išlaikyti reliacinėse duomenų bazėse?
sobes.tech AI
Atsakymas iš AI
Norint išlaikyti duomenų nuoseklumą reliacinėse duomenų bazėse, taikomi šie metodai:
-
Transakcijos — leidžia vykdyti operacijų rinkinį kaip vieną vienetą. Jei viena operacija nepavyksta, visi pakeitimai atšaukiami, užtikrinant duomenų vientisumą.
-
ACID principai:
- Atomiskumas — operacijos transakcijos metu arba visiškai įvykdomos, arba visai ne.
- Nuoseklumas — duomenų bazė pereina iš teisingos būsenos į kitą.
- Izoliacija — paralelios transakcijos viena į kitą neveikia.
- Patvarumas — po patvirtinimo, pakeitimai išlieka net ir gedimų atveju.
-
Integriteto apribojimai: pirminiai raktai, svetimi raktai, unikalūs apribojimai, patikrinimai (CHECK), kurie neleidžia įvesti neteisingų duomenų.
-
Užraktai ir izoliacijos lygiai — valdo vienu metu prieinamą prieigą, išvengia konfliktų ir užtikrina nuoseklumą.
Pavyzdys Go kalba naudojant transakcijas:
trx, err := db.Begin()
if err != nil {
// klaidos apdorojimas
}
_, err = trx.Exec("UPDATE accounts SET balance = balance - 100 WHERE id = ?", fromID)
if err != nil {
trx.Rollback()
// klaidos apdorojimas
}
_, err = trx.Exec("UPDATE accounts SET balance = balance + 100 WHERE id = ?", toID)
if err != nil {
trx.Rollback()
// klaidos apdorojimas
}
err = trx.Commit()
if err != nil {
// klaidos apdorojimas
}
Šiame pavyzdyje pinigų pervedimas tarp sąskaitų vyksta vienoje transakcijoje, užtikrinant duomenų nuoseklumą.