Data zijn in wezen slechts een verzameling van verschillende feiten en waarnemingen. Na verloop van tijd realiseerden ontwikkelaars zich dat het beheren van data niet slechts een optioneel volgsysteem was, maar noodzakelijk naarmate de wereld geleidelijk meer verbonden raakte via het internet.

Tegenwoordig gebruiken bedrijven data om potentiële klanten te analyseren, hun potentieel te realiseren, risico’s te verminderen, enz.

Met de toename van de hoeveelheid data over de hele wereld is er een steeds grotere behoefte aan robuuste en flexibele databases die kunnen helpen om data efficiënter te beheren. Dit artikel onderzoekt de twee meest gebruikte open-source databases voor WordPress en hun verschillen: PostgreSQL vs MySQL.

Maar eerst, wat zijn WordPress databases?

Laten we dat uitzoeken!

Wat zijn WordPress databases?

Een enorm aantal bedrijven gebruiken WordPress om hun websites te hosten, maar liefst 43% van alle websites op het internet! Bovendien is het goed voor ongeveer 60% van alle gebruikte Content Management Systemen (CMS). De gebruiksvriendelijke lay-out maakt het de perfecte keuze voor beginners. Hoewel je geen coderingskennis hoeft te hebben om WordPress te gebruiken, helpt het zeker om de verschillende elementen te begrijpen, waaronder databases.

Zonder een WordPress database kan je website niet functioneren. Het databasesysteem is in wezen de ruggengraat van je website. Het zorgt ervoor dat alles wordt bijgehouden, van de content van je blog tot de comments en wijzigingen van verschillende gebruikers. Het zorgt er zelfs voor dat de website kan laden en uitvoeren.

Een ideale database moet flexibel, kostenvriendelijk en schaalbaar zijn. Je kunt gerust zijn, want er zijn verschillende open-source databases beschikbaar die je kunnen helpen je data binnen WordPress bij te houden. We zullen ons voor nu concentreren op PostgreSQL en MySQL.

Wat is PostgreSQL?

Het PostgreSQL logo, met de tekst onder een gestileerde blauwe olifantenkop omlijnd in zwart-wit.
PostgreSQL logo (Beeldbron: Uberconf)

PostgreSQL is een open-source, object-relationeel databasebeheersysteem. Het is volledig compatibel met SQL en is gebouwd met veel mogelijkheden. Het is ook uitbreidbaar, waardoor het nuttig is voor iedereen die zakelijke tools nodig heeft. Het is speciaal ontworpen voor efficiëntie en kan in bijna alle software worden geïntegreerd.

PostgreSQL is objectgeoriënteerd, waardoor het mogelijk is om datatypen uit te breiden om eigen types te maken, en het ondersteunt bijna elke database. Dit hoofdstuk beschrijft de geschiedenis, mogelijkheden en gebruiksmogelijkheden.

Geschiedenis

40 jaar geleden verliet een jonge pionier, Michael Stonebraker, de leider van het Ingres project team, Berkley om een eigen versie van Ingres te ontwikkelen. Daarna keerde hij terug naar Berkley en startte een post-Ingres project dat verschillende problemen aanpakte die de andere databases in die tijd ondervonden.

Dat project, dat we nu kennen als PostgreSQL, was uitgerust met verschillende features die nodig waren om meerdere “object-relationele” datatypen te ondersteunen, inclusief ondersteuning voor regels om een consistente relatie tussen de tabellen te handhaven en de replicatie van data over servers. De eerste uitgave van PostgreSQL vormde versie 6.0 op 29 januari 1997. Sindsdien zijn ontwikkelaars, ondersteunende bedrijven en zelfs vrijwilligers de databasesoftware blijven onderhouden onder zijn vrije en open licentie.

Belangrijkste features

PostgreSQL heeft veel te bieden als databasebeheersysteem. Het heeft zijn reputatie verdiend op het gebied van robuustheid, hoge betrouwbaarheid, prestaties, flexibiliteit en replicatiegemak.

Laten we eens kijken wat PostgreSQL tot een onmisbaar tool voor je bedrijf maakt.

Zeer betrouwbaar

