Junior — Middle
Какви методи се използват за запазване на съгласуваността на данните в релационните бази данни?
sobes.tech AI
Отговор от AI
За запазване на съгласуваността на данните в релационните бази данни се прилагат следните методи:
-
Транзакции — позволяват изпълнението на набор от операции като едно цяло. Ако една операция се провали, всички промени се отменят, осигурявайки цялостността на данните.
-
Принципи ACID:
- Атомарност — операциите в рамките на транзакцията се изпълняват напълно или изобщо не се изпълняват.
- Съвместимост — базата данни преминава от едно правилно състояние в друго.
- Изолация — паралелните транзакции не влияят една на друга.
- Здравина — след потвърждаване, промените остават дори при сривове.
-
Ограничения за цялостност: първични ключове, външни ключове, уникални ограничения, проверки (CHECK), които предотвратяват въвеждането на грешни данни.
-
Блокировки и нива на изолация — управляват паралелния достъп, предотвратяват конфликти и гарантират съгласуваност.
Пример на Go с използване на транзакции:
trx, err := db.Begin()
if err != nil {
// обработка на грешка
}
_, err = trx.Exec("UPDATE accounts SET balance = balance - 100 WHERE id = ?", fromID)
if err != nil {
trx.Rollback()
// обработка на грешка
}
_, err = trx.Exec("UPDATE accounts SET balance = balance + 100 WHERE id = ?", toID)
if err != nil {
trx.Rollback()
// обработка на грешка
}
err = trx.Commit()
if err != nil {
// обработка на грешка
}
В този пример прехвърлянето на пари между сметки се извършва в рамките на една транзакция, което гарантира съгласуваността на данните.