SQL vs. NoSQL - de belangrijkste verschillen

SQL vs. NoSQL: wat zijn de verschillen?

De afgelopen jaren genereren moderne webapplicaties meer data dan ooit tevoren. Al die data moet opgeslagen worden en beheerd. Dat kan doorgaans volgens twee type databasemanagementsystemen: SQL-gebaseerd en NoSQL-gebaseerd. In deze blogpost: SQL vs. NoSQL. We leggen uit wat de verschillen tussen SQL vs. NoSQL databases zijn, en wat de impact ervan is op de hosting van je webapplicatie.

Databasesoftware

En database is een systematische verzameling van data. De data wordt georganiseerd in een database, waardoor datamanagement gemakkelijker wordt. Databases komen in meerdere varianten, waar de Database Management System (DBMS) de bekende variant is. Een DBMS is databasesoftware die je op een server moet installeren zodat je website of applicatie toegang heeft tot de opgeslagen gegevens of die deze gegevens aan de hand van code op de website kunt tonen.

Historisch gezien bestaan er meerdere manieren DMBS’en. In deze blogpost zoomen we in op de twee populairste vormen van de afgelopen jaren: de relationele DBMS’en de object-georiënteerde DBMS.

Relationele DBMS

Dit type DBMS definieert databaserelaties in de vorm van tabellen, die ook wel relaties worden genoemd. Relationele DBMS’en hebben meestal pregedefinieerde datatypes die ondersteund worden. Relationele DBMS’en zijn de meest populaire databases op het moment. Volgens onderzoek gebruikt ruim 60% van de webapplicaties op het internet een relationeel databasemanagementsysteem. MySQL is met 38.9% daar de meest populaire variant van.

Relationele DBMS’en maken vrijwel altijd gebruik van de taal SQL.

Non-relationele DBMS

Het tegenovergestelde van relationele DBMS’en zijn non-relationele DBMS’en. Non-relationele databases slaan de data over het algemeen ongestructureerd op. Ook zijn de objecten vaak gedistribueerd te benaderen, waardoor dit type databasesoftware geschikt is voor cloud computing en grote hoeveelheden data.

Non-relationele DBMS’en maken vrijwel altijd gebruik van de ‘taal’ NoSQL (wat niet echt een taal is, maar daar komen we later in deze blogpost op terug).

SQL

SQL staat voor Structure Query Language en kun je het best zien als een taal voor relationele databases. Je spreekt het uit als ‘es-kjoe-el’ of als ‘sie-kwol’. Met de taal wordt het mogelijk om databaserecords toe te voegen, te doorzoeken, updaten en verwijderen in databasesoftware.

Ook wordt de taal gebruik voor het onderhoud van databases en de optimalisering ervan. Bekende relationele databases die SQL gebruiken als voertaal zijn bijvoorbeeld MySQL, Oracle en Microsoft SQL server.

SQL databasesoftware is altijd relationeel en tabelgebaseerd (zoals je misschien kent van Excel). Het schalen van een SQL database gebeurt vrijwel altijd verticaal. Dat wil zeggen dat er altijd nieuwe hardware nodig als er bijvoorbeeld extra ruimte nodig is. Doorgaans zijn er voor SQL databases ook krachtige fysieke servers nodig. Die servers zorgen bijvoorbeeld voor extra rekenkracht als er veel complexe queries (verzoeken tot dataverwerking) over en weer worden verstuurd, wat bij moderne websites en webapplicaties vaak het geval is.

NoSQL

NoSQL staat voor Not Only SQL of Not SQL (een soortgelijke grap vind je trouwens terug in GNU – GNU’s not Unix – red). Over het algemeen zijn dit databases die om kunnen gaan met grote hoeveelheden gedistribueerde data. Deze systemen maken niet gebruik van de taal SQL, waarvan de syntax met name bedoeld is om data op te slaan en op te halen.

NoSQL databases maken daarentegen gebruik van een breed palet aan andere databasetechnologieën waarmee data gestructureerd, semi-gestructuureerd, ongestructuurd en polymorphisch kan worden opgeslagen. Vaak zijn er andere talen dan SQL mogelijk om de data in de database aan te roepen, zoals JSON.

NoSQL databases kom je tegen bij applicaties die te maken hebben met grote hoeveelheden data. Denk aan applicaties waarbij bijvoorbeeld sprake is van machine learning-functionaliteiten. Voorbeelden van NoSQL-software zijn bijvoorbeeld de Microsoft Azure dienst Cosmos DB of MongoDB. Dit zijn databasesoftware die in combinatie met cloud computing vele terabytes per dag kunnen verwerken.

NoSQL-databases zijn ook te gebruiken eenvoudige om te schalen. Er is bijvoorbeeld niet een superkrachtige fysieke server nodig om de beste resultaten en prestaties te behalen. Vaak kan een NoSQL database ook gevirtualiseerd worden in een Virtual Machine.

ACID vs. BASE

Zowel SQL als NoSQL-databases maken gebruik van dataconsistentiemodellen. De twee gebruikelijke varianten zijn ACID (voor RDBMS’en die gebruikmaken van SQL) en BASE (voor non-relationele databasesystemen die gebruikmaken NoSQL). Beide modellen worden gebruikt voor de transactie van data.

ACID

ACID is een acroniem voor Atomic, Consistent, Isolated en Durable.

  • Atomic: alle operaties in een transactie slagen of elke operatie wordt teruggedraaid.
  • Consistent: als de transactie voltooid is, is de database ‘structurally sound’
  • Isolated: datatransacties ‘concurreren’ niet met elkaar. Dat wil zeggen dat de een continue flow van data gemodereerd wordt door de databasesoftware en dat datatransactie sequentieel kunnen verlopen.
  • Durable: een datatransactie is permanent, zelfs als er gefaald wordt.