PostgreSQL ondersteunt foreign keys, stored procedures, joins en views in verschillende talen. Het bevat verschillende datatypen en ondersteunt de opslag van grote objecten, waaronder afbeeldingen, geluiden en video’s. Omdat het open-source is, wordt het ondersteund door ontwikkelaars die een ongeëvenaard onderhoudssysteem bieden door regelmatig te proberen bugs te vinden en de software te verbeteren.

Het is ook fouttolerant door de write-ahead loggingfeature, die het mogelijk maakt om online back-up en point-in-time herstel te ondersteunen. Terugkeren naar elk moment dat door de WAL data wordt gedekt, is mogelijk door een eerdere fysieke backupdatabase te installeren.

Bovendien hoeft de “fysieke backup” niet onmiddellijk een momentopname van de database te zijn – als hij in het verleden is gemaakt, zal het opnieuw afspelen van het WAL logboek voor dat specifieke tijdstip eventuele interne inconsistenties oplossen.

Flexibel

PostgreSQL is open-source, dus de code is vrij beschikbaar om crossplatform aan te passen – het kan worden aangepast om op elk platform te werken, inclusief Windows, Solaris, OS X en Linux. Bovendien kan het meerdere gebruikers tegelijk aan, door alleen gelijktijdige updates van dezelfde rij te blokkeren.

Uitbreidbaarheid

Uitbreidbaarheid is een software engineeringprincipe dat gaat over toekomstige groei. PostgreSQL biedt een grote uitbreidbaarheid omdat de werking ervan catalogusgestuurd is, d.w.z. informatie wordt opgeslagen in databases, kolommen, tabellen, enz. De just-in-time (JIT) compilatie van expressies maakt het mogelijk om je codes vanuit verschillende programmeertalen te schrijven zonder je database opnieuw te compileren en je datatypes te definiëren. Deze mogelijkheid om elke bewerking spontaan aan te passen maakt het bij uitstek geschikt om snel nieuwe opslagstructuren en applicaties af te dwingen.

Replicatie

PostgreSQL bevat ingebouwde synchrone replicatie, die ervoor zorgt dat de primaire node op elke schrijfactie wacht totdat een duplicaatnode de data naar zijn transactielogboek heeft geschreven. De duurzaamheid van de transactie kan worden opgegeven per database, sessie en gebruiker, ongeacht de synchroniciteit. Dit helpt de transactie te versnellen omdat die niet hoeft te bevestigen of de transactie een synchrone standby bereikt, vooral wanneer sommige stromen deze garanties niet nodig hebben.

Use cases

PostgreSQL is vrijwel overal aanwezig – het staat in de top vijf van meest gebruikte databases van dit moment, net achter MySQL. Grote bedrijven als Bloomberg, Goldman Sachs en Nokia hebben PostgreSQL in hun backend draaien.

PostgreSQL kan door verschillende bedrijfstakken worden gebruikt en is niet beperkt tot één sector. Hier zijn een paar voorbeelden waarin PostgreSQL vandaag de dag gebruikt kan worden.

  • GIS data van de overheid: PostgreSQL bevat een krachtige extensie genaamd “PostGIS.” Deze extensie biedt vele functies die helpen bij het verwerken van verschillende geometrische vormen zoals punten, lijnstrings en is geoptimaliseerd om de schijf- en geheugenruimte te beperken, waardoor de queryprestaties verbeteren. Elektriciteit, hulpdiensten en waterinfrastructuurdiensten zijn vooral afhankelijk van GIS om bemanningsleden te lokaliseren en naar nauwkeurige bestemmingen te leiden, vaak onder moeilijke omstandigheden.
  • Industrie: Veel verwerkende industrieën vereisen veel dataopslag op een hoog niveau van efficiëntie. PostgreSQL is een geschikte keuze voor het optimaliseren van de prestaties en de opslag in de toeleveringsketen. Het geniet de voorkeur omdat het ACID compliant is en geconfigureerd kan worden voor automatische failover, volledige redundantie en upgrades zonder bijna-nul-downtime. Omdat het nieuwe licentiebeleid van Oracle het voor kleinere bedrijven moeilijk heeft gemaakt om de kosten van het gebruik van Oracle te dragen, gaat de voorkeur uit naar PostgreSQL.
  • Webtechnologie: PostgreSQL is niet alleen een relationele database; het kan ook dienen als een NoSQL-achtige data opslag. Je kunt beide – de relationele en de documentgeoriënteerde wereld – in één product hebben. Het kan functioneren in vele moderne frameworks zoals Django (Python), Hibernate (Java), Ruby on Rails, PHP, enz. Door zijn replicatievermogen kunnen websites gemakkelijk worden opgeschaald om zoveel databaseservers op te nemen als je nodig hebt.
  • Wetenschappelijke data: Onderzoek en wetenschappelijke projecten kunnen terabytes aan data genereren, die zo praktisch mogelijk verwerkt moeten worden. PostgreSQL heeft uitstekende analytische mogelijkheden en biedt een krachtige SQL-engine, zodat het verwerken van grote hoeveelheden data geen problemen oplevert. PostgreSQL kan ook gemakkelijk worden uitgebreid. Je kunt Matlab en R integreren om verschillende wiskundige en aggregatiefuncties uit te voeren.

