postgresql-vs-mysql-verschillen-overeenkomsten

De twee populairste gratis, open-source databasemanagementsystemen (DBMS) zijn PostgreSQL en MySQL. Beide databases zijn relationeel en gebruiken dus SQL, waardoor ze in functionaliteit grotendeels overeenkomen. Toch zijn er ook verschillen. Daarom op deze pagina de deepdive: PostgreSQL vs MySQL.

In dit blog gaan we in op:

Ook interessant: volledige uitleg over SQL varianten incl verschillen in syntax, clients & licentiemodel

Achtergrond van PostgreSQL vs achtergrond van MySQL

MySQL werd voor het eerst uitgebracht in 1995 door de Zweden Michael Wedenius en David Axmark. Zij hadden als doel om een simpele, snelle database te maken voor kleine applicaties of websites. Dankzij de opkomst van internet die gelijktijdig plaatsvond werd MySQL daarom snel populair.

PostgreSQL werd in 1996 voor het eerst gereleased en is ontwikkeld aan de University of California in Berkely. De namen 'Postgres' en 'PostgreSQL' worden door elkaar gebruikt, maar de officiële naam is PostgreSQL. De focus van PostgreSQL lag, in tegenstelling tot MySQL, juist op het ondersteunen van complexe datasets en queries.

Door de loop van de jaren hebben beide systemen zich ontwikkeld en inmiddels zijn de verschillen tussen beide systemen zeer klein. Toch zijn er nog verschillen.

Leren werken met SQL voor data analayse? Na onze 2-daagse SQL cursus kun je volledig zelfstandig werken met SQL.

Datatypes in PostgreSQL vs MySQL

Op het gebied van datatypes heeft PostgreSQL momenteel een voorsprong. PostgreSQL was één van de eerste database-systemen met ondersteuning voor arrays en het JSON-formaat, een bestandstype dat veel gebruikt wordt in webapplicaties. Inmiddels ondersteunt MySQL dit ook, maar PostgresSQL biedt meer flexibiliteit. Zo biedt MySQL bijvoorbeeld geen ondersteuning voor multi-dimensionale arrays, terwijl Postgres dit wel doet.

Performance van PostgreSQL vs MySQL

MySQL is nog altijd iets sneller voor simpele queries, alhoewel dit verschil minimaal is. Voor toepassingen waarbij elke miliseconde telt kan dit echter wel belangrijk zijn. Stel je hebt een tabel met producten, waarbij elk product een id heeft en je wilt een overzicht van producten met een id groter dan 100. Dit kan middels de volgende query:

SELECT naam, omschrijving FROM products WHERE id > 100

Bij dergelijke queries is MySQL vaak iets sneller. Zodra het complexer wordt, bijvoorbeeld wanneer er gebruikt wordt gemaakt van meerdere subqueries, is PostgresSQL vaak iets sneller. Deze verschillen zijn echter indicaties. Afhankelijk van de dataset en de gebruikte query kan de performance beter of juist slechter zijn.

Query syntax van PostgreSQL vs MySQL

MySQL voldoet in mindere mate aan de SQL-standaard dan Postgres. Zo heeft MySQL bijvoorbeeld geen ondersteuning voor FULL OUTER JOIN.

Onderstaande Postgres query toont alle rijen waarbij één van de ids NULL is:

SELECT *
FROM table1
FULL OUTER JOIN table2 ON table1.id = table2.id
WHERE table1.id IS NULL OR table2.id IS NULL;

Omdat in MySQL geen ondersteuning is voor FULL OUTER JOIN, zou dezelfde query zou er in MySQL als volgt uit zien:

SELECT *
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
UNION
SELECT *
FROM table1
RIGHT JOIN table2 ON table1.id = table2.id
WHERE table1.id IS NULL;

Hier zie je duidelijk de voordelen van PostgreSQL: de query is korter (en dus leesbaarder). Daarnaast is een enkele FULL OUTER JOIN efficiënter, en dus sneller, dan een UNION.

Procedurele taal van PostgreSQL vs MySQL

Voor het schrijven van stored procedures maakt Postgres gebruik van PL/pgSQL, MySQL gebruikt MySQL SPL. MySQL SPL is volledig gebaseerd op de SQL-standaard, terwijl PL/pgSQL een eigen taal is met eigen functionaliteit. Dit betekent dat je Postgres-specifieke logica moet leren om deze taal goed te begrijpen. In het algemeen wordt PL/pgSQL wel beschouwd als krachtiger en functioneler, waardoor het wel de moeite waard is om deze taal te leren.

Eén van de grootste verschillen is de ondersteuning voor zogenaamde 'cursors'. Hiermee kan geïtereerd worden over query resultaten, waardoor je rij-voor-rij logica kunt toepassen, vergelijkbaar met een FOR-loop in Python. Ook kunnen WHILE loops worden toegepast in PL/pgSQL. Al met al is PL/pgSQL een programmeertaal op zich. Dit is complexer dan MySQL SPL, maar biedt ook meer functionaliteit.

Conclusie

PostgresSQL en MySQL zijn beide gratis, open-source databasemanagementsystemen die al lange tijd in ontwikkeling zijn. Daarmee zijn het beide volwassen producten die in veel gevallen prima zullen voldoen. In de praktijk is Postgres echter net wat uitgebreider qua functionaliteit. Dit betekent dat je met Postgres minder snel tegen beperkingen aan zult lopen. Alhoewel MySQL in theorie iets sneller is bij simpele queries, is dit verschil in de praktijk nauwelijks merkbaar. Mede om die reden is Postgres de laatste jaren één van de popoulairste databases.

Wil je nog veel meer leren over SQL? Bekijk dan onze SQL cursus voor data analyse of download onderstaande opleidingsbrochure. In onze SQL cursus wisselen theorie en praktijkoefening elkaar steeds af. Nadat je deze training hebt gevolgd kun je zelfstandig met SQL werken. Je kunt ook altijd even contact opnemen via info@datasciencepartners.nl of 020 - 24 43 146 als je een vraag hebt.

by: