Sobes.tech
Junior — Middle

Welke methoden van databases bieden bescherming tegen racecondities?

sobes.tech AI

Antwoord van AI

Om te beschermen tegen racecondities in databases worden de volgende methoden gebruikt:

  • Transacties en vergrendelingen: databases passen vergrendelingen toe op rij-, pagina- of tabelniveau om gelijktijdige wijzigingen van dezelfde gegevens te voorkomen.
  • Transactie-isolatie: isolatieniveaus (Read Uncommitted, Read Committed, Repeatable Read, Serializable) regelen de zichtbaarheid van wijzigingen tussen transacties en verminderen de kans op conflicten.
  • Optimistische vergrendeling: bij het bijwerken van gegevens wordt gecontroleerd of ze sinds het lezen niet zijn gewijzigd (bijvoorbeeld met een versie of tijdstempel). Als ze zijn gewijzigd, wordt de operatie teruggedraaid.
  • Pessimistische vergrendeling: gegevens worden onmiddellijk bij het lezen vergrendeld om wijzigingen door andere transacties te voorkomen.

Voorbeeld van optimistische vergrendeling met gebruik van de recordversie:

// Stel dat er een veld Version in de tabel is
var entity = dbContext.Entities.Find(id);
var currentVersion = entity.Version;

// Gegevens wijzigen
entity.Name = "Nieuwe Naam";

// Bij het opslaan wordt gecontroleerd of de versie niet is gewijzigd
try {
    dbContext.SaveChanges();
} catch (DbUpdateConcurrencyException) {
    // Afhandeling van conflict — gegevens zijn door een ander proces gewijzigd
}