Wat is MySQL?

Het MySQL logo, met de tekst onder een gekanteld, gestileerd blauw dolfijnlichaam.
MySQL logo (Beeldbron: Mecdata)

MySQL is een eenvoudig relationeel databasesysteem. Het is zeer efficiënt en gebruiksvriendelijk, waardoor het een van de meest herkenbare technologieën is. Met SQL kun je snel verschillende Structured Query Language concepten (SQL) doorgronden om krachtige data opslagsystemen te bouwen. Het is gratis beschikbaar en is open source, hoewel het ook beschikbaar is onder verschillende zakelijke licenties.

In dit hoofdstuk worden de geschiedenis, de belangrijkste features en de use cases besproken. Laten we beginnen!

Geschiedenis

MySQL werd in 1995 opgericht door een Zweeds bedrijf, MySQLAB, door Michael “Monty” Widenius, de Zweden David Axmark en Allan Larsson. Sun Microsystems nam vervolgens MySQLAB over.

Het doel van MySQL was om zowel bedrijven als thuisgebruikers efficiënte en betrouwbare opties voor databeheer te bieden. Alpha en beta versies van het platform werden tegen 2000 uitgebracht, en de meeste waren compatibel met prominente platforms.

Rond dezelfde tijd werd het open-source. Hierdoor konden externe ontwikkelaars belangrijke wijzigingen in het systeem aanbrengen. Open source betekende echter een verlies aan inkomsten, maar dat werd uiteindelijk goedgemaakt toen MySQL aan populariteit begon te winnen.

Eind 2001 waren er maar liefst 2 miljoen actieve installaties. Om het in perspectief te plaatsen, dat is bijna de bevolking van Slovenië! Begin 2002 breidde het bedrijf zijn activiteiten uit en opende zijn hoofdkantoor in de VS. Toen had het platform al 3 miljoen gebruikers, met een omzet van 6,5 miljoen dollar, en sindsdien is de populariteit alleen maar toegenomen.

Belangrijkste features

MySQL server is multithreaded, multitasking, en is ontworpen om te werken op zwaar belaste productiesystemen. Het heeft transactionele en niet-transactionele engines en is een van de gemakkelijkst te installeren databasesystemen. MySQL is geliefd bij gebruikers omdat het gemakkelijk te gebruiken, betrouwbaar en snel is.

Nu je weet hoe MySQL is ontstaan, bespreken we enkele van zijn belangrijkste features.

Gebruiksgemak

MySQL werd populair vanwege zijn gebruiksgemak. Het garandeert verschillende mogelijkheden zoals triggers, opgeslagen procedures en dergelijke. Het bevat ook diverse hulpprogramma’s zoals een backupprogramma in geval van crashes, mysqladmin, een administratieve client, en een GUI (MySQL workbench) voor beheer. Voor een beginner biedt het een breed scala aan opties met een uitgebreide GUI, waardoor het een van de vijf meest gebruikte databases van dit moment is.

Grote flexibiliteit

MySQL biedt effectieve en veilige transacties voor projecten met een groot volume. Het is flexibel genoeg om in een dynamische omgeving te werken. Omdat het open-source is, is de code vrij beschikbaar en kan deze naar wens worden aangepast.

Betrouwbaarheid en veiligheid

Net als PostgreSQL houdt ook MySQL zich aan het ACID model. Je hoeft je dus geen zorgen te maken bij het uitvoeren van transacties: Het garandeert databescherming door point-in-time herstel en auto-commitmogelijkheden.

