Definitie: NoSQL is een verzamelnaam voor databases die gegevens niet in vaste tabellen met rijen en kolommen opslaan, zoals relationele SQL-databases, maar bijvoorbeeld als documenten, sleutel-waardeparen, brede kolommen of grafen. De naam wordt meestal uitgelegd als “Not only SQL”.

In het kort

  • Er zijn vier hoofdtypen NoSQL-databases: key-value, document, wide-column en graph.
  • Bekende voorbeelden zijn MongoDB (documenten), Redis (key-value) en Cassandra (brede kolommen).
  • NoSQL-databases werken zonder vast schema en schalen vaak horizontaal over meerdere servers; SQL-databases schalen meestal verticaal en blinken uit in relaties en transacties.
  • Veel moderne systemen gebruiken SQL en NoSQL naast elkaar, elk voor het werk waar het sterk in is.

Wat is NoSQL?

De meeste bedrijfsapplicaties werken met een relationele database, zoals MySQL, PostgreSQL of SQL Server. Gegevens staan daar in tabellen met vaste kolommen: een tabel klanten, een tabel orders, een tabel producten. Relaties tussen die tabellen worden vastgelegd met sleutels, en met de querytaal SQL haal je gecombineerde gegevens op. Die aanpak bestaat al decennia; volgens OVHcloud werd het relationele model in 1970 bedacht door Edgar F. Codd.

NoSQL-databases kiezen een andere opzet. Ze slaan gegevens op in een vorm die past bij hoe de applicatie ze gebruikt. Een productcatalogus met steeds wisselende eigenschappen past goed in documenten. Sessiegegevens van ingelogde gebruikers passen in een eenvoudige opslag met sleutels en waarden. Een netwerk van relaties tussen personen past in een grafendatabase.

Het belangrijkste verschil: een NoSQL-database vraagt meestal geen vooraf vastgelegd schema. Je kunt een record met extra velden opslaan zonder eerst de structuur van de hele database aan te passen. Dat maakt NoSQL flexibel, maar legt ook meer verantwoordelijkheid bij de applicatie om de gegevens consistent te houden.

Waar komt de term NoSQL vandaan?

Volgens OVHcloud gebruikte Carlo Strozzi de term NoSQL voor het eerst in 1998, voor een lichte database die geen SQL als querytaal gebruikte. In 2009 kreeg de term een nieuwe betekenis, toen Eric Evans en Johan Oskarsson hem opnieuw gebruikten voor de groeiende groep niet-relationele databases. Die opkomst hing samen met grote internetbedrijven die enorme hoeveelheden gegevens over veel servers moesten verdelen, iets waar relationele databases destijds minder goed in waren.

Omdat veel NoSQL-databases inmiddels ook querytalen hebben die op SQL lijken, wordt de naam vaak gelezen als “Not only SQL”: niet alleen SQL.

Welke soorten NoSQL-databases zijn er?

Type Hoe gegevens zijn opgeslagen Voorbeelden Geschikt voor
Key-value Een unieke sleutel met een bijbehorende waarde Redis Caching, sessies, tellers, wachtrijen
Document Documenten in een JSON-achtig formaat, met geneste velden MongoDB, Firestore Productcatalogi, contentbeheer, profielen met wisselende velden
Wide-column Rijen met flexibele kolommen, verdeeld over veel servers Cassandra Zeer grote hoeveelheden schrijfacties, tijdreeksen, logging
Graph Knooppunten en verbindingen daartussen Neo4j Sociale netwerken, aanbevelingen, fraudeanalyse

Azure noemt caching en sessieopslag als typische toepassingen van key-value-databases, en sociale netwerken, aanbevelingssystemen en fraudeanalyse voor grafendatabases. OVHcloud beschrijft Redis als een database die grotendeels in het geheugen werkt en vaak als cache wordt ingezet, en Cassandra als gedistribueerd en geschikt voor hoge beschikbaarheid.

SQL vs NoSQL: wat is het verschil?

