Voorbereiding op SQL-sollicitatiegesprekken · Les

ACID-eigenschappen uitgelegd

Atomiciteit, consistentie, isolatie en duurzaamheid aan de hand van concrete voorbeelden.

Les 1 van 413 stappen

ACID-eigenschappen uitgelegd is een gratis Voorbereiding op SQL-sollicitatiegesprekken-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Voorbereiding op SQL-sollicitatiegesprekken. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op SQL-sollicitatiegesprekken bevat in totaal 4 lessen.

Waarom gesprekvoerders naar ACID vragen

Wanneer een gesprekvoerder op seniorniveau zegt "Leg ACID stap voor stap uit", test diegene niet of je vier woorden uit je hoofd hebt geleerd. Diegene wil weten of je begrijpt wat een database garandeert wanneer veel gebruikers er tegelijk gebruik van maken.

ACID staat voor atomiciteit, consistentie, isolatie en duurzaamheid. Elke database met transacties (PostgreSQL, MySQL/InnoDB, SQL Server, Oracle) belooft deze vier eigenschappen voor bewerkingen die binnen een transactie worden uitgevoerd.

De sterkste antwoorden koppelen elke letter aan een concrete fout die ermee wordt voorkomen. In de volgende onderdelen doen we precies dat.

Wat is een transactie?

Een transactie is een werkeenheid die de database als één ondeelbare stap behandelt. Je opent die met BEGIN, voert een of meer instructies uit en gebruikt vervolgens COMMIT om de wijzigingen definitief te maken of ROLLBACK om alles te verwerpen.

Het klassieke voorbeeld is een bankoverschrijving: schrijf de ene rekening af en schrijf de andere bij. Beide moeten gebeuren, of geen van beide. Een transactie is het omhulsel waarmee je die garantie kunt bieden.

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

A = Atomiciteit

Atomiciteit betekent dat een transactie alles-of-niets is. Als een instructie mislukt of de server halverwege uitvalt, wordt elke wijziging in die transactie teruggedraaid alsof de transactie nooit was gestart.

In het voorbeeld met de overschrijving garandeert atomiciteit dat de afschrijving ook ongedaan wordt gemaakt als het bijschrijven mislukt nadat de afschrijving is gelukt. Je raakt nooit geld kwijt door een halfafgeronde bewerking.

Formulering voor een sollicitatiegesprek: "Atomiciteit zorgt ervoor dat de transactie als geheel wordt vastgelegd of helemaal niet, zonder gedeeltelijke toestand."

Atomiciteit in de praktijk

Hier schendt de tweede wijziging een CHECK-beperking (het saldo mag niet negatief worden). De database breekt de transactie af en ROLLBACK maakt ook de eerste wijziging ongedaan.

Het belangrijkste punt voor sollicitatiegesprekken: na het terugdraaien heeft rekening 1 nog steeds het oorspronkelijke saldo. Er staat geen gedeeltelijke schrijfactie in de tabel.

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- next line fails: balance would go below 0
UPDATE accounts SET balance = balance - 999999 WHERE id = 2;
ROLLBACK;  -- account 1 is restored to its original balance

C = Consistentie

Consistentie betekent dat een transactie de database van de ene geldige toestand naar een andere geldige toestand brengt. Elke vastgelegde transactie moet alle gedefinieerde regels respecteren: beperkingen, vreemde sleutels, triggers en trapsgewijze acties.

Als een transactie een geschonden beperking zou achterlaten (een verweesde vreemde sleutel, een dubbele primaire sleutel of een mislukte CHECK), weigert de database de transactie vast te leggen.

Nuance om te noemen: de database dwingt gedeclareerde regels af, maar invarianten op applicatieniveau ("een gebruiker mag maximaal 3 actieve sessies hebben") zijn jouw verantwoordelijkheid, tenzij je ze als beperkingen modelleert.

Consistentie afgedwongen door beperkingen

Consistentie is grotendeels de optelsom van je schemaregels. Hieronder garandeert een vreemde sleutel dat je nooit een bestelling kunt invoegen voor een klant die niet bestaat.

Als de invoeging naar een ontbrekende klant verwijst, mislukt de transactie, draait atomiciteit die terug en blijft de consistentie behouden. Daarom zeggen interviewers dat atomiciteit en consistentie samenwerken.

CREATE TABLE orders (
  id INT PRIMARY KEY,
  customer_id INT NOT NULL REFERENCES customers(id),
  amount NUMERIC(10,2) CHECK (amount > 0)
);

-- This fails if customer 999 does not exist, keeping data consistent
INSERT INTO orders (id, customer_id, amount) VALUES (1, 999, 50.00);

I = Isolatie

Isolatie betekent dat gelijktijdige transacties elkaar niet in de weg zitten. Idealiter gedraagt elke transactie zich alsof die alleen werd uitgevoerd, zelfs wanneer er tientallen tegelijk worden uitgevoerd.

In de praktijk bieden databases verschillende isolatieniveaus die strengheid inruilen voor prestaties. Zwakkere niveaus staan bepaalde anomalieën toe (vuile lezingen, fantoomlezingen) in ruil voor meer gelijktijdigheid.

