Sobes.tech
Junior — Middle

Milyen adatbázis módszerek biztosítanak védelmet a versenyhelyzetek ellen?

sobes.tech MI

Válasz az MI-től

Az adatbázisokban a versenyhelyzetek elleni védelem érdekében a következő módszereket alkalmazzák:

  • Tranzakciók és zárolások: az adatbázisok zárolásokat alkalmaznak sor-, oldal vagy tábla szinten, hogy megakadályozzák ugyanazon adatok egyidejű módosítását.
  • Tranzakciók izolációja: az izolációs szintek (Read Uncommitted, Read Committed, Repeatable Read, Serializable) szabályozzák a változások láthatóságát a tranzakciók között, csökkentve a konfliktusok valószínűségét.
  • Optimista zárolás: az adatok frissítésekor ellenőrzik, hogy azokat az olvasás óta nem változtatták-e meg (például verzió vagy időbélyeg segítségével). Ha változtak, az művelet visszavonásra kerül.
  • Peszimista zárolás: az adatokat az olvasás során azonnal zárolják, hogy megakadályozzák más tranzakciók által történő módosításokat.

Az optimista zárolás példája verzió használatával:

// Tegyük fel, hogy van egy Version mező a táblában
var entity = dbContext.Entities.Find(id);
var currentVersion = entity.Version;

// Adatok módosítása
entity.Name = "Új Név";

// Mentéskor ellenőrizze, hogy a verzió nem változott-e
try {
    dbContext.SaveChanges();
} catch (DbUpdateConcurrencyException) {
    // Konfliktus kezelése — az adatokat egy másik folyamat módosította
}