Als het systeem crasht, keert het terug naar het laatste controlepunt, zodat er geen data verloren gaat. Plus, omdat het open-source is, is er een grote community van ontwikkelaars die ervoor zorgen dat het systeem goed werkt, hun ondersteuning op forums uitbreiden, en diverse bugs oplossen.

Bovendien biedt het data integriteit door ondersteuning van foreign key constraints, waardoor inconsistenties tussen tabellen worden voorkomen. Omdat het een wachtwoordsysteem heeft, levert het een veilige interface en garandeert het dat het wachtwoord wordt geverifieerd op basis van de host voordat het toegang krijgt tot de database. Het wachtwoord wordt versleuteld terwijl het met de server verbonden is.

Hoge prestaties

MySQL is behoorlijk snel, betrouwbaar en goedkoop vanwege de uitzonderlijke architectuur van de opslag-engine. Dit betekent dat het hoge prestaties kan leveren zonder de vitale functies van de software te verliezen. Het kan snel laden vanwege zijn cachegeheugen.

In de loop der tijd heeft MySQL zijn prestaties verbeterd door te zorgen voor eigenschappen als B-tree schijftabellen met indexcompressie, geoptimaliseerde nested-loop joins en thread-gebaseerde geheugentoewijzing. Row-level locking en constant writing in de opslag-engine bieden extra prestatievoordelen voor multi-user concurrency.

Schaalbaar

MySQL is niet alleen gratis en open-source, maar kan ook in vele talen worden geschreven. Met de MySQL connector/NET kunnen ontwikkelaars hun data aan de database koppelen. De Connector/J interface levert MySQL ondersteuning voor Java client programma’s die JDBC koppelingen gebruiken. Een in C geschreven client bibliotheek is beschikbaar voor clients geschreven in C of C++ of elke andere taal die C bindingen biedt.

API’s voor C, C++, Eiffel, Java, Perl, PHP, Python, Ruby en Tcl zijn ook toegankelijk. Het is ook een van de meest geliefde crossplatform databasesystemen en kan gebruikt worden in Linux, Windows, Solarix, enz. Dit alles toont aan dat het in bijna alle software en besturingssystemen toepasbaar is, waardoor het zeer schaalbaar is.

Open-source licentie

MySQL is voor gebruikers beschikbaar onder een open-source licentie. Hierdoor kunnen gebruikers de code vrij gebruiken en aanpassen om hem compatibel te maken met andere domeinen.

Omdat het open-source is, heeft het veel ondersteuning van ontwikkelaars die ervoor zorgen dat bugs en beveiligingsproblemen snel worden opgelost. MySQL heeft gebruikersgroepen, forums en ondersteuning om een ingebouwd netwerk te bieden om problemen zo snel mogelijk op te lossen en tegelijkertijd voorlichting te geven over de database.

Use cases

MySQL blijkt nuttig te zijn voor webapplicaties, omdat de meeste servers op MySQL vertrouwen. Naast het gebruik als WordPress database gebruiken veel niet-WordPress bedrijven zoals Joomla, TYPO3 en Drupal ook MySQL als hun primaire database.

Hier zijn een paar toepassingen van MySQL die bewijzen dat het een betrouwbaar en efficiënt databasesysteem is:

  • OLTP transacties: Transacties vereisen snelheid en nauwkeurigheid. MYSQL kan efficiënt en gemakkelijk geschaald worden tot 1000-en queries per seconde. De transactie moet zorgen voor Atomicity, Consistency, Isolation, en Durability (ACID). MySQL houdt zich ook aan de ACID principes, waardoor het veilig is voor kritieke transacties. Als een systeem faalt tijdens een transactie, rolt het terug naar een controlepunt.
  • LAMP open-source stack: MySQL is essentieel voor talloze applicaties die werken op de LAMP open-source softwarestack (LAMP staat voor Linux, Apache, MySQL, en PHP/Python/Perl). LAMP is een universele oplossingsstack voor webdiensten en wordt algemeen beschouwd als het medium bij uitstek voor zowel dynamische websites als krachtige webapplicaties.
  • E-commerce toepassingen: MySQL is een van de meest voorkomende transactiemachines voor e-commerceplatforms. Het is nuttig voor het beheer van klantdata, transacties en productcatalogi. In e-commerce oplossingen wordt MySQL vaak tegelijk gebruikt met andere, niet-relationele databases, waaronder document- en key-value stores voor het synchroniseren van besteldata en het opslaan van niet-productdata.