SQL (relationeel) NoSQL (niet-relationeel)
Opslag Tabellen met rijen en kolommen Documenten, sleutel-waarde, kolommen of grafen
Schema Vast, vooraf bepaald Flexibel, vaak zonder vast schema
Relaties Sterk, met joins tussen tabellen Beperkt; gegevens worden vaak samen opgeslagen
Schalen Meestal verticaal: een zwaardere server Vaak horizontaal: meer servers
Consistentie Sterk, met ACID-transacties Vaak eventual consistency, afhankelijk van de database
Querytaal SQL, een gestandaardiseerde taal Per database verschillend
Bekende voorbeelden MySQL, PostgreSQL, SQL Server, Oracle MongoDB, Redis, Cassandra, Neo4j

Oracle vat het praktisch samen: NoSQL werkt goed voor vragen binnen één verzameling gegevens, maar biedt doorgaans geen complexe joins. Bij complexere vragen over meerdere soorten gegevens is een relationele database meestal beter.

ACID en eventual consistency

Relationele databases werken met ACID-transacties: een reeks wijzigingen wordt in zijn geheel uitgevoerd of helemaal niet. Boek je een betaling af van de ene rekening en bij op de andere, dan gebeurt dat altijd samen. Veel NoSQL-databases kiezen voor eventual consistency: kopieën van gegevens op verschillende servers kunnen even verschillen, maar worden na korte tijd gelijk. Dat maakt hoge snelheid en beschikbaarheid mogelijk, maar past niet bij elke toepassing. Moderne NoSQL-databases bieden overigens vaak ook transacties, binnen bepaalde grenzen.

Voordelen van NoSQL

  • Flexibel schema. Je kunt gegevens met wisselende velden opslaan zonder de database om te bouwen.
  • Horizontaal schalen. Oracle noemt sharding: gegevens worden over meerdere machines verdeeld, zodat je groeit door servers toe te voegen.
  • Snelheid bij eenvoudige vragen. Gegevens die samen worden gebruikt, staan ook samen opgeslagen.
  • Geschikt voor grote hoeveelheden gegevens en veel gelijktijdige schrijfacties.
  • Past bij moderne ontwikkeling. Documenten in JSON-formaat sluiten aan bij hoe JavaScript- en API-ontwikkelaars met gegevens werken.

Nadelen en beperkingen

  • Minder sterk in relaties. Gegevens die op veel manieren met elkaar samenhangen, zoals klanten, orders, facturen en betalingen, passen vaak beter in een relationele database.
  • Geen standaard. Elke NoSQL-database heeft een eigen querytaal en werkwijze, wat overstappen lastiger maakt.
  • Consistentie vraagt aandacht. De applicatie moet zelf meer bewaken dat gegevens kloppen.
  • Minder kennis en ondersteuning. OVHcloud merkt op dat er voor SQL doorgaans meer ondersteuning beschikbaar is, omdat die technologie al langer bestaat.
  • Rapportages zijn lastiger. Overzichten over veel soorten gegevens heen zijn in SQL vaak eenvoudiger te maken.

Wanneer kies je voor NoSQL?

NoSQL is een logische keuze bij:

  • gegevens zonder vaste structuur, zoals producten met heel verschillende eigenschappen of formulieren die steeds veranderen;
  • zeer grote hoeveelheden gegevens of veel gelijktijdige gebruikers, waarbij horizontaal schalen nodig is;
  • caching en sessieopslag, om een applicatie te versnellen;
  • realtime toepassingen, zoals chat, live feeds of het verwerken van sensorgegevens;
  • netwerken van relaties, waar een grafendatabase sterk in is.

Een relationele database ligt meer voor de hand bij:

  • bedrijfsprocessen met duidelijke structuur, zoals klanten, offertes, orders en facturen;
  • toepassingen waarin transacties altijd volledig moeten kloppen, zoals betalingen en voorraad;
  • veel rapportages en analyses over verschillende soorten gegevens heen.

Azure merkt op dat relationele databases een sterke keuze blijven wanneer de structuur stabiel is en transactionele integriteit essentieel is.

Wat is de CAP-stelling?

