Junior — Middle
Jakie metody są używane do utrzymania spójności danych w relacyjnych bazach danych?
sobes.tech AI
Odpowiedź od AI
Aby utrzymać spójność danych w relacyjnych bazach danych, stosuje się następujące metody:
-
Transakcje — pozwalają na wykonanie zestawu operacji jako jednej jednostki. Jeśli jedna z operacji się nie powiedzie, wszystkie zmiany są wycofywane, zapewniając integralność danych.
-
Zasady ACID:
- Atomowość — operacje w ramach transakcji są wykonywane w całości lub wcale.
- Spójność — baza danych przechodzi z jednego poprawnego stanu w inny poprawny stan.
- Izolacja — równoległe transakcje nie wpływają na siebie nawzajem.
- Trwałość — po zatwierdzeniu transakcji zmiany są trwałe, nawet w przypadku awarii.
-
Ograniczenia integralności: klucze główne, klucze obce, ograniczenia unikalne, kontrole (CHECK), które zapobiegają wprowadzaniu niepoprawnych danych.
-
Blokady i poziomy izolacji — zarządzają dostępem równoczesnym, zapobiegając konfliktom i zapewniając spójność.
Przykład w Go z użyciem transakcji:
trx, err := db.Begin()
if err != nil {
// obsługa błędu
}
_, err = trx.Exec("UPDATE accounts SET balance = balance - 100 WHERE id = ?", fromID)
if err != nil {
trx.Rollback()
// obsługa błędu
}
_, err = trx.Exec("UPDATE accounts SET balance = balance + 100 WHERE id = ?", toID)
if err != nil {
trx.Rollback()
// obsługa błędu
}
err = trx.Commit()
if err != nil {
// obsługa błędu
}
W tym przykładzie, transfer pieniędzy między kontami odbywa się w ramach jednej transakcji, co gwarantuje spójność danych.