PostgreSQL vs MySQL: onderlinge vergelijking

Als je twijfelt over de juiste database voor jouw bedrijf, zal dit gedeelte je helpen de beste weg te kiezen. Hoewel PostgreSQL en MySQL handig, praktisch en populair zijn, is het noodzakelijk om de database te kiezen die meer op jouw behoeften is afgestemd.

Dit hoofdstuk gaat dieper in op de verschillende verschillen tussen de twee databases.

Syntax

Qua syntaxis lijken Postgresql en MySQL op elkaar. Hier zie je hoe een select query er voor beide uitziet:

SELECT * FROM STUDENTS;

MySQL ondersteunt echter geen verschillende subqueries, zoals “LIMIT” of “ALL”. Het ondersteunt ook geen standaard SQL clausules als “INTERSECT” of “OUTER JOIN”.

MySQL is niet zo volledig SQL compliant als PostgreSQL, dat wel alle bovengenoemde subqueries ondersteunt. Als je deze subqueries vaak moet gebruiken voor je bedrijf, dan is PostgreSQL een betere keuze.

Ondersteunde talen

PostgreSQL en MySQL ondersteunen veel van dezelfde talen met een paar verschillen.

PostgreSQL daarentegen biedt ondersteuning voor een groter aantal programmeertalen:

  • C/C++
  • Delphi
  • Erlang
  • Go
  • Java
  • Javascript
  • JSON (native sinds versie 9.2)
  • Lisp
  • .NET
  • Python
  • R
  • Tcl
  • Andere programmeertalen

Hier is een lijst van talen die MySQL ondersteunt:

  • C/C++
  • Delphi
  • Erlang
  • Go
  • Java
  • Lisp
  • Node.js
  • Perl
  • PHP
  • R

Snelheid

Snelheid is een integrale factor bij de keuze van de beste database voor je bedrijfseisen. Een snelle database zorgt er niet alleen voor dat je website sneller draait, maar helpt ook de druk op je servers te verlichten door je te wijzen op ongebruikte data die je kunt verwijderen.

Zowel PostgreSQL als MySQL staan bekend als enkele van de snelste DBMS oplossingen die op de markt zijn. Er is echter geen duidelijke winnaar in deze categorie. Je kunt vrij gemakkelijk benchmarks vinden die één database aanbevelen op basis van de configuratie, de test en de hardware. De ene kan de overhand hebben op concurrency, terwijl de andere het beter doet op een single-core machine met weinig geheugen.

Uiteindelijk gaat het erom hoe je ze gebruikt. MySQL staat in het algemeen bekend als sneller met alleen-lezen opdrachten ten koste van de gelijktijdigheid/concurrency, terwijl PostgreSQL beter werkt met lees-schrijf operaties, grote datasets en ingewikkelde query’s.

Architectuur

MySQL is een puur relationele database, terwijl PostgreSQL een object-relationele database is. PostgreSQL biedt meer geavanceerde datatypen, en laat objecten eigenschappen erven. Aan de andere kant maakt dit het ook complexer om met PostgreSQL te werken. PostgreSQL heeft een enkele, ACID-compliant opslagmachine. MySQL biedt ondersteuning voor 15 verschillende opslagsystemen, afgezien van de standaard opslagsystemen, InnoDB. Het grote aanbod van opslagsystemen maakt het mogelijk om ze snel te gebruiken voor andere applicaties.

PostgreSQL genereert een nieuw systeemproces via geheugentoewijzing voor elke clientverbinding die tot stand wordt gebracht. Dit vraagt veel geheugen op systemen met veel clientverbindingen. MySQL daarentegen gebruikt een enkel proces en onderhoudt een enkele thread voor elke verbinding. Dit maakt MySQL de meest geschikte keuze voor applicaties van minder dan bedrijfsomvang.

Prestaties

