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
}