Dit is het meest uitgebreide onderdeel van elk sollicitatiegesprek over ACID, dus de volgende twee lessen behandelen isolatieniveaus en leesanomalieën uitvoerig.

Waarom isolatie een spectrum is

Perfecte isolatie (SERIALIZABLE) is duur, omdat alle mogelijke conflicten door verweven uitvoeringen moeten worden voorkomen, vaak door transacties te vergrendelen of af te breken.

Daarom definieert de SQL-standaard vier niveaus. Een veelvoorkomende valkuil in sollicitatiegesprekken: kandidaten nemen aan dat isolatie binair is. Dat is niet zo. Je kiest expliciet hoeveel isolatie je wilt.

  • READ UNCOMMITTED zwakste
  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLE sterkste
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT SUM(balance) FROM accounts;
-- ... business logic ...
COMMIT;

D = Duurzaamheid

Duurzaamheid betekent dat de wijzigingen van een vastgelegde transactie behouden blijven na crashes, stroomuitval en herstarts. Een vastgelegde transactie staat op stabiele opslag.

Databases bereiken dit met een vooruitgeschreven logboek (WAL): wijzigingen worden naar een duurzaam logboek geschreven voordat de gegevensbestanden worden bijgewerkt. Bij een herstart speelt de database-engine het logboek opnieuw af om vastgelegd werk te herstellen dat nog niet in de hoofdgegevensbestanden terechtgekomen was.

Formulering voor een sollicitatiegesprek: "Duurzaamheid wordt gegarandeerd door het WAL; commit retourneert pas nadat de logboekregistratie naar schijf is weggeschreven."

De bankoverschrijving als geheel

Eén overschrijving demonstreert alle vier eigenschappen tegelijk:

  • Atomiciteit: beide wijzigingen worden uitgevoerd of geen van beide.
  • Consistentie: een CHECK zorgt ervoor dat saldi niet negatief worden.
  • Isolatie: een gelijktijdige lezer ziet geen halfafgeronde overschrijving.
  • Duurzaamheid: na COMMIT blijven de nieuwe saldi behouden na een crash.

Dat je één voorbeeld aan alle vier letters kunt koppelen, levert precies punten op in het sollicitatiegesprek.

BEGIN;
UPDATE accounts SET balance = balance - 100
  WHERE id = 1 AND balance >= 100;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

Veelgestelde vervolgvragen

Interviewers vragen vaak door over randgevallen. Bereid je voor op:

  • "Welke eigenschap dwingt een vreemde sleutel af?" Consistentie.
  • "Wat beschermt je tegen een servercrash halverwege een transactie?" Atomiciteit (terugdraaien van niet-vastgelegde wijzigingen) plus duurzaamheid (opnieuw afspelen van vastgelegde wijzigingen).
  • "Is isolatie gratis?" Nee, sterkere isolatie gaat ten koste van gelijktijdigheid.
  • "Bieden NoSQL-opslagsystemen ACID?" Veel systemen ruilen dit in voor beschikbaarheid (BASE); zeg dat het van de database-engine afhangt.

Korte controle

Test je begrip van wat elke ACID-eigenschap doet.

Samenvatting: ACID in één adem

Je kunt de vraag nu helder beantwoorden:

  • Atomiciteit - alles-of-niets; gedeeltelijk werk wordt teruggedraaid.
  • Consistentie - elke vastlegging respecteert de beperkingen en laat een geldige toestand achter.
  • Isolatie - gelijktijdige transacties beschadigen elkaar niet; de strengheid is instelbaar.
  • Duurzaamheid - vastgelegde gegevens blijven behouden na crashes, dankzij het vooruitgeschreven logboek.

Koppel elke letter aan een concrete fout die de eigenschap voorkomt en je komt moeiteloos door het begin van elk sollicitatiegesprek over gelijktijdigheid.

Gratis beginnen

Leer SQL met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “ACID-eigenschappen uitgelegd” gratis?

Ja — de volledige tekst van “ACID-eigenschappen uitgelegd” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Voorbereiding op SQL-sollicitatiegesprekken wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op SQL-sollicitatiegesprekken bevat in totaal 4 lessen.

Wat leer ik in “ACID-eigenschappen uitgelegd”?

Atomiciteit, consistentie, isolatie en duurzaamheid aan de hand van concrete voorbeelden. Je oefent met Voorbereiding op SQL-sollicitatiegesprekken door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Voorbereiding op SQL-sollicitatiegesprekken te beginnen?

Ervaring vooraf is niet nodig. Voorbereiding op SQL-sollicitatiegesprekken op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “ACID-eigenschappen uitgelegd”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Voorbereiding op SQL-sollicitatiegesprekken?

Ja. Elke les over Voorbereiding op SQL-sollicitatiegesprekken bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. ACID-eigenschappen uitgelegd
  2. De vier isolatieniveaus
  3. Dirty reads, non-repeatable reads en phantom reads
  4. Deadlocks, locking en MVCC
← Terug naar Voorbereiding op SQL-sollicitatiegesprekken