PostgreSQL is gebouwd om aan de normen te voldoen, met veel mogelijkheden en uitbreidbaar te zijn. Voorheen waren de prestaties van PostgreSQL gelijkmatig – lezen was meestal langzamer dan MySQL, maar het kon grote hoeveelheden data efficiënter schrijven. Bovendien kon PostgreSQL beter omgaan met concurrency dan MySQL.

De kloof tussen hun mogelijkheden is de laatste jaren aanzienlijk kleiner geworden. MySQL is nog steeds behoorlijk snel in het lezen van data als je de oude MyISAM engine gebruikt. Het is ook geoptimaliseerd om PostgreSQL in te halen wat betreft het schrijven van zware data.

Bij het kiezen van een geschikte tool voor jouw doeleinden zouden prestaties geen bindende factor moeten zijn voor de meeste gewone applicaties. Zowel PostgreSQL als MySQL zijn – meestal – even performant.

Replicatie & clustering

Replicatie is een proces waarmee ontwikkelaars data van een database kunnen repliceren naar zijn dubbele databases. Dit zorgt ervoor dat elke gebruiker over dezelfde informatie beschikt. Replicatie biedt ook verschillende voordelen, zoals fouttolerantie, schaalbaarheid, automatische backups, en de mogelijkheid om lange queries uit te voeren zonder de primaire cluster te beïnvloeden.

Zowel MySQL als PostgreSQL ondersteunen replicatie. PostgreSQL biedt synchrone replicatie, wat betekent dat er twee databases tegelijk draaien, en de primaire database wordt gesynchroniseerd met de duplicaat database. Je kunt met PostgreSQL zelfs synchrone en cascade replicatie uitvoeren. In MySQL is de replicatie echter eenzijdig asynchroon. Dit betekent dat één databaseserver fungeert als de primaire, en de anderen zijn replica’s.

Zowel MySQL als PostgreSQL ondersteunen ook clustering. Clustering maakt gebruik van de gedeelde opslag om een gelijke set data te repliceren naar elk node binnen een omgeving. Hierdoor kunnen databases storingen verdragen, vanwege de redundantie die ontstaat door het dupliceren van data over verschillende nodes in een omgeving.

Data en tabelstructuur

JSON ondersteuning blijft een van de belangrijkste NoSQL features van MySQL. PostgreSQL daarentegen ondersteunt door de gebruiker gedefinieerde types, arrays, hstore en XML. Het belangrijkste voordeel van de mogelijkheid om met meer datatypen te werken is een grotere functionaliteit. Door bijvoorbeeld arrays als datatype te accepteren, kan PostgreSQL ook hostfuncties bieden die compatibel zijn met die arrays.

Maar ondanks de voordelen van het gebruik van alternatieve formats om data op te slaan, kan het complexer zijn om zulke dataformats uit te voeren, omdat ze niet een al lang bestaande benchmark volgen. Daarom houden componenten die samen met de database worden gebruikt zich niet altijd aan de PostgreSQL formats.

MySQL is slechts gedeeltelijk SQL-compliant, omdat het niet alle mogelijkheden zoals de no check constraint ondersteunt. Toch biedt het veel extensies.

PostgreSQL daarentegen is meer SQL-compliant dan MySQL, en ondersteunt de meeste primaire SQL features – 160 van de 179 verplichte features, om precies te zijn.

Uitbreidbaarheid

PostgreSQL wordt beschouwd als een zeer uitbreidbaar programma, omdat het diverse geavanceerde datatypen ondersteunt die je in MySQL niet kunt vinden. Dit zijn onder andere netwerkadrestypes, native UUID, geometrisch/GIS, JSON die geïndexeerd kan worden, en tijdzonebewuste timestamps. Als dit PostgreSQL niet tot een duidelijke winnaar voor deze ronde maakt, kun je ook nog eens je eigen operators, datatypes en indextypes toevoegen.

Dus als je applicatie zich bezighoudt met ongestructureerde data of een van de unieke datatypen die er zijn, is PostgreSQL wellicht de betere gegadigde. Als je echter alleen te maken hebt met elementaire numerieke en tekendata, dan zouden beide databases prima moeten werken.

Indexen

Om de databaseprestaties te verbeteren kun je indexen gebruiken om SQL queries te versnellen wanneer je grote datatabellen aanpakt. Zonder indexen zouden queries traag zijn en een grote belasting voor de DBMS.