Op het moment dat data volgens de ACID eigenschappen is voltooid, is de data consistent en stabiel. ACID transacties gaan daarnaast heel secuur om met dataveiligheid.

BASE

BASE is een acroniem voor Basic Availability, Soft-state , Eventual consistency.

  • Basic Availability: de database werkt de hele tijd.
  • Soft-state: het opslaan van data hoeft niet altijd consistent te zijn. Ook bij gerepliceerde data hoeft dat niet onderling consistent te zijn.
  • Eventual consistency: sommige geëxposeerde data kan op een later moment getoond worden.

Over het algemeen geldt dat BASE-transacties een stuk losser zijn dan ACID-transacties. Data bij een BASE-transactie is met name geschikt voor schaalbaarheid, omdat het de nadruk legt op de beschikbaarheid van data in plaats van het repliceren van data.

Wanneer SQL en wanneer NoSQL?

Wanneer SQL?

  • SQL is de meest gebruikte taal voor het communiceren met relationele databasemanagementsystemen. Vrijwel alle grote contentmanagementsystemen (CMS) ondersteunen bijvoorbeeld MySQL. Een LAMP-stack (Linux, Apache, MySQL, PHP) is nog altijd veelvoorkomend in bijvoorbeeld WordPress hosting omgevingen.
  • SQL is ook geschikt voor het bouwen van op maat gemaakte dashboards waar data uit een database getoond wordt.
  • SQL zorgt ervoor dat data snel opgeslagen en opgehaald wordt uit de databasesoftware.
  • SQL is in staat om zeer complexe queries uit te voeren.

Wanneer NoSQL?

  • NoSQL is met name geschikt voor grote hoeveelheden ongestructureerde data, of als je een applicatie-infrastructuur hebt die meer gedistribueerd is, zoals een microservices-architectuur of wanneer je gebruikmaakt van
  • NoSQL is ook geschikt voor het loggen van data vanuit gedistribueerde bronnen.
  • NoSQL databases worden ook weleens gebruikt voor het opslaan van tijdelijke data, zoals data uit winkelwagentjes in e-commerce-omgevingen of sessiedata.
  • NoSQL wordt met name ingezet door bedrijven die veel met cloud computing doen en grote hoeveelheden data gedistribueerd moeten verwerken. Binnen de FAANG’s (Facebook, Amazon, Apple, Netflix en Google) van deze wereld vind je waarschijnlijk wel wat NoSQL-databases.

Conclusie: SQL vs. NoSQL

Eigenlijk kun je niet spreken van een absolute winnaar. Het één is niet beter dan het andere. SQL is nog altijd geschikt wanneer data consistent moet worden opgeslagen. SQL wordt nog altijd gebruikt voor het merendeel van de websites van deze wereld, al wint NoSQL ook aan terrein. SQL is uitermate geschikt voor monolitische applicaties, terwijl NoSQL geschikter is voor gedistribueerde systemen.

Voor de opslag van data met een SQL server is het over het algemeen aan te raden om gebruik te maken van krachtige servers die over veel rekenkracht bezitten. Zeker als er vele datatransacties plaatsvinden. Bij True kunnen we hierbij helpen. Voor de databasesoftware voor jouw webwinkel of webapplicatie kunnen we bijvoorbeeld een fysieke databaseserver) clusteren met virtual dedicated servers. Hierdoor ontstaat een snelpresterende hostingomgeving. Onze experts helpen daarnaast met het optimaliseren van de database zodat de queries altijd vloeiend verlopen.

Wil je daar een keer over sparren? Neem dan contact met ons op.

SQL vs. NoSQL - de belangrijkste verschillen
Kilian Drewel
Techblogger

schrijf je in voor de nieuwsbrief

Ontvang de nieuwste blogs van True elke twee weken in je mail

Databases - 18.06.2019

Op 9 juli 2019 stopt Microsoft definitief met de ondersteuning van SQL Server 2008 en 2008 R2, waardoor er geen beveiligingsupdates- en patches meer vrijkomen voor de SQL Server versies. Er zijn nu pakweg drie opties: upgraden naar een nieuwere versie van SQL Server, betalen voor aanvullende ondersteuning (Extended Security Updates) of een volledige overstap […]

Databases - 14.11.2018

Ieder jaar organiseert open-source database-ontwikkelaar Percona de Percona Live Europe conferentie. Deze conferentie staat geheel in het teken van de nieuwste trends en ontwikkelingen binnen de open-source database-community. Trueligans Rene (Infrastructure Engineer) en Marlin (Developer) waren dit jaar aanwezig. Zij kregen nieuwe informatie over innovaties bij Percona, ProxySQL én kwamen met een mooi experiment om […]

Databases - 21.04.2018

Leuk nieuwtje voor databasefanatiekelingen. Apple heeft een nieuw open source project op Github gereleased. FoundationDB heet het, en het is gedistribueerde databasesoftware die ontworpen is om grote hoeveelheden data te hanteren voor geclusterde servers. De software focust zich sterk op hoge prestaties, schaalbaarheid en fouttoleranties. Dit houdt in dat webprojecten die de software gebruiken voor […]

Blijf op de hoogte en schrijf u in voor onze nieuwsbrief
Schrijf u in voor de nieuwsbrief

Vraag offerte aan

Vul onderstaand formulier in. True neemt zo snel mogelijk contact met u op.