Bij databases die over meerdere servers zijn verdeeld, speelt de CAP-stelling een rol. Die stelt dat een gedistribueerd systeem niet tegelijk alle drie de volgende eigenschappen volledig kan garanderen:

  • Consistency (consistentie): elke gebruiker ziet op elk moment dezelfde, meest recente gegevens.
  • Availability (beschikbaarheid): elk verzoek krijgt een antwoord, ook als een deel van het systeem uitvalt.
  • Partition tolerance (partitietolerantie): het systeem blijft werken als de verbinding tussen servers wegvalt.

Omdat netwerkstoringen altijd kunnen voorkomen, moet een gedistribueerde database kiezen tussen meer nadruk op consistentie of op beschikbaarheid. Veel NoSQL-databases kiezen voor beschikbaarheid met eventual consistency; relationele databases leggen de nadruk op consistentie. Voor een opdrachtgever is de les eenvoudig: vraag wat er gebeurt als twee gebruikers tegelijk hetzelfde gegeven wijzigen, en of dat erg is voor jouw proces.

SQL en NoSQL samen

In de praktijk is het vaak geen of-of-keuze. Veel applicaties gebruiken een relationele database als hoofdopslag en Redis als cache voor snelheid. Een webshop kan de orders en betalingen in PostgreSQL bewaren en de zoekfunctie of productcatalogus in een documentdatabase. Daarnaast kunnen moderne relationele databases zelf ook JSON-gegevens opslaan en doorzoeken, waardoor de grens tussen beide werelden kleiner wordt.

Voorbeeld: welke database past bij welk onderdeel?

Neem een applicatie waarin een bedrijf aanvragen van klanten verwerkt. Klanten, aanvragen, offertes, statussen en gebruikers met rollen hangen sterk met elkaar samen. Je wilt overzichten per klant, per status en per medewerker, en een offerte moet altijd bij de juiste klant horen. Dat past in een relationele database.

Stel dat dezelfde applicatie later een functie krijgt die bijhoudt welke pagina’s gebruikers bekijken, met duizenden registraties per uur en wisselende gegevens per registratie. Dan kan een NoSQL-database voor dat onderdeel logischer zijn, naast de relationele database voor de kern.

Wat betekent dit voor jouw project?

De keuze voor een database volgt uit de gegevens en het proces, niet andersom. Ik kijk daarom eerst naar het proces: wat komt binnen, wie moet ermee verder en welke informatie heeft die persoon nodig? Daaruit volgt welke gegevens er zijn, hoe ze samenhangen en welke overzichten nodig zijn.

Voor de meeste bedrijfsapplicaties, met klanten, aanvragen, statussen en rapportages, is een relationele database een stevige basis. NoSQL kan daarnaast een rol spelen voor specifieke onderdelen. Belangrijk is dat de keuze wordt uitgelegd en dat een andere ontwikkelaar die later kan begrijpen.

Wil je weten welke opzet past bij jouw gegevens? Stuur me wat er nu binnenkomt, wie ermee werkt en welke overzichten je nodig hebt. Dan bepalen we samen de logische eerste stap.

Veelgestelde vragen over NoSQL

Wat is NoSQL?

NoSQL is een verzamelnaam voor databases die gegevens niet in vaste tabellen opslaan, maar bijvoorbeeld als documenten, sleutel-waardeparen, brede kolommen of grafen. Ze werken met een flexibel schema en schalen vaak over meerdere servers.

Wat is het verschil tussen SQL en NoSQL?

SQL-databases slaan gegevens op in tabellen met een vast schema en zijn sterk in relaties en transacties. NoSQL-databases werken met flexibele structuren, schalen vaak horizontaal en zijn sterk bij grote hoeveelheden of wisselende gegevens.

Is MongoDB een NoSQL-database?

Ja, MongoDB is een van de bekendste NoSQL-databases. Het is een documentdatabase die gegevens opslaat in een JSON-achtig formaat, met een flexibel schema.

Verwante termen

Backend · Schaalbaarheid · Software-architectuur · Node.js · Vectordatabase · Datamigratie

← Terug naar de kennisbank