Zowel PostgreSQL als MySQL bieden verschillende indexeringsmogelijkheden. PostgreSQL index types bevatten de volgende:

  • Gedeeltelijke indexen die alleen informatie uit een deel van de tabel ordenen
  • B-tree indexen en hash indexen
  • Expressie indexen die een index genereren op basis van expressfuncties in plaats van kolomwaarden

MySQL daarentegen biedt de volgende indexopties:

  • Indexen opgeslagen op R-trees, zoals indexen op ruimtelijke datatypen
  • Indexen opgeslagen op B-trees, zoals PRIMARY KEY, INDEX, FULLTEXT en UNIQUE
  • Omgekeerde lijsten en hash indexen bij gebruik van FULLTEXT indexen

Beveiliging

Zowel PostgreSQL als MySQL ondersteunen groeps- en gebruikersbeheer, en het toekennen van SQL rechten aan verschillende rollen. MySQL ondersteunt native window services, PAM en LDAP voor gebruikersauthenticatie, terwijl PostgreSQL IP-gebaseerde cliëntauthenticatie en filtering met behulp van Kerberos en PAM ondersteunt. De twee databases zijn dus nek aan nek wat betreft beveiliging.

Ondersteuning en community

Zowel PostgreSQL als MySQL hebben behulpzame communities om gebruikers te ondersteunen.

PostgreSQL heeft een grote community van vrijwilligers die gratis advies geven aan gebruikers via mailinglijsten en IRC. Bovendien kun je zelfs betaalde externe ondersteuning kopen. Je kunt zelfs problemen oplossen door de verschillende nuttige PostgreSQL boeken en handleidingen op de markt door te nemen.

Ook MySQL heeft een grote vrijwilligerscommunity die zijn tijd besteedt om je te helpen met gratis aanbevelingen en ondersteuning. Je kunt dit soort ondersteuning krijgen op de websites van Percona en MySQL. Bovenop de gratis ondersteuning van de community biedt Oracle ook 24/7 betaalde ondersteuning bij de commerciële versies van al zijn producten. Net als bij PostgreSQL kun je ook je problemen oplossen door je te verdiepen in de vele gratis en nuttige MySQL handleidingen, boeken en tutorials.

Kortom, ondersteuning voor PostgreSQL kan een beetje lastig zijn, omdat het meer technische expertise vereist om in te stellen en te gebruiken. Ook is het aantal PostgreSQL experts lager dan het aantal MySQL experts dat je tegenwoordig tot je beschikking hebt. Qua gebruikersondersteuning en beheersgemak is MySQL dus iets beter.

PostgreSQL vs MySQL vs alternatieven

Natuurlijk zijn MySQL en PostgreSQL niet de enige databasekeuzes waarmee je kunt werken of zelfs je enige twee open-source databasekeuzes. Genoeg over PostgreSQL en MySQL. Laten we enkele andere alternatieven introduceren die deze twee een loer kunnen draaien!

1. MongoDB

Het MongoDB logo, met de tekst naast een rechtopstaand, groen blad.
MongoDB logo (Beeldbron: Kubirds)

MongoDB is een gratis te gebruiken, source-available, documentgeoriënteerd, platformoverschrijdend databaseprogramma. Dit NoSQL databaseprogramma maakt gebruik van JSON-achtige documenten met optionele schema’s om effectief te functioneren. MongoDB zorgt ervoor dat je 3-5x sneller kunt verschepen en itereren met hun uniforme in-house query-interface die geschikt is voor elke use case en een flexibel documentdatamodel.

MongoDB dient als fundament voor elke bedrijfstak, ongeacht of je bedrijfskritische applicaties bouwt of de grenzen van de klantervaring oprekt. Hier zijn een paar belangrijke features van MongoDB die hebben geholpen het te vestigen als een levensvatbaar alternatief voor PostgreSQL en MySQL:

  • Sharding: Met MongoDB kunnen gebruikers hun applicaties horizontaal schalen via sharding, een methode om grote datasets te verdelen over meerdere dataverzamelingen. MongoDB gebruikers kunnen een shard key gebruiken (een primaire key met enkele of verschillende replicas) om de dataverdeling binnen een collectie vast te stellen en de data te verdelen in verschillende bereiken over shards.
  • Ad-hoc query’s: Ad-hoc query’s zijn stand-in commando’s die verschillende rendementen bieden voor het uitvoeren van query’s. MongoDB ondersteunt ook reguliere expressie (Regex), bereik query, en veld zoekopdrachten.
  • Bestandsopslag: Je kunt MongoDB inzetten als bestandssysteem, genaamd GridFS, dat wordt geleverd met features voor load balancing en datareplicatie voor meerdere computers om bestanden op te slaan. GridFS of grid bestandssysteem bestaat uit MongoDB drivers, die toegankelijk zijn met Lighttpd plugins en Nginx of het hulpprogramma mongofiles.

