Databases zonder mysterie

Database en DBMS: wie doet wat?

9 min
What you'll learn
  • het verschil zien tussen een database (georganiseerde opslag) en een : het programma dat SQL-queries uitvoert en de data beheert
  • uitleggen welke route een query aflegt, «SQL → DBMS → resultaat», en waarom een stapel Excel-bestanden bezwijkt onder duizenden gelijktijdige gebruikers
  • benoemen wat een DBMS toevoegt bovenop «gewoon bestanden»: transacties, een herstellogboek (), toegangsrechten (GRANT), integriteitscontroles

Hoofdstuk 1 — «De kaart van het archief»

De momentopname van «Kotomarket» is geen signaal meer uit een dode sector: de ligt nu in een quarantainecompartiment van Vault-9. Onderaan staat nog steeds dezelfde handtekening: «K.». Vanochtend flitst er een nieuwe regel over je holopaneel: «Toegang verleend: de inventaris van het archief. Uitgegeven door: module S.Q.L.» De deur van de vault schuift opzij; daarachter zoemen serverrekken in een gelijkmatig amberkleurig licht.

QUERY: Voordat je het geheugen van een ander leest, moet je begrijpen hoe het is opgebouwd. Laten we beginnen bij de kern: wat hier de opslag is, en wie de bewaarder is.

Database en DBMS

Een database (DB) is georganiseerde opslag. In de momentopname van «Kotomarket» vind je kopers, producten, bestellingen en gebeurtenissen: niet verspreid over losse bestanden, maar in een heldere structuur. Daardoor zijn ze zelfs honderdzestig jaar later nog leesbaar.

Maar opslag geeft zelf geen antwoord op vragen. Je hebt een programma nodig dat tabellen kan aanmaken, nieuwe bestellingen kan wegschrijven, data kan lezen en kan bewaken dat de verbindingen heel blijven. Dat is een (databasemanagementsysteem). Voorbeelden zijn PostgreSQL, MySQL en ClickHouse. Onze momentopname is een PostgreSQL-database, en die spreekt nog steeds dezelfde SQL als toen de winkel nog draaide.

Jij schrijft een query in SQL → je stuurt die naar het DBMS → het DBMS haalt de gevraagde data op en geeft het resultaat terug. Excel is prima voor een persoonlijke spreadsheet, maar niet voor een winkel waar duizenden gebruikers tegelijk producten bekijken, bestellingen plaatsen en gebeurtenissen in het systeem achterlaten.

Een cadet bij de ingang van Vault-9: tussen de cadet en de geheugenrekken staat een holografische poortwachter, het DBMS
Het archief bewaart het geheugen, maar alleen de bewaarder beantwoordt vragen: de query gaat naar het DBMS, en alleen het DBMS raakt de data aan.

Database and DBMS

A database is an organized store. The Kotomarket holds buyers, products, orders, and events — not scattered across files, but in a clear structure. That’s exactly why it can still be read a hundred and sixty years later.

But the store itself doesn’t answer questions. You need a program that can create tables, record new orders, read data, and make sure the links never break. That’s a (database management system). Examples: PostgreSQL, MySQL, ClickHouse. Our snapshot is a PostgreSQL database, and it still speaks the same SQL it did when the shop was alive.

You write a query in SQL → send it to the DBMS → the DBMS fetches the data you asked for and returns the result. Excel is fine for a personal spreadsheet, but not for a shop where thousands of users browse products, place orders, and leave events in the system all at once.

clientDBMSparserplannerexecutordata filesSQL queryresultdatathe client talks to the DBMS, not the files directly
Alle wegen naar de data lopen via het DBMS: het neemt SQL aan, voert die uit en bewaakt de integriteit van de database.

Wat een DBMS kan wat «gewoon bestanden» niet kunnen

Op het eerste gezicht lijkt de winkel ook zonder te kunnen: bestellingen kun je toch gewoon in een CSV of Excel-bestand zetten? Op de schaal van een persoonlijk notitieboekje werkt dat ook, totdat je taken tegenkomt waarvoor een DBMS juist is ontworpen.

  • Gelijktijdige toegang. In het levende «Kotomarket» plaatsten kopers tegelijkertijd bestellingen. Twee processen die naar hetzelfde bestand schrijven, kunnen elkaars wijzigingen overschrijven; een DBMS voert wijzigingen uit als transacties en regelt parallelle bewerkingen zelf. PostgreSQL doet dit via het -mechanisme: lezers blokkeren schrijvers niet, en andersom.
  • Herstel na een crash. De stroom valt uit midden in een schrijfactie: het bestand raakt beschadigd, en niemand weet welk deel van de bestelling nog is opgeslagen. Een DBMS legt de wijziging eerst vast in een logboek (in PostgreSQL de , write-ahead log) en speelt die na een crash opnieuw af: de bestelling is óf volledig weggeschreven, óf helemaal niet.
  • Toegangsrechten. Een bestand is óf helemaal open, óf helemaal dicht. In een DBMS kun je rechten veel preciezer instellen, zelfs per tabel:
-- De analist krijgt alleen leesrecht op bestellingen, zonder het recht ze te wijzigen
GRANT SELECT ON orders TO analyst;
  • Integriteit. Een DBMS accepteert geen bestelling met tekst in een prijsveld, of met een verwijzing naar een koper die niet bestaat: kolomtypes en beperkingen worden bij elke schrijfactie gecontroleerd. Een bestand maakt het niet uit wat erin staat.
  • Declaratieve vragen. «Toon bestellingen duurder dan 5000» is één regel SQL. Met een bestand moet iemand voor dezelfde taak een programma schrijven, en dat programma moet ook nog foutloos zijn.

Een is de actieve tussenlaag tussen jou en de data: het neemt SQL-queries aan, voert ze uit en voorkomt dat de database in chaos vervalt. In deze cursus leren we werken met PostgreSQL; dat kom je vaak tegen in vacatures voor data-analyse en backendontwikkeling. De bewaarder ken je nu. Maar voordat je de inventaris van onze momentopname opent, leidt QUERY je naar de aangrenzende sectie: het register van andere archieven van de oude aarde. Zo zie je waarom juist ons archief in zijn geheel bewaard is gebleven.

Interview question

Sollicitatievraag: wat is het verschil tussen een database en een ? Waarom zou een applicatie data niet gewoon in bestanden opslaan?

Sterk antwoord: een database is georganiseerde data, een DBMS is het programma dat die data beheert (PostgreSQL, MySQL, ClickHouse). Bestanden bieden geen goede gelijktijdige toegang (parallelle schrijfacties kunnen elkaar overschrijven), geen betrouwbaar herstel na een crash (een DBMS houdt een logboek bij en rondt wijzigingen na herstel correct af), geen granulaire rechten en geen integriteitscontroles. Bovendien beantwoordt een DBMS declaratieve SQL-queries, terwijl je een bestand met eigen code zou moeten uitlezen.

Check yourself
Wie doet wat: de database of het DBMS?