2. MariaDB

Het MariaDB logo, met de tekst onder een gestileerde bruine zeeleeuw omlijnd in blauw.
MariaDB logo (Beeldbron: Docker Hub)

MariaDB is een commercieel ondersteunde fork van het MySQL relationele databasebeheersysteem waarvan de speciaal gebouwde en pluggable opslagengines workloads ondersteunen die voorheen een grote verscheidenheid aan eigenaardige databases nodig hadden. Je kunt MariaDB in enkele minuten inzetten voor analytische, transactionele of hybride use cases.

Met een illustere klantenkring die onder meer bestaat uit Nasdaq, Deutsche Bank, DBS Bank, ServiceNow, Verizon en Walgreens, staat MariaDB bekend om het leveren van ongeëvenaarde operationele flexibiliteit zonder af te zien van belangrijke bedrijfsfeatures zoals volledige SQL en ACID compliance.

Hier zijn een paar belangrijke features van MariaDB die het tot een onmisbaar tool maken:

  • Virtuele kolommen: De ondersteuning voor virtuele kolommen is een van de kritische features van MariaDB. Virtuele kolommen kunnen worden gebruikt om berekeningen uit te voeren op databaseniveau. Wanneer meer dan één app een kolom wil gebruiken, hoeven gebruikers de berekeningen niet in elke app apart te schrijven. In plaats daarvan doet de database het namens hen.
  • Database views: Views zijn goede features om de prestaties van de database te optimaliseren. MariaDB slaat een andere weg in dan MySQL bij het betrekken van virtuele tabellen tijdens het opvragen van een view.
  • Thread pooling: Thread pooling helpt het werk van MariaDB te versnellen bij het omgaan met meerdere databaseverbindingen in je pijplijn. In plaats van voor elke verbinding een aparte thread te openen, zorgt thread pooling voor een pool van open threads.

PostgreSQL vs MySQL: Welke moet je kiezen?

Om de discussie samen te vatten: kiezen tussen de twee databases is niet altijd eenvoudig. Omdat er geen foute antwoorden zijn, komt het aan op de context.

Als je op zoek bent naar een database met veel mogelijkheden, die probleemloos volumineuze databases en complexe query’s aankan, terwijl je elke applicatie kunt laten groeien tot een bedrijfsomvang, kies dan voor PostgreSQL.

Aan de andere kant, als je als beginner op zoek bent naar een database die gemakkelijker te beheren en in te stellen is en toch betrouwbaar, snel en goed te begrijpen is, zou je MySQL kunnen proberen.

Als je gewoon niet kunt kiezen, is een optie om ze allebei uit te proberen voordat je een definitieve beslissing neemt. Je kunt DevKinsta, onze gratis lokale ontwikkeltool, downloaden en gebruiken om MySQL uit te proberen, en een andere lokale ontwikkeltool of dienst om PostgreSQL uit te proberen.

Samenvatting

In dit artikel hebben we de primaire verschillen tussen PostgreSQL vs MySQL besproken. Dit zijn onder andere cruciale factoren als snelheid, prestaties, syntaxis, uitbreidbaarheid, beveiliging, ondersteuning en community, indexering en architectuur, om je te helpen een weloverwogen beslissing te nemen over de tool dat past bij jouw unieke zakelijke eisen.

We concludeerden dat het een spannende strijd is tussen de twee, waarbij PostgreSQL en MySQL verschillende verdiensten en uitdagingen hebben. De “juiste” keuze hangt uiteindelijk af van jou en hoe je je bedrijf wilt runnen.

Tussen PostgreSQL en MySQL, welke ben jij van plan te gebruiken voor je volgende project, en waarom? We horen graag je gedachten! Deel ze in de commentsectie hieronder.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.